diff options
author | Masahide NAKAMURA <nakam@linux-ipv6.org> | 2006-08-23 21:11:50 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-09-22 18:06:41 -0400 |
commit | 1b5c229987dc4d0c92a38fac0cde2aeec08cd775 (patch) | |
tree | 5726243af6aa7194f1ed65e0340539e1ee5c6a42 /include/net | |
parent | 99505a843673faeae962a8cde128c7c034ba6b5e (diff) |
[XFRM] STATE: Support non-fragment outbound transformation headers.
For originated outbound IPv6 packets which will fragment, ip6_append_data()
should know length of extension headers before sending them and
the length is carried by dst_entry.
IPv6 IPsec headers fragment then transformation was
designed to place all headers after fragment header.
OTOH Mobile IPv6 extension headers do not fragment then
it is a good idea to make dst_entry have non-fragment length to tell it
to ip6_append_data().
Signed-off-by: Masahide NAKAMURA <nakam@linux-ipv6.org>
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/dst.h | 1 | ||||
-rw-r--r-- | include/net/xfrm.h | 2 |
2 files changed, 3 insertions, 0 deletions
diff --git a/include/net/dst.h b/include/net/dst.h index 36d54fc248b0..a8d825f90305 100644 --- a/include/net/dst.h +++ b/include/net/dst.h | |||
@@ -54,6 +54,7 @@ struct dst_entry | |||
54 | unsigned long expires; | 54 | unsigned long expires; |
55 | 55 | ||
56 | unsigned short header_len; /* more space at head required */ | 56 | unsigned short header_len; /* more space at head required */ |
57 | unsigned short nfheader_len; /* more non-fragment space at head required */ | ||
57 | unsigned short trailer_len; /* space to reserve at tail */ | 58 | unsigned short trailer_len; /* space to reserve at tail */ |
58 | 59 | ||
59 | u32 metrics[RTAX_MAX]; | 60 | u32 metrics[RTAX_MAX]; |
diff --git a/include/net/xfrm.h b/include/net/xfrm.h index aa3ac994477b..aa93cc1f6299 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h | |||
@@ -260,6 +260,8 @@ struct xfrm_type | |||
260 | char *description; | 260 | char *description; |
261 | struct module *owner; | 261 | struct module *owner; |
262 | __u8 proto; | 262 | __u8 proto; |
263 | __u8 flags; | ||
264 | #define XFRM_TYPE_NON_FRAGMENT 1 | ||
263 | 265 | ||
264 | int (*init_state)(struct xfrm_state *x); | 266 | int (*init_state)(struct xfrm_state *x); |
265 | void (*destructor)(struct xfrm_state *); | 267 | void (*destructor)(struct xfrm_state *); |