/* Fixes: Many : Split from ip.c , see ip_input.c for history. Dave Gregorich : NULL ip_rt_put fix for multicast routing. Jos Vos : Add call_out_firewall before sending, use output device for accounting. Jos Vos : Call forward firewall after routing (always use output device). Mike McLagan : Routing by source  */
static int ip_forward_finish(struct sk_buff *skb)
/* Fixes: Many : Split from ip.c , see ip_input.c for history. Dave Gregorich : NULL ip_rt_put fix for multicast routing. Jos Vos : Add call_out_firewall before sending, use output device for accounting. Jos Vos : Call forward firewall after routing (always use output device). Mike McLagan : Routing by source  */
static int ip_forward_finish(struct sk_buff *skb)
{
	struct ip_options * opt	= &(IPCB(skb)->opt);
	IP_INC_STATS_BH(dev_net(skb_dst(skb)->dev), IPSTATS_MIB_OUTFORWDATAGRAMS);
	if (unlikely(opt->optlen))
		ip_forward_options(skb);
	return dst_output(skb);
}