From ef76bc23ef2acf20c8f7f841a542d8ab74c827c6 Mon Sep 17 00:00:00 2001 From: Herbert Xu Date: Fri, 11 Jan 2008 19:15:08 -0800 Subject: [IPV6]: Add ip6_local_out Most callers of the LOCAL_OUT chain will set the IP packet length before doing so. They also share the same output function dst_output. This patch creates a new function called ip6_local_out which does all of that and converts the appropriate users over to it. Apart from removing duplicate code, it will also help in merging the IPsec output path. Signed-off-by: Herbert Xu Signed-off-by: David S. Miller --- net/ipv6/xfrm6_output.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'net/ipv6/xfrm6_output.c') diff --git a/net/ipv6/xfrm6_output.c b/net/ipv6/xfrm6_output.c index c45050cfe72..0f0ff51f6db 100644 --- a/net/ipv6/xfrm6_output.c +++ b/net/ipv6/xfrm6_output.c @@ -75,16 +75,12 @@ EXPORT_SYMBOL(xfrm6_prepare_output); static inline int xfrm6_output_one(struct sk_buff *skb) { - struct ipv6hdr *iph; int err; err = xfrm_output(skb); if (err) goto error_nolock; - iph = ipv6_hdr(skb); - iph->payload_len = htons(skb->len - sizeof(*iph)); - IP6CB(skb)->flags |= IP6SKB_XFRM_TRANSFORMED; err = 0; @@ -102,8 +98,7 @@ static int xfrm6_output_finish2(struct sk_buff *skb) while (likely((err = xfrm6_output_one(skb)) == 0)) { nf_reset(skb); - err = nf_hook(PF_INET6, NF_IP6_LOCAL_OUT, skb, NULL, - skb->dst->dev, dst_output); + err = __ip6_local_out(skb); if (unlikely(err != 1)) break; -- cgit v1.2.3