1*2874c5fdSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 2d23b8ad8SJiri Pirko /* 3d23b8ad8SJiri Pirko * Copyright (c) 2015 Jiri Pirko <jiri@resnulli.us> 4d23b8ad8SJiri Pirko */ 5d23b8ad8SJiri Pirko 6d23b8ad8SJiri Pirko #ifndef __NET_TC_BPF_H 7d23b8ad8SJiri Pirko #define __NET_TC_BPF_H 8d23b8ad8SJiri Pirko 9d23b8ad8SJiri Pirko #include <linux/filter.h> 10d23b8ad8SJiri Pirko #include <net/act_api.h> 11d23b8ad8SJiri Pirko 12d23b8ad8SJiri Pirko struct tcf_bpf { 13ec0595ccSWANG Cong struct tc_action common; 14cff82457SAlexei Starovoitov struct bpf_prog __rcu *filter; 15a8cb5f55SDaniel Borkmann union { 16a8cb5f55SDaniel Borkmann u32 bpf_fd; 17d23b8ad8SJiri Pirko u16 bpf_num_ops; 18d23b8ad8SJiri Pirko }; 19a8cb5f55SDaniel Borkmann struct sock_filter *bpf_ops; 20a8cb5f55SDaniel Borkmann const char *bpf_name; 21a8cb5f55SDaniel Borkmann }; 22a85a970aSWANG Cong #define to_bpf(a) ((struct tcf_bpf *)a) 23d23b8ad8SJiri Pirko 24d23b8ad8SJiri Pirko #endif /* __NET_TC_BPF_H */ 25