1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- /* SPDX-License-Identifier: GPL-2.0 */
- #ifndef _BPF_NETNS_H
- #define _BPF_NETNS_H
- #include <linux/mutex.h>
- #include <net/netns/bpf.h>
- #include <uapi/linux/bpf.h>
- static inline enum netns_bpf_attach_type
- to_netns_bpf_attach_type(enum bpf_attach_type attach_type)
- {
- switch (attach_type) {
- case BPF_FLOW_DISSECTOR:
- return NETNS_BPF_FLOW_DISSECTOR;
- case BPF_SK_LOOKUP:
- return NETNS_BPF_SK_LOOKUP;
- default:
- return NETNS_BPF_INVALID;
- }
- }
- /* Protects updates to netns_bpf */
- extern struct mutex netns_bpf_mutex;
- union bpf_attr;
- struct bpf_prog;
- #ifdef CONFIG_NET
- int netns_bpf_prog_query(const union bpf_attr *attr,
- union bpf_attr __user *uattr);
- int netns_bpf_prog_attach(const union bpf_attr *attr,
- struct bpf_prog *prog);
- int netns_bpf_prog_detach(const union bpf_attr *attr, enum bpf_prog_type ptype);
- int netns_bpf_link_create(const union bpf_attr *attr,
- struct bpf_prog *prog);
- #else
- static inline int netns_bpf_prog_query(const union bpf_attr *attr,
- union bpf_attr __user *uattr)
- {
- return -EOPNOTSUPP;
- }
- static inline int netns_bpf_prog_attach(const union bpf_attr *attr,
- struct bpf_prog *prog)
- {
- return -EOPNOTSUPP;
- }
- static inline int netns_bpf_prog_detach(const union bpf_attr *attr,
- enum bpf_prog_type ptype)
- {
- return -EOPNOTSUPP;
- }
- static inline int netns_bpf_link_create(const union bpf_attr *attr,
- struct bpf_prog *prog)
- {
- return -EOPNOTSUPP;
- }
- #endif
- #endif /* _BPF_NETNS_H */
|