xref: /linux/drivers/net/ovpn/tcp.h (revision 2c7e4a2663a1ab5a740c59c31991579b6b865a26)
111851cbdSAntonio Quartulli /* SPDX-License-Identifier: GPL-2.0-only */
211851cbdSAntonio Quartulli /*  OpenVPN data channel offload
311851cbdSAntonio Quartulli  *
411851cbdSAntonio Quartulli  *  Copyright (C) 2019-2025 OpenVPN, Inc.
511851cbdSAntonio Quartulli  *
611851cbdSAntonio Quartulli  *  Author:	Antonio Quartulli <antonio@openvpn.net>
711851cbdSAntonio Quartulli  */
811851cbdSAntonio Quartulli 
911851cbdSAntonio Quartulli #ifndef _NET_OVPN_TCP_H_
1011851cbdSAntonio Quartulli #define _NET_OVPN_TCP_H_
1111851cbdSAntonio Quartulli 
1211851cbdSAntonio Quartulli #include <linux/net.h>
1311851cbdSAntonio Quartulli #include <linux/skbuff.h>
1411851cbdSAntonio Quartulli #include <linux/types.h>
1511851cbdSAntonio Quartulli 
1611851cbdSAntonio Quartulli #include "peer.h"
1711851cbdSAntonio Quartulli #include "skb.h"
1811851cbdSAntonio Quartulli #include "socket.h"
1911851cbdSAntonio Quartulli 
2011851cbdSAntonio Quartulli void __init ovpn_tcp_init(void);
2111851cbdSAntonio Quartulli 
2211851cbdSAntonio Quartulli int ovpn_tcp_socket_attach(struct ovpn_socket *ovpn_sock,
2311851cbdSAntonio Quartulli 			   struct ovpn_peer *peer);
2411851cbdSAntonio Quartulli void ovpn_tcp_socket_detach(struct ovpn_socket *ovpn_sock);
2511851cbdSAntonio Quartulli void ovpn_tcp_socket_wait_finish(struct ovpn_socket *sock);
2611851cbdSAntonio Quartulli 
2711851cbdSAntonio Quartulli /* Prepare skb and enqueue it for sending to peer.
2811851cbdSAntonio Quartulli  *
2911851cbdSAntonio Quartulli  * Preparation consist in prepending the skb payload with its size.
3011851cbdSAntonio Quartulli  * Required by the OpenVPN protocol in order to extract packets from
3111851cbdSAntonio Quartulli  * the TCP stream on the receiver side.
3211851cbdSAntonio Quartulli  */
33*ba499a07SAntonio Quartulli void ovpn_tcp_send_skb(struct ovpn_peer *peer, struct sock *sk,
34*ba499a07SAntonio Quartulli 		       struct sk_buff *skb);
3511851cbdSAntonio Quartulli void ovpn_tcp_tx_work(struct work_struct *work);
3611851cbdSAntonio Quartulli 
3711851cbdSAntonio Quartulli #endif /* _NET_OVPN_TCP_H_ */
38