mirror of
https://github.com/LiBwrt-op/openwrt-6.x.git
synced 2025-12-16 08:44:50 +00:00
Release Notes: - 1.6.2: https://github.com/libbpf/libbpf/releases/tag/v1.6.2 - 1.6.1: https://github.com/libbpf/libbpf/releases/tag/v1.6.1 - 1.6.0: https://github.com/libbpf/libbpf/releases/tag/v1.6.0 - 1.5.1: https://github.com/libbpf/libbpf/releases/tag/v1.5.1 Link: https://github.com/openwrt/openwrt/pull/20882 Signed-off-by: Nick Hainke <vincent@systemli.org>
55 lines
1.9 KiB
Diff
55 lines
1.9 KiB
Diff
--- a/src/libbpf.h
|
|
+++ b/src/libbpf.h
|
|
@@ -1332,9 +1332,10 @@ struct bpf_tc_opts {
|
|
__u32 prog_id;
|
|
__u32 handle;
|
|
__u32 priority;
|
|
+ __u32 classid;
|
|
size_t :0;
|
|
};
|
|
-#define bpf_tc_opts__last_field priority
|
|
+#define bpf_tc_opts__last_field classid
|
|
|
|
LIBBPF_API int bpf_tc_hook_create(struct bpf_tc_hook *hook);
|
|
LIBBPF_API int bpf_tc_hook_destroy(struct bpf_tc_hook *hook);
|
|
--- a/src/netlink.c
|
|
+++ b/src/netlink.c
|
|
@@ -687,6 +687,8 @@ static int __get_tc_info(void *cookie, s
|
|
OPTS_SET(info->opts, prog_id, libbpf_nla_getattr_u32(tbb[TCA_BPF_ID]));
|
|
OPTS_SET(info->opts, handle, tc->tcm_handle);
|
|
OPTS_SET(info->opts, priority, TC_H_MAJ(tc->tcm_info) >> 16);
|
|
+ if (tbb[TCA_BPF_CLASSID])
|
|
+ OPTS_SET(info->opts, classid, libbpf_nla_getattr_u32(tbb[TCA_BPF_CLASSID]));
|
|
|
|
info->processed = true;
|
|
return unicast ? NL_NEXT : NL_DONE;
|
|
@@ -731,7 +733,7 @@ static int tc_add_fd_and_name(struct lib
|
|
|
|
int bpf_tc_attach(const struct bpf_tc_hook *hook, struct bpf_tc_opts *opts)
|
|
{
|
|
- __u32 protocol, bpf_flags, handle, priority, parent, prog_id, flags;
|
|
+ __u32 protocol, bpf_flags, handle, priority, parent, prog_id, flags, classid;
|
|
int ret, ifindex, attach_point, prog_fd;
|
|
struct bpf_cb_ctx info = {};
|
|
struct libbpf_nla_req req;
|
|
@@ -751,6 +753,7 @@ int bpf_tc_attach(const struct bpf_tc_ho
|
|
prog_fd = OPTS_GET(opts, prog_fd, 0);
|
|
prog_id = OPTS_GET(opts, prog_id, 0);
|
|
flags = OPTS_GET(opts, flags, 0);
|
|
+ classid = OPTS_GET(opts, classid, 0);
|
|
|
|
if (ifindex <= 0 || !prog_fd || prog_id)
|
|
return libbpf_err(-EINVAL);
|
|
@@ -790,6 +793,11 @@ int bpf_tc_attach(const struct bpf_tc_ho
|
|
ret = nlattr_add(&req, TCA_BPF_FLAGS, &bpf_flags, sizeof(bpf_flags));
|
|
if (ret < 0)
|
|
return libbpf_err(ret);
|
|
+ if (classid) {
|
|
+ ret = nlattr_add(&req, TCA_BPF_CLASSID, &classid, sizeof(classid));
|
|
+ if (ret < 0)
|
|
+ return libbpf_err(ret);
|
|
+ }
|
|
nlattr_end_nested(&req, nla);
|
|
|
|
info.opts = opts;
|