summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau2025-07-31 15:31:13 +0000
committerFelix Fietkau2025-07-31 15:34:24 +0000
commit8873e26c683d21b200562120516a87763d84ee50 (patch)
tree933b0138bb7b2d2b77a69df39b804650cf51446a
parent9ec40609625c809c1c768c103b8f52dd2c7149c5 (diff)
downloadopenwrt-8873e26c683d21b200562120516a87763d84ee50.tar.gz
ucode-mod-bpf: add support for passing classid for tc attached programs
Signed-off-by: Felix Fietkau <nbd@nbd.name>
-rw-r--r--package/utils/ucode-mod-bpf/src/bpf.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/package/utils/ucode-mod-bpf/src/bpf.c b/package/utils/ucode-mod-bpf/src/bpf.c
index deb2e6ac2a..33641ddfb2 100644
--- a/package/utils/ucode-mod-bpf/src/bpf.c
+++ b/package/utils/ucode-mod-bpf/src/bpf.c
@@ -620,7 +620,7 @@ uc_bpf_map_pin(uc_vm_t *vm, size_t nargs)
static uc_value_t *
uc_bpf_set_tc_hook(uc_value_t *ifname, uc_value_t *type, uc_value_t *prio,
- int fd)
+ uc_value_t *classid, int fd)
{
DECLARE_LIBBPF_OPTS(bpf_tc_hook, hook);
DECLARE_LIBBPF_OPTS(bpf_tc_opts, attach_tc,
@@ -657,6 +657,7 @@ uc_bpf_set_tc_hook(uc_value_t *ifname, uc_value_t *type, uc_value_t *prio,
goto out;
attach_tc.prog_fd = fd;
+ attach_tc.classid = ucv_int64_get(classid);
if (bpf_tc_attach(&hook, &attach_tc) < 0)
goto error;
@@ -676,11 +677,12 @@ uc_bpf_program_tc_attach(uc_vm_t *vm, size_t nargs)
uc_value_t *ifname = uc_fn_arg(0);
uc_value_t *type = uc_fn_arg(1);
uc_value_t *prio = uc_fn_arg(2);
+ uc_value_t *classid = uc_fn_arg(3);
if (!f)
err_return(EINVAL, NULL);
- return uc_bpf_set_tc_hook(ifname, type, prio, f->fd);
+ return uc_bpf_set_tc_hook(ifname, type, prio, classid, f->fd);
}
static uc_value_t *
@@ -690,7 +692,7 @@ uc_bpf_tc_detach(uc_vm_t *vm, size_t nargs)
uc_value_t *type = uc_fn_arg(1);
uc_value_t *prio = uc_fn_arg(2);
- return uc_bpf_set_tc_hook(ifname, type, prio, -1);
+ return uc_bpf_set_tc_hook(ifname, type, prio, NULL, -1);
}
static int