linux/include/net/espintcp.h
<<
>>
Prefs
   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
   8void __init espintcp_init(void);
   9
  10int espintcp_push_skb(struct sock *sk, struct sk_buff *skb);
  11int espintcp_queue_out(struct sock *sk, struct sk_buff *skb);
  12bool tcp_is_ulp_esp(struct sock *sk);
  13
  14struct espintcp_msg {
  15        struct sk_buff *skb;
  16        struct sk_msg skmsg;
  17        int offset;
  18        int len;
  19};
  20
  21struct 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
  33static 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