hc
2024-02-20 e636c8d336489bf3eed5878299e6cc045bbad077
kernel/net/ipv4/xfrm4_state.c
....@@ -8,81 +8,12 @@
88 *
99 */
1010
11
-#include <net/ip.h>
1211 #include <net/xfrm.h>
13
-#include <linux/pfkeyv2.h>
14
-#include <linux/ipsec.h>
15
-#include <linux/netfilter_ipv4.h>
16
-#include <linux/export.h>
17
-
18
-static int xfrm4_init_flags(struct xfrm_state *x)
19
-{
20
- if (xs_net(x)->ipv4.sysctl_ip_no_pmtu_disc)
21
- x->props.flags |= XFRM_STATE_NOPMTUDISC;
22
- return 0;
23
-}
24
-
25
-static void
26
-__xfrm4_init_tempsel(struct xfrm_selector *sel, const struct flowi *fl)
27
-{
28
- const struct flowi4 *fl4 = &fl->u.ip4;
29
-
30
- sel->daddr.a4 = fl4->daddr;
31
- sel->saddr.a4 = fl4->saddr;
32
- sel->dport = xfrm_flowi_dport(fl, &fl4->uli);
33
- sel->dport_mask = htons(0xffff);
34
- sel->sport = xfrm_flowi_sport(fl, &fl4->uli);
35
- sel->sport_mask = htons(0xffff);
36
- sel->family = AF_INET;
37
- sel->prefixlen_d = 32;
38
- sel->prefixlen_s = 32;
39
- sel->proto = fl4->flowi4_proto;
40
- sel->ifindex = fl4->flowi4_oif;
41
-}
42
-
43
-static void
44
-xfrm4_init_temprop(struct xfrm_state *x, const struct xfrm_tmpl *tmpl,
45
- const xfrm_address_t *daddr, const xfrm_address_t *saddr)
46
-{
47
- x->id = tmpl->id;
48
- if (x->id.daddr.a4 == 0)
49
- x->id.daddr.a4 = daddr->a4;
50
- x->props.saddr = tmpl->saddr;
51
- if (x->props.saddr.a4 == 0)
52
- x->props.saddr.a4 = saddr->a4;
53
- x->props.mode = tmpl->mode;
54
- x->props.reqid = tmpl->reqid;
55
- x->props.family = AF_INET;
56
-}
57
-
58
-int xfrm4_extract_header(struct sk_buff *skb)
59
-{
60
- const struct iphdr *iph = ip_hdr(skb);
61
-
62
- XFRM_MODE_SKB_CB(skb)->ihl = sizeof(*iph);
63
- XFRM_MODE_SKB_CB(skb)->id = iph->id;
64
- XFRM_MODE_SKB_CB(skb)->frag_off = iph->frag_off;
65
- XFRM_MODE_SKB_CB(skb)->tos = iph->tos;
66
- XFRM_MODE_SKB_CB(skb)->ttl = iph->ttl;
67
- XFRM_MODE_SKB_CB(skb)->optlen = iph->ihl * 4 - sizeof(*iph);
68
- memset(XFRM_MODE_SKB_CB(skb)->flow_lbl, 0,
69
- sizeof(XFRM_MODE_SKB_CB(skb)->flow_lbl));
70
-
71
- return 0;
72
-}
7312
7413 static struct xfrm_state_afinfo xfrm4_state_afinfo = {
7514 .family = AF_INET,
7615 .proto = IPPROTO_IPIP,
77
- .eth_proto = htons(ETH_P_IP),
78
- .owner = THIS_MODULE,
79
- .init_flags = xfrm4_init_flags,
80
- .init_tempsel = __xfrm4_init_tempsel,
81
- .init_temprop = xfrm4_init_temprop,
8216 .output = xfrm4_output,
83
- .output_finish = xfrm4_output_finish,
84
- .extract_input = xfrm4_extract_input,
85
- .extract_output = xfrm4_extract_output,
8617 .transport_finish = xfrm4_transport_finish,
8718 .local_error = xfrm4_local_error,
8819 };