diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2007-11-14 00:33:32 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 17:53:37 -0500 |
commit | b4ce92775c2e7ff9cf79cca4e0a19c8c5fd6287b (patch) | |
tree | c057ff62b03582493b74005f7959a0207e748468 /net | |
parent | 550ade8432a2a6fbfb48ba7018750b0e8c81e8d0 (diff) |
[IPV6]: Move nfheader_len into rt6_info
The dst member nfheader_len is only used by IPv6. It's also currently
creating a rather ugly alignment hole in struct dst. Therefore this patch
moves it from there into struct rt6_info.
It also reorders the fields in rt6_info to minimize holes.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv4/xfrm4_policy.c | 1 | ||||
-rw-r--r-- | net/ipv6/ip6_output.c | 5 | ||||
-rw-r--r-- | net/ipv6/xfrm6_policy.c | 3 |
3 files changed, 5 insertions, 4 deletions
diff --git a/net/ipv4/xfrm4_policy.c b/net/ipv4/xfrm4_policy.c index cc86fb110dd8..5ee3a2f9fb27 100644 --- a/net/ipv4/xfrm4_policy.c +++ b/net/ipv4/xfrm4_policy.c | |||
@@ -161,7 +161,6 @@ __xfrm4_bundle_create(struct xfrm_policy *policy, struct xfrm_state **xfrm, int | |||
161 | dst_prev->flags |= DST_HOST; | 161 | dst_prev->flags |= DST_HOST; |
162 | dst_prev->lastuse = jiffies; | 162 | dst_prev->lastuse = jiffies; |
163 | dst_prev->header_len = header_len; | 163 | dst_prev->header_len = header_len; |
164 | dst_prev->nfheader_len = 0; | ||
165 | dst_prev->trailer_len = trailer_len; | 164 | dst_prev->trailer_len = trailer_len; |
166 | memcpy(&dst_prev->metrics, &x->route->metrics, sizeof(dst_prev->metrics)); | 165 | memcpy(&dst_prev->metrics, &x->route->metrics, sizeof(dst_prev->metrics)); |
167 | 166 | ||
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index 150615758fdc..387030d2483c 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c | |||
@@ -1099,7 +1099,7 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to, | |||
1099 | sk->sk_sndmsg_page = NULL; | 1099 | sk->sk_sndmsg_page = NULL; |
1100 | sk->sk_sndmsg_off = 0; | 1100 | sk->sk_sndmsg_off = 0; |
1101 | exthdrlen = rt->u.dst.header_len + (opt ? opt->opt_flen : 0) - | 1101 | exthdrlen = rt->u.dst.header_len + (opt ? opt->opt_flen : 0) - |
1102 | rt->u.dst.nfheader_len; | 1102 | rt->nfheader_len; |
1103 | length += exthdrlen; | 1103 | length += exthdrlen; |
1104 | transhdrlen += exthdrlen; | 1104 | transhdrlen += exthdrlen; |
1105 | } else { | 1105 | } else { |
@@ -1114,7 +1114,8 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to, | |||
1114 | 1114 | ||
1115 | hh_len = LL_RESERVED_SPACE(rt->u.dst.dev); | 1115 | hh_len = LL_RESERVED_SPACE(rt->u.dst.dev); |
1116 | 1116 | ||
1117 | fragheaderlen = sizeof(struct ipv6hdr) + rt->u.dst.nfheader_len + (opt ? opt->opt_nflen : 0); | 1117 | fragheaderlen = sizeof(struct ipv6hdr) + rt->nfheader_len + |
1118 | (opt ? opt->opt_nflen : 0); | ||
1118 | maxfraglen = ((mtu - fragheaderlen) & ~7) + fragheaderlen - sizeof(struct frag_hdr); | 1119 | maxfraglen = ((mtu - fragheaderlen) & ~7) + fragheaderlen - sizeof(struct frag_hdr); |
1119 | 1120 | ||
1120 | if (mtu <= sizeof(struct ipv6hdr) + IPV6_MAXPLEN) { | 1121 | if (mtu <= sizeof(struct ipv6hdr) + IPV6_MAXPLEN) { |
diff --git a/net/ipv6/xfrm6_policy.c b/net/ipv6/xfrm6_policy.c index 3cad3e8dc4da..5b02f0efd38e 100644 --- a/net/ipv6/xfrm6_policy.c +++ b/net/ipv6/xfrm6_policy.c | |||
@@ -157,7 +157,8 @@ __xfrm6_bundle_create(struct xfrm_policy *policy, struct xfrm_state **xfrm, int | |||
157 | dst_prev = dst1; | 157 | dst_prev = dst1; |
158 | 158 | ||
159 | if (xfrm[i]->type->flags & XFRM_TYPE_NON_FRAGMENT) | 159 | if (xfrm[i]->type->flags & XFRM_TYPE_NON_FRAGMENT) |
160 | dst->nfheader_len += xfrm[i]->props.header_len; | 160 | ((struct rt6_info *)dst)->nfheader_len += |
161 | xfrm[i]->props.header_len; | ||
161 | header_len += xfrm[i]->props.header_len; | 162 | header_len += xfrm[i]->props.header_len; |
162 | trailer_len += xfrm[i]->props.trailer_len; | 163 | trailer_len += xfrm[i]->props.trailer_len; |
163 | 164 | ||