aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/include/net/esp.h
diff options
context:
space:
mode:
authorRaed Salem <raeds@mellanox.com>2020-02-19 14:49:57 +0200
committerSteffen Klassert <steffen.klassert@secunet.com>2020-02-19 13:52:32 +0100
commitdda520c4d4623701dd70cf7b40d29a4eed232d0f (patch)
tree491bdd080cb73722a8ebfe86282c494304969205 /include/net/esp.h
parentxfrm: Use kmem_cache_zalloc() instead of kmem_cache_alloc() with flag GFP_ZERO. (diff)
downloadwireguard-linux-dda520c4d4623701dd70cf7b40d29a4eed232d0f.tar.xz
wireguard-linux-dda520c4d4623701dd70cf7b40d29a4eed232d0f.zip
ESP: Export esp_output_fill_trailer function
The esp fill trailer method is identical for both IPv6 and IPv4. Share the implementation for esp6 and esp to avoid code duplication in addition it could be also used at various drivers code. Signed-off-by: Raed Salem <raeds@mellanox.com> Reviewed-by: Boris Pismenny <borisp@mellanox.com> Reviewed-by: Saeed Mahameed <saeedm@mellanox.com> Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Diffstat (limited to 'include/net/esp.h')
-rw-r--r--include/net/esp.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/include/net/esp.h b/include/net/esp.h
index 117652eb6ea3..9c5637d41d95 100644
--- a/include/net/esp.h
+++ b/include/net/esp.h
@@ -11,6 +11,22 @@ static inline struct ip_esp_hdr *ip_esp_hdr(const struct sk_buff *skb)
return (struct ip_esp_hdr *)skb_transport_header(skb);
}
+static inline void esp_output_fill_trailer(u8 *tail, int tfclen, int plen, __u8 proto)
+{
+ /* Fill padding... */
+ if (tfclen) {
+ memset(tail, 0, tfclen);
+ tail += tfclen;
+ }
+ do {
+ int i;
+ for (i = 0; i < plen - 2; i++)
+ tail[i] = i + 1;
+ } while (0);
+ tail[plen - 2] = plen - 2;
+ tail[plen - 1] = proto;
+}
+
struct esp_info {
struct ip_esp_hdr *esph;
__be64 seqno;