ip_finish_output2);
}
-int ip_mc_output(struct sk_buff **pskb)
+int ip_mc_output(struct sk_buff *skb)
{
- struct sk_buff *skb = *pskb;
struct sock *sk = skb->sk;
struct rtable *rt = (struct rtable*)skb->dst;
struct net_device *dev = rt->u.dst.dev;
newskb->dev, ip_dev_loopback_xmit);
}
- if (skb->len > dst_pmtu(&rt->u.dst) || skb_shinfo(skb)->frag_list)
+ if (skb->len > dst_pmtu(&rt->u.dst))
return ip_fragment(skb, ip_finish_output);
else
return ip_finish_output(skb);
}
-int ip_output(struct sk_buff **pskb)
+int ip_output(struct sk_buff *skb)
{
- struct sk_buff *skb = *pskb;
-
IP_INC_STATS(IPSTATS_MIB_OUTREQUESTS);
- if ((skb->len > dst_pmtu(skb->dst) || skb_shinfo(skb)->frag_list) &&
- !skb_shinfo(skb)->tso_size)
+ if (skb->len > dst_pmtu(skb->dst) && !skb_shinfo(skb)->tso_size)
return ip_fragment(skb, ip_finish_output);
else
return ip_finish_output(skb);
to->priority = from->priority;
to->protocol = from->protocol;
to->security = from->security;
+ dst_release(to->dst);
to->dst = dst_clone(from->dst);
to->dev = from->dev;