memset(&load_attr,0,sizeof(structbpf_load_program_attr)); load_attr.prog_type=type; load_attr.expected_attach_type=0; load_attr.name=NULL;load_attr.insns=insns; load_attr.insns_cnt=insns_cnt;load_attr.license=l
只有 v2 支持 attach bpf 程序,例如 hookconnect、bind等系统调用;因此 socket-level service LB 之类的代码,只能 attach 到 cgroup v2。 BPF 进阶笔记(一):BPF 程序(BPF Prog)类型详解:使用场景、函数签名、执行位置及程序示例[6]在内核代码层面介绍了为什么 cgroup v2 支持 socket-level BPF。 另外,想深入了解...
do_load_bpf_file 508 static int do_load_bpf_file(const char *path, fixup_map_cb fixup_map) 509 { 510 int fd, i, ret, maps_shndx = -1, strtabidx = -1; 511 Elf *elf; 512 GElf_Ehdr ehdr; 513 GElf_Shdr shdr, shdr_prog; 514 Elf_Data *data, *data_prog, *data_maps ...
+ prog_fd = bpf_load_program_xattr(&prog_attr, NULL, 0); + if (prog_fd < 0) + return ret; + + link_fd = bpf_link_create(prog_fd, ifindex_lo, BPF_XDP, &opts); + if (link_fd >= 0) + ret = true; + + close(prog_fd); + close(link_fd); + + return ret; +} +...
@@ -634,35 +648,38 @@ int bpf_prog_attach_xattr(int prog_fd, int target_fd, int bpf_prog_detach(int target_fd, enum bpf_attach_type type) { const size_t attr_sz = offsetofend(union bpf_attr, replace_bpf_fd); union bpf_attr attr; int ret; memset(&attr, 0, sizeof(attr))...
xattr.expected_attach_type = BPF_CGROUP_INET4_CONNECT; break; case BPF_PROG_TYPE_CGROUP_SOCKOPT: xattr.expected_attach_type = BPF_CGROUP_GETSOCKOPT; break; case BPF_PROG_TYPE_SK_LOOKUP: xattr.expected_attach_type = BPF_SK_LOOKUP; break; @@ -104,7 +107,6 @@ probe_load(enum bpf_prog...
struct bpf_subprog_info subprog_info[BPF_MAX_SUBPROGS + 1]; struct { int *insn_state; int *insn_stack; int cur_stack; } cfg; u32 pass_cnt; /* number of times do_check() was called */ u32 subprog_cnt; /* number of instructions analyzed by the verifier ...
Search or jump to... Search code, repositories, users, issues, pull requests... Provide feedback We read every piece of feedback, and take your input very seriously. Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter yo...