]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/ipv6/route.c
ipv6: in case of link failure remove route directly instead of letting it expire
[karo-tx-linux.git] / net / ipv6 / route.c
index bd5fd7054031d677f9ac111ef7d78c74b3d68b24..5b127e09c22422f83fef93bed9b1a84d33c51042 100644 (file)
@@ -1080,10 +1080,13 @@ static void ip6_link_failure(struct sk_buff *skb)
 
        rt = (struct rt6_info *) skb_dst(skb);
        if (rt) {
-               if (rt->rt6i_flags & RTF_CACHE)
-                       rt6_update_expires(rt, 0);
-               else if (rt->rt6i_node && (rt->rt6i_flags & RTF_DEFAULT))
+               if (rt->rt6i_flags & RTF_CACHE) {
+                       dst_hold(&rt->dst);
+                       if (ip6_del_rt(rt))
+                               dst_free(&rt->dst);
+               } else if (rt->rt6i_node && (rt->rt6i_flags & RTF_DEFAULT)) {
                        rt->rt6i_node->fn_sernum = -1;
+               }
        }
 }