1 | /* SPDX-License-Identifier: GPL-2.0 */ |
---|---|
2 | #ifndef _NET_ESPINTCP_H |
3 | #define _NET_ESPINTCP_H |
4 | |
5 | #include <net/strparser.h> |
6 | #include <linux/skmsg.h> |
7 | |
8 | void __init espintcp_init(void); |
9 | |
10 | int espintcp_push_skb(struct sock *sk, struct sk_buff *skb); |
11 | int espintcp_queue_out(struct sock *sk, struct sk_buff *skb); |
12 | bool tcp_is_ulp_esp(struct sock *sk); |
13 | |
14 | struct espintcp_msg { |
15 | struct sk_buff *skb; |
16 | struct sk_msg skmsg; |
17 | int offset; |
18 | int len; |
19 | }; |
20 | |
21 | struct espintcp_ctx { |
22 | struct strparser strp; |
23 | struct sk_buff_head ike_queue; |
24 | struct sk_buff_head out_queue; |
25 | struct espintcp_msg partial; |
26 | void (*saved_data_ready)(struct sock *sk); |
27 | void (*saved_write_space)(struct sock *sk); |
28 | void (*saved_destruct)(struct sock *sk); |
29 | struct work_struct work; |
30 | bool tx_running; |
31 | }; |
32 | |
33 | static inline struct espintcp_ctx *espintcp_getctx(const struct sock *sk) |
34 | { |
35 | struct inet_connection_sock *icsk = inet_csk(sk); |
36 | |
37 | /* RCU is only needed for diag */ |
38 | return (__force void *)icsk->icsk_ulp_data; |
39 | } |
40 | #endif |
41 |