BPF_F_ALLOW_MULTI
pl = find_detach_entry(progs, prog, link, flags & BPF_F_ALLOW_MULTI);
if ((attr->attach_flags & BPF_F_ALLOW_MULTI) &&
link->link.attach_type, BPF_F_ALLOW_MULTI | attr->link_create.flags,
if (flags & BPF_F_ALLOW_MULTI)
if (cnt == 0 || (p->bpf.flags[atype] & BPF_F_ALLOW_MULTI))
if (cnt > 0 && !(p->bpf.flags[atype] & BPF_F_ALLOW_MULTI))
u32 saved_flags = (flags & (BPF_F_ALLOW_OVERRIDE | BPF_F_ALLOW_MULTI));
if (((flags & BPF_F_ALLOW_OVERRIDE) && (flags & BPF_F_ALLOW_MULTI)) ||
((flags & BPF_F_REPLACE) && !(flags & BPF_F_ALLOW_MULTI)))
flags & BPF_F_ALLOW_MULTI);
if (cnt == 0 || (p->bpf.flags[atype] & BPF_F_ALLOW_MULTI))
if (cnt > 0 && !(p->bpf.flags[atype] & BPF_F_ALLOW_MULTI))
BPF_F_ALLOW_MULTI | \
case BPF_F_ALLOW_MULTI:
attach_flags |= BPF_F_ALLOW_MULTI;
BPF_F_ALLOW_MULTI),
BPF_F_ALLOW_MULTI),
BPF_F_ALLOW_MULTI),
BPF_F_ALLOW_MULTI),
BPF_F_ALLOW_MULTI),
attach_opts.flags = BPF_F_ALLOW_MULTI | BPF_F_REPLACE;
BPF_CGROUP_INET_EGRESS, BPF_F_ALLOW_MULTI);
CHECK_FAIL(attach_flags != BPF_F_ALLOW_MULTI);
.flags = BPF_F_ALLOW_MULTI,
.flags = BPF_F_ALLOW_MULTI | BPF_F_PREORDER,
.flags = BPF_F_ALLOW_MULTI | BPF_F_AFTER,
.flags = BPF_F_ALLOW_MULTI | BPF_F_AFTER | BPF_F_PREORDER,
.flags = BPF_F_ALLOW_MULTI,
.flags = BPF_F_ALLOW_MULTI | BPF_F_BEFORE | BPF_F_AFTER,
.flags = BPF_F_ALLOW_MULTI | BPF_F_BEFORE | BPF_F_AFTER,
.flags = BPF_F_ALLOW_MULTI | BPF_F_BEFORE | BPF_F_ID,
.flags = BPF_F_ALLOW_MULTI | BPF_F_AFTER | BPF_F_ID,
.flags = BPF_F_ALLOW_MULTI | BPF_F_BEFORE | BPF_F_AFTER,
.flags = BPF_F_ALLOW_MULTI | BPF_F_LINK,
.flags = BPF_F_ALLOW_MULTI,
.flags = BPF_F_ALLOW_MULTI | BPF_F_BEFORE,
.flags = BPF_F_ALLOW_MULTI | BPF_F_AFTER,
.flags = BPF_F_ALLOW_MULTI,
.flags = BPF_F_ALLOW_MULTI | BPF_F_AFTER,
.flags = BPF_F_ALLOW_MULTI | BPF_F_REPLACE | BPF_F_AFTER,
.flags = BPF_F_ALLOW_MULTI | BPF_F_BEFORE,
.flags = BPF_F_ALLOW_MULTI | BPF_F_AFTER,
.flags = BPF_F_ALLOW_MULTI,
opts.flags = BPF_F_ALLOW_MULTI;
opts.flags = BPF_F_ALLOW_MULTI | BPF_F_BEFORE;
opts.flags = BPF_F_ALLOW_MULTI;
opts.flags = BPF_F_ALLOW_MULTI | BPF_F_PREORDER;
opts.flags = BPF_F_ALLOW_MULTI;
opts.flags = BPF_F_ALLOW_MULTI | BPF_F_PREORDER;
update_opts.flags = BPF_F_ALLOW_MULTI;
BPF_F_ALLOW_MULTI);
err = bpf_prog_attach(skipcap_prog_fd1, cgroup_fd, BPF_LSM_CGROUP, BPF_F_ALLOW_MULTI);
err = bpf_prog_attach(skipcap_prog_fd2, cgroup_fd, BPF_LSM_CGROUP, BPF_F_ALLOW_MULTI);
err = bpf_prog_attach(socket_prog_fd1, cgroup_fd, BPF_LSM_CGROUP, BPF_F_ALLOW_MULTI);
err = bpf_prog_attach(socket_prog_fd2, cgroup_fd, BPF_LSM_CGROUP, BPF_F_ALLOW_MULTI);