]> git.baikalelectronics.ru Git - kernel.git/commitdiff
xfrm: move xfrm4_extract_header to common helper
authorFlorian Westphal <fw@strlen.de>
Mon, 4 May 2020 08:06:05 +0000 (10:06 +0200)
committerSteffen Klassert <steffen.klassert@secunet.com>
Wed, 6 May 2020 07:40:08 +0000 (09:40 +0200)
The function only initializes the XFRM CB in the skb.

After previous patch xfrm4_extract_header is only called from
net/xfrm/xfrm_{input,output}.c.

Because of IPV6=m linker errors the ipv6 equivalent
(xfrm6_extract_header) was already placed in xfrm_inout.h because
we can't call functions residing in a module from the core.

So do the same for the ipv4 helper and place it next to the ipv6 one.

Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
include/net/xfrm.h
net/ipv4/xfrm4_state.c
net/xfrm/xfrm_inout.h

index a21c1dea534025bda54cf1bad4dcd51ce60e8324..8b956528b6e6868ab8d87f9b711be0de0c275c7f 100644 (file)
@@ -1562,7 +1562,6 @@ int pktgen_xfrm_outer_mode_output(struct xfrm_state *x, struct sk_buff *skb);
 #endif
 
 void xfrm_local_error(struct sk_buff *skb, int mtu);
-int xfrm4_extract_header(struct sk_buff *skb);
 int xfrm4_extract_input(struct xfrm_state *x, struct sk_buff *skb);
 int xfrm4_rcv_encap(struct sk_buff *skb, int nexthdr, __be32 spi,
                    int encap_type);
index 521fc1bc069c7080a291018512f58470f35c6b60..b23a1711297b98cee32641654d689910e41b85f3 100644 (file)
@@ -8,28 +8,7 @@
  *
  */
 
-#include <net/ip.h>
 #include <net/xfrm.h>
-#include <linux/pfkeyv2.h>
-#include <linux/ipsec.h>
-#include <linux/netfilter_ipv4.h>
-#include <linux/export.h>
-
-int xfrm4_extract_header(struct sk_buff *skb)
-{
-       const struct iphdr *iph = ip_hdr(skb);
-
-       XFRM_MODE_SKB_CB(skb)->ihl = sizeof(*iph);
-       XFRM_MODE_SKB_CB(skb)->id = iph->id;
-       XFRM_MODE_SKB_CB(skb)->frag_off = iph->frag_off;
-       XFRM_MODE_SKB_CB(skb)->tos = iph->tos;
-       XFRM_MODE_SKB_CB(skb)->ttl = iph->ttl;
-       XFRM_MODE_SKB_CB(skb)->optlen = iph->ihl * 4 - sizeof(*iph);
-       memset(XFRM_MODE_SKB_CB(skb)->flow_lbl, 0,
-              sizeof(XFRM_MODE_SKB_CB(skb)->flow_lbl));
-
-       return 0;
-}
 
 static struct xfrm_state_afinfo xfrm4_state_afinfo = {
        .family                 = AF_INET,
index e24abac92dc282205b985e7a88e464a5d1d1e333..efc5e6b2e87bea7a1776bb97d539a34a1286e47f 100644 (file)
@@ -6,6 +6,20 @@
 #ifndef XFRM_INOUT_H
 #define XFRM_INOUT_H 1
 
+static inline void xfrm4_extract_header(struct sk_buff *skb)
+{
+       const struct iphdr *iph = ip_hdr(skb);
+
+       XFRM_MODE_SKB_CB(skb)->ihl = sizeof(*iph);
+       XFRM_MODE_SKB_CB(skb)->id = iph->id;
+       XFRM_MODE_SKB_CB(skb)->frag_off = iph->frag_off;
+       XFRM_MODE_SKB_CB(skb)->tos = iph->tos;
+       XFRM_MODE_SKB_CB(skb)->ttl = iph->ttl;
+       XFRM_MODE_SKB_CB(skb)->optlen = iph->ihl * 4 - sizeof(*iph);
+       memset(XFRM_MODE_SKB_CB(skb)->flow_lbl, 0,
+              sizeof(XFRM_MODE_SKB_CB(skb)->flow_lbl));
+}
+
 static inline void xfrm6_extract_header(struct sk_buff *skb)
 {
 #if IS_ENABLED(CONFIG_IPV6)