我试图了解bpf_prog_get_type()
的功能。我以为它的目标是检查作为第一个参数传递的fd
是否对应于将类型作为第二个参数传递给函数的程序。例如下面的代码
prog = bpf_prog_get_type(fd, BPF_PROG_TYPE_SOCKET_FILTER);
if (IS_ERR(prog))
return PTR_ERR(prog);
在我看来,编的类型需要为BPF_PROG_TYPE_SOCKET_FILTER
。但是内部bpf_prog_get_type()
会调用bpf_prog_get_type_dev()
,而后者只会返回。
static inline struct bpf_prog *bpf_prog_get_type_dev(u32 ufd,
enum bpf_prog_type type,
bool attach_drv)
{
return ERR_PTR(-EOPNOTSUPP);
}
问题: 我想念什么?如何执行类型检查?