--- a/src/libbpf.h
+++ b/src/libbpf.h
-@@ -1291,9 +1291,10 @@ struct bpf_tc_opts {
+@@ -1332,9 +1332,10 @@ struct bpf_tc_opts {
__u32 prog_id;
__u32 handle;
__u32 priority;
LIBBPF_API int bpf_tc_hook_destroy(struct bpf_tc_hook *hook);
--- a/src/netlink.c
+++ b/src/netlink.c
-@@ -673,6 +673,8 @@ static int __get_tc_info(void *cookie, s
+@@ -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);
info->processed = true;
return unicast ? NL_NEXT : NL_DONE;
-@@ -717,7 +719,7 @@ static int tc_add_fd_and_name(struct lib
+@@ -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)
{
int ret, ifindex, attach_point, prog_fd;
struct bpf_cb_ctx info = {};
struct libbpf_nla_req req;
-@@ -737,6 +739,7 @@ int bpf_tc_attach(const struct bpf_tc_ho
+@@ -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);
if (ifindex <= 0 || !prog_fd || prog_id)
return libbpf_err(-EINVAL);
-@@ -776,6 +779,11 @@ int bpf_tc_attach(const struct bpf_tc_ho
+@@ -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);