162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * BPF programs attached to network namespace
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#ifndef __NETNS_BPF_H__
762306a36Sopenharmony_ci#define __NETNS_BPF_H__
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#include <linux/list.h>
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_cistruct bpf_prog;
1262306a36Sopenharmony_cistruct bpf_prog_array;
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_cienum netns_bpf_attach_type {
1562306a36Sopenharmony_ci	NETNS_BPF_INVALID = -1,
1662306a36Sopenharmony_ci	NETNS_BPF_FLOW_DISSECTOR = 0,
1762306a36Sopenharmony_ci	NETNS_BPF_SK_LOOKUP,
1862306a36Sopenharmony_ci	MAX_NETNS_BPF_ATTACH_TYPE
1962306a36Sopenharmony_ci};
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_cistruct netns_bpf {
2262306a36Sopenharmony_ci	/* Array of programs to run compiled from progs or links */
2362306a36Sopenharmony_ci	struct bpf_prog_array __rcu *run_array[MAX_NETNS_BPF_ATTACH_TYPE];
2462306a36Sopenharmony_ci	struct bpf_prog *progs[MAX_NETNS_BPF_ATTACH_TYPE];
2562306a36Sopenharmony_ci	struct list_head links[MAX_NETNS_BPF_ATTACH_TYPE];
2662306a36Sopenharmony_ci};
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci#endif /* __NETNS_BPF_H__ */
29