|
@@ -1816,7 +1816,12 @@ static unsigned int ipv4_default_advmss(const struct dst_entry *dst)
|
|
|
|
|
|
static unsigned int ipv4_mtu(const struct dst_entry *dst)
|
|
|
{
|
|
|
- unsigned int mtu = dst->dev->mtu;
|
|
|
+ unsigned int mtu = dst_metric_raw(dst, RTAX_MTU);
|
|
|
+
|
|
|
+ if (mtu)
|
|
|
+ return mtu;
|
|
|
+
|
|
|
+ mtu = dst->dev->mtu;
|
|
|
|
|
|
if (unlikely(dst_metric_locked(dst, RTAX_MTU))) {
|
|
|
const struct rtable *rt = (const struct rtable *) dst;
|
|
@@ -2757,7 +2762,9 @@ static struct dst_entry *ipv4_blackhole_dst_check(struct dst_entry *dst, u32 coo
|
|
|
|
|
|
static unsigned int ipv4_blackhole_mtu(const struct dst_entry *dst)
|
|
|
{
|
|
|
- return dst->dev->mtu;
|
|
|
+ unsigned int mtu = dst_metric_raw(dst, RTAX_MTU);
|
|
|
+
|
|
|
+ return mtu ? : dst->dev->mtu;
|
|
|
}
|
|
|
|
|
|
static void ipv4_rt_blackhole_update_pmtu(struct dst_entry *dst, u32 mtu)
|