xref: /linux/include/net/psp/functions.h (revision 659a2899a57da59f433182eba571881884d6323e)
100c94ca2SJakub Kicinski /* SPDX-License-Identifier: GPL-2.0-only */
200c94ca2SJakub Kicinski 
300c94ca2SJakub Kicinski #ifndef __NET_PSP_HELPERS_H
400c94ca2SJakub Kicinski #define __NET_PSP_HELPERS_H
500c94ca2SJakub Kicinski 
6*659a2899SJakub Kicinski #include <linux/skbuff.h>
7*659a2899SJakub Kicinski #include <net/sock.h>
800c94ca2SJakub Kicinski #include <net/psp/types.h>
900c94ca2SJakub Kicinski 
10ed8a507bSJakub Kicinski struct inet_timewait_sock;
11ed8a507bSJakub Kicinski 
1200c94ca2SJakub Kicinski /* Driver-facing API */
1300c94ca2SJakub Kicinski struct psp_dev *
1400c94ca2SJakub Kicinski psp_dev_create(struct net_device *netdev, struct psp_dev_ops *psd_ops,
1500c94ca2SJakub Kicinski 	       struct psp_dev_caps *psd_caps, void *priv_ptr);
1600c94ca2SJakub Kicinski void psp_dev_unregister(struct psp_dev *psd);
1700c94ca2SJakub Kicinski 
18ed8a507bSJakub Kicinski /* Kernel-facing API */
19*659a2899SJakub Kicinski #if IS_ENABLED(CONFIG_INET_PSP)
20ed8a507bSJakub Kicinski static inline void psp_sk_assoc_free(struct sock *sk) { }
21*659a2899SJakub Kicinski static inline void
22*659a2899SJakub Kicinski psp_twsk_init(struct inet_timewait_sock *tw, const struct sock *sk) { }
23ed8a507bSJakub Kicinski static inline void psp_twsk_assoc_free(struct inet_timewait_sock *tw) { }
24*659a2899SJakub Kicinski static inline void
25*659a2899SJakub Kicinski psp_reply_set_decrypted(struct sk_buff *skb) { }
26*659a2899SJakub Kicinski 
27*659a2899SJakub Kicinski static inline void
28*659a2899SJakub Kicinski psp_enqueue_set_decrypted(struct sock *sk, struct sk_buff *skb)
29*659a2899SJakub Kicinski {
30*659a2899SJakub Kicinski }
31*659a2899SJakub Kicinski 
32*659a2899SJakub Kicinski static inline unsigned long
33*659a2899SJakub Kicinski __psp_skb_coalesce_diff(const struct sk_buff *one, const struct sk_buff *two,
34*659a2899SJakub Kicinski 			unsigned long diffs)
35*659a2899SJakub Kicinski {
36*659a2899SJakub Kicinski 	return diffs;
37*659a2899SJakub Kicinski }
38*659a2899SJakub Kicinski 
39*659a2899SJakub Kicinski static inline enum skb_drop_reason
40*659a2899SJakub Kicinski psp_sk_rx_policy_check(struct sock *sk, struct sk_buff *skb)
41*659a2899SJakub Kicinski {
42*659a2899SJakub Kicinski 	return 0;
43*659a2899SJakub Kicinski }
44*659a2899SJakub Kicinski 
45*659a2899SJakub Kicinski static inline enum skb_drop_reason
46*659a2899SJakub Kicinski psp_twsk_rx_policy_check(struct inet_timewait_sock *tw, struct sk_buff *skb)
47*659a2899SJakub Kicinski {
48*659a2899SJakub Kicinski 	return 0;
49*659a2899SJakub Kicinski }
50*659a2899SJakub Kicinski 
51*659a2899SJakub Kicinski static inline struct psp_assoc *psp_skb_get_assoc_rcu(struct sk_buff *skb)
52*659a2899SJakub Kicinski {
53*659a2899SJakub Kicinski 	return NULL;
54*659a2899SJakub Kicinski }
55*659a2899SJakub Kicinski #else
56*659a2899SJakub Kicinski static inline void psp_sk_assoc_free(struct sock *sk) { }
57*659a2899SJakub Kicinski static inline void
58*659a2899SJakub Kicinski psp_twsk_init(struct inet_timewait_sock *tw, const struct sock *sk) { }
59*659a2899SJakub Kicinski static inline void psp_twsk_assoc_free(struct inet_timewait_sock *tw) { }
60*659a2899SJakub Kicinski static inline void
61*659a2899SJakub Kicinski psp_reply_set_decrypted(struct sk_buff *skb) { }
62*659a2899SJakub Kicinski 
63*659a2899SJakub Kicinski static inline void
64*659a2899SJakub Kicinski psp_enqueue_set_decrypted(struct sock *sk, struct sk_buff *skb) { }
65*659a2899SJakub Kicinski 
66*659a2899SJakub Kicinski static inline unsigned long
67*659a2899SJakub Kicinski __psp_skb_coalesce_diff(const struct sk_buff *one, const struct sk_buff *two,
68*659a2899SJakub Kicinski 			unsigned long diffs)
69*659a2899SJakub Kicinski {
70*659a2899SJakub Kicinski 	return diffs;
71*659a2899SJakub Kicinski }
72*659a2899SJakub Kicinski 
73*659a2899SJakub Kicinski static inline enum skb_drop_reason
74*659a2899SJakub Kicinski psp_sk_rx_policy_check(struct sock *sk, struct sk_buff *skb)
75*659a2899SJakub Kicinski {
76*659a2899SJakub Kicinski 	return 0;
77*659a2899SJakub Kicinski }
78*659a2899SJakub Kicinski 
79*659a2899SJakub Kicinski static inline enum skb_drop_reason
80*659a2899SJakub Kicinski psp_twsk_rx_policy_check(struct inet_timewait_sock *tw, struct sk_buff *skb)
81*659a2899SJakub Kicinski {
82*659a2899SJakub Kicinski 	return 0;
83*659a2899SJakub Kicinski }
84*659a2899SJakub Kicinski 
85*659a2899SJakub Kicinski static inline struct psp_assoc *psp_skb_get_assoc_rcu(struct sk_buff *skb)
86*659a2899SJakub Kicinski {
87*659a2899SJakub Kicinski 	return NULL;
88*659a2899SJakub Kicinski }
89*659a2899SJakub Kicinski #endif
90*659a2899SJakub Kicinski 
91*659a2899SJakub Kicinski static inline unsigned long
92*659a2899SJakub Kicinski psp_skb_coalesce_diff(const struct sk_buff *one, const struct sk_buff *two)
93*659a2899SJakub Kicinski {
94*659a2899SJakub Kicinski 	return __psp_skb_coalesce_diff(one, two, 0);
95*659a2899SJakub Kicinski }
96ed8a507bSJakub Kicinski 
9700c94ca2SJakub Kicinski #endif /* __NET_PSP_HELPERS_H */
98