import PULS_20180308
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / net / ipv6 / ndisc.c
index 5aab1acc3d2a163d5760d4c90b22e4556a769c8d..d1bc9987b8dc2c7e1647aa71e9173a110c041ed7 100644 (file)
@@ -1193,7 +1193,13 @@ static void ndisc_router_discovery(struct sk_buff *skb)
        if (rt)
                rt6_set_expires(rt, jiffies + (HZ * lifetime));
        if (ra_msg->icmph.icmp6_hop_limit) {
-               in6_dev->cnf.hop_limit = ra_msg->icmph.icmp6_hop_limit;
+               /* Only set hop_limit on the interface if it is higher than
+                * the current hop_limit.
+                */
+               if (in6_dev->cnf.hop_limit < ra_msg->icmph.icmp6_hop_limit)
+                       in6_dev->cnf.hop_limit = ra_msg->icmph.icmp6_hop_limit;
+               else
+                       ND_PRINTK(2, warn, "RA: Got route advertisement with lower hop_limit than current\n");
                if (rt)
                        dst_metric_set(&rt->dst, RTAX_HOPLIMIT,
                                       ra_msg->icmph.icmp6_hop_limit);