Linux Audio

Check our new training course

Loading...
v4.17
 1/* SPDX-License-Identifier: GPL-2.0 */
 2#ifndef _SOCK_REUSEPORT_H
 3#define _SOCK_REUSEPORT_H
 4
 5#include <linux/filter.h>
 6#include <linux/skbuff.h>
 7#include <linux/types.h>
 8#include <net/sock.h>
 9
10struct sock_reuseport {
11	struct rcu_head		rcu;
12
13	u16			max_socks;	/* length of socks */
14	u16			num_socks;	/* elements in socks */
15	struct bpf_prog __rcu	*prog;		/* optional BPF sock selector */
16	struct sock		*socks[0];	/* array of sock pointers */
17};
18
19extern int reuseport_alloc(struct sock *sk);
20extern int reuseport_add_sock(struct sock *sk, struct sock *sk2);
21extern void reuseport_detach_sock(struct sock *sk);
22extern struct sock *reuseport_select_sock(struct sock *sk,
23					  u32 hash,
24					  struct sk_buff *skb,
25					  int hdr_len);
26extern struct bpf_prog *reuseport_attach_prog(struct sock *sk,
27					      struct bpf_prog *prog);
28
29#endif  /* _SOCK_REUSEPORT_H */
v4.6
 
 1#ifndef _SOCK_REUSEPORT_H
 2#define _SOCK_REUSEPORT_H
 3
 4#include <linux/filter.h>
 5#include <linux/skbuff.h>
 6#include <linux/types.h>
 7#include <net/sock.h>
 8
 9struct sock_reuseport {
10	struct rcu_head		rcu;
11
12	u16			max_socks;	/* length of socks */
13	u16			num_socks;	/* elements in socks */
14	struct bpf_prog __rcu	*prog;		/* optional BPF sock selector */
15	struct sock		*socks[0];	/* array of sock pointers */
16};
17
18extern int reuseport_alloc(struct sock *sk);
19extern int reuseport_add_sock(struct sock *sk, struct sock *sk2);
20extern void reuseport_detach_sock(struct sock *sk);
21extern struct sock *reuseport_select_sock(struct sock *sk,
22					  u32 hash,
23					  struct sk_buff *skb,
24					  int hdr_len);
25extern struct bpf_prog *reuseport_attach_prog(struct sock *sk,
26					      struct bpf_prog *prog);
27
28#endif  /* _SOCK_REUSEPORT_H */