mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	This adds bpf_program__attach_netkit() API to libbpf. Overall it is very
similar to tcx. The API looks as following:
  LIBBPF_API struct bpf_link *
  bpf_program__attach_netkit(const struct bpf_program *prog, int ifindex,
                             const struct bpf_netkit_opts *opts);
The struct bpf_netkit_opts is done in similar way as struct bpf_tcx_opts
for supporting bpf_mprog control parameters. The attach location for the
primary and peer device is derived from the program section "netkit/primary"
and "netkit/peer", respectively.
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Martin KaFai Lau <martin.lau@kernel.org>
Link: https://lore.kernel.org/r/20231024214904.29825-4-daniel@iogearbox.net
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
		
	
			
		
			
				
	
	
		
			411 lines
		
	
	
	
		
			8.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			411 lines
		
	
	
	
		
			8.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
LIBBPF_0.0.1 {
 | 
						|
	global:
 | 
						|
		bpf_btf_get_fd_by_id;
 | 
						|
		bpf_map__btf_key_type_id;
 | 
						|
		bpf_map__btf_value_type_id;
 | 
						|
		bpf_map__fd;
 | 
						|
		bpf_map__name;
 | 
						|
		bpf_map__pin;
 | 
						|
		bpf_map__reuse_fd;
 | 
						|
		bpf_map__set_ifindex;
 | 
						|
		bpf_map__set_inner_map_fd;
 | 
						|
		bpf_map__unpin;
 | 
						|
		bpf_map_delete_elem;
 | 
						|
		bpf_map_get_fd_by_id;
 | 
						|
		bpf_map_get_next_id;
 | 
						|
		bpf_map_get_next_key;
 | 
						|
		bpf_map_lookup_and_delete_elem;
 | 
						|
		bpf_map_lookup_elem;
 | 
						|
		bpf_map_update_elem;
 | 
						|
		bpf_obj_get;
 | 
						|
		bpf_obj_get_info_by_fd;
 | 
						|
		bpf_obj_pin;
 | 
						|
		bpf_object__btf_fd;
 | 
						|
		bpf_object__close;
 | 
						|
		bpf_object__find_map_by_name;
 | 
						|
		bpf_object__kversion;
 | 
						|
		bpf_object__load;
 | 
						|
		bpf_object__name;
 | 
						|
		bpf_object__open;
 | 
						|
		bpf_object__pin;
 | 
						|
		bpf_object__pin_maps;
 | 
						|
		bpf_object__pin_programs;
 | 
						|
		bpf_object__unpin_maps;
 | 
						|
		bpf_object__unpin_programs;
 | 
						|
		bpf_prog_attach;
 | 
						|
		bpf_prog_detach;
 | 
						|
		bpf_prog_detach2;
 | 
						|
		bpf_prog_get_fd_by_id;
 | 
						|
		bpf_prog_get_next_id;
 | 
						|
		bpf_prog_query;
 | 
						|
		bpf_program__fd;
 | 
						|
		bpf_program__pin;
 | 
						|
		bpf_program__set_expected_attach_type;
 | 
						|
		bpf_program__set_ifindex;
 | 
						|
		bpf_program__set_type;
 | 
						|
		bpf_program__unload;
 | 
						|
		bpf_program__unpin;
 | 
						|
		bpf_prog_linfo__free;
 | 
						|
		bpf_prog_linfo__new;
 | 
						|
		bpf_prog_linfo__lfind_addr_func;
 | 
						|
		bpf_prog_linfo__lfind;
 | 
						|
		bpf_raw_tracepoint_open;
 | 
						|
		bpf_task_fd_query;
 | 
						|
		btf__fd;
 | 
						|
		btf__find_by_name;
 | 
						|
		btf__free;
 | 
						|
		btf__name_by_offset;
 | 
						|
		btf__new;
 | 
						|
		btf__resolve_size;
 | 
						|
		btf__resolve_type;
 | 
						|
		btf__type_by_id;
 | 
						|
		libbpf_attach_type_by_name;
 | 
						|
		libbpf_get_error;
 | 
						|
		libbpf_prog_type_by_name;
 | 
						|
		libbpf_set_print;
 | 
						|
		libbpf_strerror;
 | 
						|
	local:
 | 
						|
		*;
 | 
						|
};
 | 
						|
 | 
						|
LIBBPF_0.0.2 {
 | 
						|
	global:
 | 
						|
		bpf_map_lookup_elem_flags;
 | 
						|
		bpf_object__btf;
 | 
						|
		bpf_object__find_map_fd_by_name;
 | 
						|
		btf__get_raw_data;
 | 
						|
		btf_ext__free;
 | 
						|
		btf_ext__get_raw_data;
 | 
						|
		btf_ext__new;
 | 
						|
} LIBBPF_0.0.1;
 | 
						|
 | 
						|
LIBBPF_0.0.3 {
 | 
						|
	global:
 | 
						|
		bpf_map__is_internal;
 | 
						|
		bpf_map_freeze;
 | 
						|
} LIBBPF_0.0.2;
 | 
						|
 | 
						|
LIBBPF_0.0.4 {
 | 
						|
	global:
 | 
						|
		bpf_link__destroy;
 | 
						|
		bpf_program__attach_kprobe;
 | 
						|
		bpf_program__attach_perf_event;
 | 
						|
		bpf_program__attach_raw_tracepoint;
 | 
						|
		bpf_program__attach_tracepoint;
 | 
						|
		bpf_program__attach_uprobe;
 | 
						|
		btf_dump__dump_type;
 | 
						|
		btf_dump__free;
 | 
						|
		btf__parse_elf;
 | 
						|
		libbpf_num_possible_cpus;
 | 
						|
		perf_buffer__free;
 | 
						|
		perf_buffer__poll;
 | 
						|
} LIBBPF_0.0.3;
 | 
						|
 | 
						|
LIBBPF_0.0.5 {
 | 
						|
	global:
 | 
						|
		bpf_btf_get_next_id;
 | 
						|
} LIBBPF_0.0.4;
 | 
						|
 | 
						|
LIBBPF_0.0.6 {
 | 
						|
	global:
 | 
						|
		bpf_map__get_pin_path;
 | 
						|
		bpf_map__is_pinned;
 | 
						|
		bpf_map__set_pin_path;
 | 
						|
		bpf_object__open_file;
 | 
						|
		bpf_object__open_mem;
 | 
						|
		bpf_program__attach_trace;
 | 
						|
		bpf_program__get_expected_attach_type;
 | 
						|
		bpf_program__get_type;
 | 
						|
		btf__find_by_name_kind;
 | 
						|
		libbpf_find_vmlinux_btf_id;
 | 
						|
} LIBBPF_0.0.5;
 | 
						|
 | 
						|
LIBBPF_0.0.7 {
 | 
						|
	global:
 | 
						|
		btf_dump__emit_type_decl;
 | 
						|
		bpf_link__disconnect;
 | 
						|
		bpf_map__attach_struct_ops;
 | 
						|
		bpf_map_delete_batch;
 | 
						|
		bpf_map_lookup_and_delete_batch;
 | 
						|
		bpf_map_lookup_batch;
 | 
						|
		bpf_map_update_batch;
 | 
						|
		bpf_object__find_program_by_name;
 | 
						|
		bpf_object__attach_skeleton;
 | 
						|
		bpf_object__destroy_skeleton;
 | 
						|
		bpf_object__detach_skeleton;
 | 
						|
		bpf_object__load_skeleton;
 | 
						|
		bpf_object__open_skeleton;
 | 
						|
		bpf_program__attach;
 | 
						|
		bpf_program__name;
 | 
						|
		btf__align_of;
 | 
						|
		libbpf_find_kernel_btf;
 | 
						|
} LIBBPF_0.0.6;
 | 
						|
 | 
						|
LIBBPF_0.0.8 {
 | 
						|
	global:
 | 
						|
		bpf_link__fd;
 | 
						|
		bpf_link__open;
 | 
						|
		bpf_link__pin;
 | 
						|
		bpf_link__pin_path;
 | 
						|
		bpf_link__unpin;
 | 
						|
		bpf_link__update_program;
 | 
						|
		bpf_link_create;
 | 
						|
		bpf_link_update;
 | 
						|
		bpf_map__set_initial_value;
 | 
						|
		bpf_prog_attach_opts;
 | 
						|
		bpf_program__attach_cgroup;
 | 
						|
		bpf_program__attach_lsm;
 | 
						|
		bpf_program__set_attach_target;
 | 
						|
} LIBBPF_0.0.7;
 | 
						|
 | 
						|
LIBBPF_0.0.9 {
 | 
						|
	global:
 | 
						|
		bpf_enable_stats;
 | 
						|
		bpf_iter_create;
 | 
						|
		bpf_link_get_fd_by_id;
 | 
						|
		bpf_link_get_next_id;
 | 
						|
		bpf_program__attach_iter;
 | 
						|
		bpf_program__attach_netns;
 | 
						|
		perf_buffer__consume;
 | 
						|
		ring_buffer__add;
 | 
						|
		ring_buffer__consume;
 | 
						|
		ring_buffer__free;
 | 
						|
		ring_buffer__new;
 | 
						|
		ring_buffer__poll;
 | 
						|
} LIBBPF_0.0.8;
 | 
						|
 | 
						|
LIBBPF_0.1.0 {
 | 
						|
	global:
 | 
						|
		bpf_link__detach;
 | 
						|
		bpf_link_detach;
 | 
						|
		bpf_map__ifindex;
 | 
						|
		bpf_map__key_size;
 | 
						|
		bpf_map__map_flags;
 | 
						|
		bpf_map__max_entries;
 | 
						|
		bpf_map__numa_node;
 | 
						|
		bpf_map__set_key_size;
 | 
						|
		bpf_map__set_map_flags;
 | 
						|
		bpf_map__set_max_entries;
 | 
						|
		bpf_map__set_numa_node;
 | 
						|
		bpf_map__set_type;
 | 
						|
		bpf_map__set_value_size;
 | 
						|
		bpf_map__type;
 | 
						|
		bpf_map__value_size;
 | 
						|
		bpf_program__attach_xdp;
 | 
						|
		bpf_program__autoload;
 | 
						|
		bpf_program__set_autoload;
 | 
						|
		btf__parse;
 | 
						|
		btf__parse_raw;
 | 
						|
		btf__pointer_size;
 | 
						|
		btf__set_fd;
 | 
						|
		btf__set_pointer_size;
 | 
						|
} LIBBPF_0.0.9;
 | 
						|
 | 
						|
LIBBPF_0.2.0 {
 | 
						|
	global:
 | 
						|
		bpf_prog_bind_map;
 | 
						|
		bpf_prog_test_run_opts;
 | 
						|
		bpf_program__attach_freplace;
 | 
						|
		bpf_program__section_name;
 | 
						|
		btf__add_array;
 | 
						|
		btf__add_const;
 | 
						|
		btf__add_enum;
 | 
						|
		btf__add_enum_value;
 | 
						|
		btf__add_datasec;
 | 
						|
		btf__add_datasec_var_info;
 | 
						|
		btf__add_field;
 | 
						|
		btf__add_func;
 | 
						|
		btf__add_func_param;
 | 
						|
		btf__add_func_proto;
 | 
						|
		btf__add_fwd;
 | 
						|
		btf__add_int;
 | 
						|
		btf__add_ptr;
 | 
						|
		btf__add_restrict;
 | 
						|
		btf__add_str;
 | 
						|
		btf__add_struct;
 | 
						|
		btf__add_typedef;
 | 
						|
		btf__add_union;
 | 
						|
		btf__add_var;
 | 
						|
		btf__add_volatile;
 | 
						|
		btf__endianness;
 | 
						|
		btf__find_str;
 | 
						|
		btf__new_empty;
 | 
						|
		btf__set_endianness;
 | 
						|
		btf__str_by_offset;
 | 
						|
		perf_buffer__buffer_cnt;
 | 
						|
		perf_buffer__buffer_fd;
 | 
						|
		perf_buffer__epoll_fd;
 | 
						|
		perf_buffer__consume_buffer;
 | 
						|
} LIBBPF_0.1.0;
 | 
						|
 | 
						|
LIBBPF_0.3.0 {
 | 
						|
	global:
 | 
						|
		btf__base_btf;
 | 
						|
		btf__parse_elf_split;
 | 
						|
		btf__parse_raw_split;
 | 
						|
		btf__parse_split;
 | 
						|
		btf__new_empty_split;
 | 
						|
		btf__new_split;
 | 
						|
		ring_buffer__epoll_fd;
 | 
						|
} LIBBPF_0.2.0;
 | 
						|
 | 
						|
LIBBPF_0.4.0 {
 | 
						|
	global:
 | 
						|
		btf__add_float;
 | 
						|
		btf__add_type;
 | 
						|
		bpf_linker__add_file;
 | 
						|
		bpf_linker__finalize;
 | 
						|
		bpf_linker__free;
 | 
						|
		bpf_linker__new;
 | 
						|
		bpf_map__inner_map;
 | 
						|
		bpf_object__set_kversion;
 | 
						|
		bpf_tc_attach;
 | 
						|
		bpf_tc_detach;
 | 
						|
		bpf_tc_hook_create;
 | 
						|
		bpf_tc_hook_destroy;
 | 
						|
		bpf_tc_query;
 | 
						|
} LIBBPF_0.3.0;
 | 
						|
 | 
						|
LIBBPF_0.5.0 {
 | 
						|
	global:
 | 
						|
		bpf_map__initial_value;
 | 
						|
		bpf_map__pin_path;
 | 
						|
		bpf_map_lookup_and_delete_elem_flags;
 | 
						|
		bpf_program__attach_kprobe_opts;
 | 
						|
		bpf_program__attach_perf_event_opts;
 | 
						|
		bpf_program__attach_tracepoint_opts;
 | 
						|
		bpf_program__attach_uprobe_opts;
 | 
						|
		bpf_object__gen_loader;
 | 
						|
		btf__load_from_kernel_by_id;
 | 
						|
		btf__load_from_kernel_by_id_split;
 | 
						|
		btf__load_into_kernel;
 | 
						|
		btf__load_module_btf;
 | 
						|
		btf__load_vmlinux_btf;
 | 
						|
		btf_dump__dump_type_data;
 | 
						|
		libbpf_set_strict_mode;
 | 
						|
} LIBBPF_0.4.0;
 | 
						|
 | 
						|
LIBBPF_0.6.0 {
 | 
						|
	global:
 | 
						|
		bpf_map__map_extra;
 | 
						|
		bpf_map__set_map_extra;
 | 
						|
		bpf_map_create;
 | 
						|
		bpf_object__next_map;
 | 
						|
		bpf_object__next_program;
 | 
						|
		bpf_object__prev_map;
 | 
						|
		bpf_object__prev_program;
 | 
						|
		bpf_prog_load;
 | 
						|
		bpf_program__flags;
 | 
						|
		bpf_program__insn_cnt;
 | 
						|
		bpf_program__insns;
 | 
						|
		bpf_program__set_flags;
 | 
						|
		btf__add_btf;
 | 
						|
		btf__add_decl_tag;
 | 
						|
		btf__add_type_tag;
 | 
						|
		btf__dedup;
 | 
						|
		btf__raw_data;
 | 
						|
		btf__type_cnt;
 | 
						|
		btf_dump__new;
 | 
						|
		libbpf_major_version;
 | 
						|
		libbpf_minor_version;
 | 
						|
		libbpf_version_string;
 | 
						|
		perf_buffer__new;
 | 
						|
		perf_buffer__new_raw;
 | 
						|
} LIBBPF_0.5.0;
 | 
						|
 | 
						|
LIBBPF_0.7.0 {
 | 
						|
	global:
 | 
						|
		bpf_btf_load;
 | 
						|
		bpf_program__expected_attach_type;
 | 
						|
		bpf_program__log_buf;
 | 
						|
		bpf_program__log_level;
 | 
						|
		bpf_program__set_log_buf;
 | 
						|
		bpf_program__set_log_level;
 | 
						|
		bpf_program__type;
 | 
						|
		bpf_xdp_attach;
 | 
						|
		bpf_xdp_detach;
 | 
						|
		bpf_xdp_query;
 | 
						|
		bpf_xdp_query_id;
 | 
						|
		btf_ext__raw_data;
 | 
						|
		libbpf_probe_bpf_helper;
 | 
						|
		libbpf_probe_bpf_map_type;
 | 
						|
		libbpf_probe_bpf_prog_type;
 | 
						|
		libbpf_set_memlock_rlim;
 | 
						|
} LIBBPF_0.6.0;
 | 
						|
 | 
						|
LIBBPF_0.8.0 {
 | 
						|
	global:
 | 
						|
		bpf_map__autocreate;
 | 
						|
		bpf_map__get_next_key;
 | 
						|
		bpf_map__delete_elem;
 | 
						|
		bpf_map__lookup_and_delete_elem;
 | 
						|
		bpf_map__lookup_elem;
 | 
						|
		bpf_map__set_autocreate;
 | 
						|
		bpf_map__update_elem;
 | 
						|
		bpf_map_delete_elem_flags;
 | 
						|
		bpf_object__destroy_subskeleton;
 | 
						|
		bpf_object__open_subskeleton;
 | 
						|
		bpf_program__attach_kprobe_multi_opts;
 | 
						|
		bpf_program__attach_trace_opts;
 | 
						|
		bpf_program__attach_usdt;
 | 
						|
		bpf_program__set_insns;
 | 
						|
		libbpf_register_prog_handler;
 | 
						|
		libbpf_unregister_prog_handler;
 | 
						|
} LIBBPF_0.7.0;
 | 
						|
 | 
						|
LIBBPF_1.0.0 {
 | 
						|
	global:
 | 
						|
		bpf_obj_get_opts;
 | 
						|
		bpf_prog_query_opts;
 | 
						|
		bpf_program__attach_ksyscall;
 | 
						|
		bpf_program__autoattach;
 | 
						|
		bpf_program__set_autoattach;
 | 
						|
		btf__add_enum64;
 | 
						|
		btf__add_enum64_value;
 | 
						|
		libbpf_bpf_attach_type_str;
 | 
						|
		libbpf_bpf_link_type_str;
 | 
						|
		libbpf_bpf_map_type_str;
 | 
						|
		libbpf_bpf_prog_type_str;
 | 
						|
		perf_buffer__buffer;
 | 
						|
} LIBBPF_0.8.0;
 | 
						|
 | 
						|
LIBBPF_1.1.0 {
 | 
						|
	global:
 | 
						|
		bpf_btf_get_fd_by_id_opts;
 | 
						|
		bpf_link_get_fd_by_id_opts;
 | 
						|
		bpf_map_get_fd_by_id_opts;
 | 
						|
		bpf_prog_get_fd_by_id_opts;
 | 
						|
		user_ring_buffer__discard;
 | 
						|
		user_ring_buffer__free;
 | 
						|
		user_ring_buffer__new;
 | 
						|
		user_ring_buffer__reserve;
 | 
						|
		user_ring_buffer__reserve_blocking;
 | 
						|
		user_ring_buffer__submit;
 | 
						|
} LIBBPF_1.0.0;
 | 
						|
 | 
						|
LIBBPF_1.2.0 {
 | 
						|
	global:
 | 
						|
		bpf_btf_get_info_by_fd;
 | 
						|
		bpf_link__update_map;
 | 
						|
		bpf_link_get_info_by_fd;
 | 
						|
		bpf_map_get_info_by_fd;
 | 
						|
		bpf_prog_get_info_by_fd;
 | 
						|
} LIBBPF_1.1.0;
 | 
						|
 | 
						|
LIBBPF_1.3.0 {
 | 
						|
	global:
 | 
						|
		bpf_obj_pin_opts;
 | 
						|
		bpf_object__unpin;
 | 
						|
		bpf_prog_detach_opts;
 | 
						|
		bpf_program__attach_netfilter;
 | 
						|
		bpf_program__attach_netkit;
 | 
						|
		bpf_program__attach_tcx;
 | 
						|
		bpf_program__attach_uprobe_multi;
 | 
						|
		ring__avail_data_size;
 | 
						|
		ring__consume;
 | 
						|
		ring__consumer_pos;
 | 
						|
		ring__map_fd;
 | 
						|
		ring__producer_pos;
 | 
						|
		ring__size;
 | 
						|
		ring_buffer__ring;
 | 
						|
} LIBBPF_1.2.0;
 |