xref: /openbmc/linux/net/tls/tls_strp.c (revision d4e5db64)
1c618db2aSJakub Kicinski // SPDX-License-Identifier: GPL-2.0-only
2c618db2aSJakub Kicinski 
3c618db2aSJakub Kicinski #include <linux/skbuff.h>
4c618db2aSJakub Kicinski 
5c618db2aSJakub Kicinski #include "tls.h"
6c618db2aSJakub Kicinski 
7*d4e5db64SJakub Kicinski struct sk_buff *tls_strp_msg_detach(struct tls_sw_context_rx *ctx)
8*d4e5db64SJakub Kicinski {
9*d4e5db64SJakub Kicinski 	struct sk_buff *skb;
10*d4e5db64SJakub Kicinski 
11*d4e5db64SJakub Kicinski 	skb = ctx->recv_pkt;
12*d4e5db64SJakub Kicinski 	ctx->recv_pkt = NULL;
13*d4e5db64SJakub Kicinski 	return skb;
14*d4e5db64SJakub Kicinski }
15*d4e5db64SJakub Kicinski 
16c618db2aSJakub Kicinski int tls_strp_msg_hold(struct sock *sk, struct sk_buff *skb,
17c618db2aSJakub Kicinski 		      struct sk_buff_head *dst)
18c618db2aSJakub Kicinski {
19c618db2aSJakub Kicinski 	struct sk_buff *clone;
20c618db2aSJakub Kicinski 
21c618db2aSJakub Kicinski 	clone = skb_clone(skb, sk->sk_allocation);
22c618db2aSJakub Kicinski 	if (!clone)
23c618db2aSJakub Kicinski 		return -ENOMEM;
24c618db2aSJakub Kicinski 	__skb_queue_tail(dst, clone);
25c618db2aSJakub Kicinski 	return 0;
26c618db2aSJakub Kicinski }
27