linux/net/xfrm/xfrm_inout.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#include <linux/ipv6.h>
   3#include <net/dsfield.h>
   4#include <net/xfrm.h>
   5
   6#ifndef XFRM_INOUT_H
   7#define XFRM_INOUT_H 1
   8
   9static inline void xfrm6_beet_make_header(struct sk_buff *skb)
  10{
  11        struct ipv6hdr *iph = ipv6_hdr(skb);
  12
  13        iph->version = 6;
  14
  15        memcpy(iph->flow_lbl, XFRM_MODE_SKB_CB(skb)->flow_lbl,
  16               sizeof(iph->flow_lbl));
  17        iph->nexthdr = XFRM_MODE_SKB_CB(skb)->protocol;
  18
  19        ipv6_change_dsfield(iph, 0, XFRM_MODE_SKB_CB(skb)->tos);
  20        iph->hop_limit = XFRM_MODE_SKB_CB(skb)->ttl;
  21}
  22
  23static inline void xfrm4_beet_make_header(struct sk_buff *skb)
  24{
  25        struct iphdr *iph = ip_hdr(skb);
  26
  27        iph->ihl = 5;
  28        iph->version = 4;
  29
  30        iph->protocol = XFRM_MODE_SKB_CB(skb)->protocol;
  31        iph->tos = XFRM_MODE_SKB_CB(skb)->tos;
  32
  33        iph->id = XFRM_MODE_SKB_CB(skb)->id;
  34        iph->frag_off = XFRM_MODE_SKB_CB(skb)->frag_off;
  35        iph->ttl = XFRM_MODE_SKB_CB(skb)->ttl;
  36}
  37
  38#endif
  39