|
@@ -2155,6 +2155,13 @@ static void vxlan_xmit_one(struct sk_buff *skb, struct net_device *dev,
|
|
}
|
|
}
|
|
|
|
|
|
ndst = &rt->dst;
|
|
ndst = &rt->dst;
|
|
|
|
+ if (skb_dst(skb)) {
|
|
|
|
+ int mtu = dst_mtu(ndst) - VXLAN_HEADROOM;
|
|
|
|
+
|
|
|
|
+ skb_dst(skb)->ops->update_pmtu(skb_dst(skb), NULL,
|
|
|
|
+ skb, mtu);
|
|
|
|
+ }
|
|
|
|
+
|
|
tos = ip_tunnel_ecn_encap(tos, old_iph, skb);
|
|
tos = ip_tunnel_ecn_encap(tos, old_iph, skb);
|
|
ttl = ttl ? : ip4_dst_hoplimit(&rt->dst);
|
|
ttl = ttl ? : ip4_dst_hoplimit(&rt->dst);
|
|
err = vxlan_build_skb(skb, ndst, sizeof(struct iphdr),
|
|
err = vxlan_build_skb(skb, ndst, sizeof(struct iphdr),
|
|
@@ -2190,6 +2197,13 @@ static void vxlan_xmit_one(struct sk_buff *skb, struct net_device *dev,
|
|
goto out_unlock;
|
|
goto out_unlock;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if (skb_dst(skb)) {
|
|
|
|
+ int mtu = dst_mtu(ndst) - VXLAN6_HEADROOM;
|
|
|
|
+
|
|
|
|
+ skb_dst(skb)->ops->update_pmtu(skb_dst(skb), NULL,
|
|
|
|
+ skb, mtu);
|
|
|
|
+ }
|
|
|
|
+
|
|
tos = ip_tunnel_ecn_encap(tos, old_iph, skb);
|
|
tos = ip_tunnel_ecn_encap(tos, old_iph, skb);
|
|
ttl = ttl ? : ip6_dst_hoplimit(ndst);
|
|
ttl = ttl ? : ip6_dst_hoplimit(ndst);
|
|
skb_scrub_packet(skb, xnet);
|
|
skb_scrub_packet(skb, xnet);
|