|
@@ -1816,15 +1816,15 @@ static unsigned int ipv4_default_advmss(const struct dst_entry *dst)
|
|
|
|
|
|
static unsigned int ipv4_mtu(const struct dst_entry *dst)
|
|
|
{
|
|
|
+ const struct rtable *rt = (const struct rtable *) dst;
|
|
|
unsigned int mtu = dst_metric_raw(dst, RTAX_MTU);
|
|
|
|
|
|
- if (mtu)
|
|
|
+ if (mtu && rt_is_output_route(rt))
|
|
|
return mtu;
|
|
|
|
|
|
mtu = dst->dev->mtu;
|
|
|
|
|
|
if (unlikely(dst_metric_locked(dst, RTAX_MTU))) {
|
|
|
- const struct rtable *rt = (const struct rtable *) dst;
|
|
|
|
|
|
if (rt->rt_gateway != rt->rt_dst && mtu > 576)
|
|
|
mtu = 576;
|