vserver 2.0 rc7
[linux-2.6.git] / net / ipv4 / ip_gre.c
index 1404a96..8848355 100644 (file)
@@ -511,7 +511,7 @@ out:
 
        /* change mtu on this route */
        if (type == ICMP_DEST_UNREACH && code == ICMP_FRAG_NEEDED) {
-               if (rel_info > dst_pmtu(skb2->dst)) {
+               if (rel_info > dst_mtu(skb2->dst)) {
                        kfree_skb(skb2);
                        return;
                }
@@ -618,10 +618,8 @@ static int ipgre_rcv(struct sk_buff *skb)
 
                skb->mac.raw = skb->nh.raw;
                skb->nh.raw = __pskb_pull(skb, offset);
+               skb_postpull_rcsum(skb, skb->mac.raw, offset);
                memset(&(IPCB(skb)->opt), 0, sizeof(struct ip_options));
-               if (skb->ip_summed == CHECKSUM_HW)
-                       skb->csum = csum_sub(skb->csum,
-                                            csum_partial(skb->mac.raw, skb->nh.raw-skb->mac.raw, 0));
                skb->pkt_type = PACKET_HOST;
 #ifdef CONFIG_NET_IPGRE_BROADCAST
                if (MULTICAST(iph->daddr)) {
@@ -766,9 +764,9 @@ static int ipgre_tunnel_xmit(struct sk_buff *skb, struct net_device *dev)
 
        df = tiph->frag_off;
        if (df)
-               mtu = dst_pmtu(&rt->u.dst) - tunnel->hlen;
+               mtu = dst_mtu(&rt->u.dst) - tunnel->hlen;
        else
-               mtu = skb->dst ? dst_pmtu(skb->dst) : dev->mtu;
+               mtu = skb->dst ? dst_mtu(skb->dst) : dev->mtu;
 
        if (skb->dst)
                skb->dst->ops->update_pmtu(skb->dst, mtu);
@@ -787,7 +785,7 @@ static int ipgre_tunnel_xmit(struct sk_buff *skb, struct net_device *dev)
        else if (skb->protocol == htons(ETH_P_IPV6)) {
                struct rt6_info *rt6 = (struct rt6_info*)skb->dst;
 
-               if (rt6 && mtu < dst_pmtu(skb->dst) && mtu >= IPV6_MIN_MTU) {
+               if (rt6 && mtu < dst_mtu(skb->dst) && mtu >= IPV6_MIN_MTU) {
                        if ((tunnel->parms.iph.daddr && !MULTICAST(tunnel->parms.iph.daddr)) ||
                            rt6->rt6i_dst.plen == 128) {
                                rt6->rt6i_flags |= RTF_MODIFIED;