Blame view
net/ipv4/xfrm4_state.c
2.39 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 3 4 5 6 7 8 |
/* * xfrm4_state.c * * Changes: * YOSHIFUJI Hideaki @USAGI * Split up af-specific portion * */ |
dd87147ee [IPSEC]: Add XFRM... |
9 |
#include <net/ip.h> |
1da177e4c Linux-2.6.12-rc2 |
10 11 12 |
#include <net/xfrm.h> #include <linux/pfkeyv2.h> #include <linux/ipsec.h> |
862b82c6f [IPSEC]: Merge mo... |
13 |
#include <linux/netfilter_ipv4.h> |
bc3b2d7fb net: Add export.h... |
14 |
#include <linux/export.h> |
1da177e4c Linux-2.6.12-rc2 |
15 |
|
dd87147ee [IPSEC]: Add XFRM... |
16 17 18 19 20 21 |
static int xfrm4_init_flags(struct xfrm_state *x) { if (ipv4_config.no_pmtu_disc) x->props.flags |= XFRM_STATE_NOPMTUDISC; return 0; } |
1da177e4c Linux-2.6.12-rc2 |
22 |
static void |
73e5ebb20 xfrm: Mark flowi ... |
23 |
__xfrm4_init_tempsel(struct xfrm_selector *sel, const struct flowi *fl) |
8444cf712 xfrm: Allow diffe... |
24 |
{ |
7e1dc7b6f net: Use flowi4 a... |
25 26 27 28 29 |
const struct flowi4 *fl4 = &fl->u.ip4; sel->daddr.a4 = fl4->daddr; sel->saddr.a4 = fl4->saddr; sel->dport = xfrm_flowi_dport(fl, &fl4->uli); |
8444cf712 xfrm: Allow diffe... |
30 |
sel->dport_mask = htons(0xffff); |
7e1dc7b6f net: Use flowi4 a... |
31 |
sel->sport = xfrm_flowi_sport(fl, &fl4->uli); |
8444cf712 xfrm: Allow diffe... |
32 33 34 35 |
sel->sport_mask = htons(0xffff); sel->family = AF_INET; sel->prefixlen_d = 32; sel->prefixlen_s = 32; |
7e1dc7b6f net: Use flowi4 a... |
36 37 |
sel->proto = fl4->flowi4_proto; sel->ifindex = fl4->flowi4_oif; |
8444cf712 xfrm: Allow diffe... |
38 39 40 |
} static void |
19bd62441 xfrm: Const'ify t... |
41 42 |
xfrm4_init_temprop(struct xfrm_state *x, const struct xfrm_tmpl *tmpl, const xfrm_address_t *daddr, const xfrm_address_t *saddr) |
1da177e4c Linux-2.6.12-rc2 |
43 |
{ |
1da177e4c Linux-2.6.12-rc2 |
44 45 46 47 48 49 50 51 52 53 |
x->id = tmpl->id; if (x->id.daddr.a4 == 0) x->id.daddr.a4 = daddr->a4; x->props.saddr = tmpl->saddr; if (x->props.saddr.a4 == 0) x->props.saddr.a4 = saddr->a4; x->props.mode = tmpl->mode; x->props.reqid = tmpl->reqid; x->props.family = AF_INET; } |
36cf9acf9 [IPSEC]: Separate... |
54 55 |
int xfrm4_extract_header(struct sk_buff *skb) { |
b71d1d426 inet: constify ip... |
56 |
const struct iphdr *iph = ip_hdr(skb); |
36cf9acf9 [IPSEC]: Separate... |
57 |
|
732c8bd59 [IPSEC]: Fix BEET... |
58 |
XFRM_MODE_SKB_CB(skb)->ihl = sizeof(*iph); |
36cf9acf9 [IPSEC]: Separate... |
59 60 61 62 |
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; |
732c8bd59 [IPSEC]: Fix BEET... |
63 |
XFRM_MODE_SKB_CB(skb)->optlen = iph->ihl * 4 - sizeof(*iph); |
36cf9acf9 [IPSEC]: Separate... |
64 65 66 67 68 |
memset(XFRM_MODE_SKB_CB(skb)->flow_lbl, 0, sizeof(XFRM_MODE_SKB_CB(skb)->flow_lbl)); return 0; } |
1da177e4c Linux-2.6.12-rc2 |
69 70 |
static struct xfrm_state_afinfo xfrm4_state_afinfo = { .family = AF_INET, |
36cf9acf9 [IPSEC]: Separate... |
71 |
.proto = IPPROTO_IPIP, |
227620e29 [IPSEC]: Separate... |
72 |
.eth_proto = htons(ETH_P_IP), |
17c2a42a2 [IPSEC]: Store af... |
73 |
.owner = THIS_MODULE, |
dd87147ee [IPSEC]: Add XFRM... |
74 |
.init_flags = xfrm4_init_flags, |
1da177e4c Linux-2.6.12-rc2 |
75 |
.init_tempsel = __xfrm4_init_tempsel, |
8444cf712 xfrm: Allow diffe... |
76 |
.init_temprop = xfrm4_init_temprop, |
cdca72652 [IPSEC]: exportin... |
77 |
.output = xfrm4_output, |
43a4dea4c xfrm: Assign the ... |
78 |
.output_finish = xfrm4_output_finish, |
227620e29 [IPSEC]: Separate... |
79 |
.extract_input = xfrm4_extract_input, |
36cf9acf9 [IPSEC]: Separate... |
80 |
.extract_output = xfrm4_extract_output, |
716062fd4 [IPSEC]: Merge mo... |
81 |
.transport_finish = xfrm4_transport_finish, |
1da177e4c Linux-2.6.12-rc2 |
82 83 84 85 86 87 |
}; void __init xfrm4_state_init(void) { xfrm_state_register_afinfo(&xfrm4_state_afinfo); } |
0742fd53a [IPV4]: possible ... |
88 |
#if 0 |
1da177e4c Linux-2.6.12-rc2 |
89 90 91 92 |
void __exit xfrm4_state_fini(void) { xfrm_state_unregister_afinfo(&xfrm4_state_afinfo); } |
0742fd53a [IPV4]: possible ... |
93 |
#endif /* 0 */ |
1da177e4c Linux-2.6.12-rc2 |
94 |