|
@@ -133,17 +133,15 @@ cxgb_find_route6(struct cxgb4_lld_info *lldi,
|
|
if (ipv6_addr_type(&fl6.daddr) & IPV6_ADDR_LINKLOCAL)
|
|
if (ipv6_addr_type(&fl6.daddr) & IPV6_ADDR_LINKLOCAL)
|
|
fl6.flowi6_oif = sin6_scope_id;
|
|
fl6.flowi6_oif = sin6_scope_id;
|
|
dst = ip6_route_output(&init_net, NULL, &fl6);
|
|
dst = ip6_route_output(&init_net, NULL, &fl6);
|
|
- if (!dst)
|
|
|
|
- goto out;
|
|
|
|
- if (!cxgb_our_interface(lldi, get_real_dev,
|
|
|
|
- ip6_dst_idev(dst)->dev) &&
|
|
|
|
- !(ip6_dst_idev(dst)->dev->flags & IFF_LOOPBACK)) {
|
|
|
|
|
|
+ if (dst->error ||
|
|
|
|
+ (!cxgb_our_interface(lldi, get_real_dev,
|
|
|
|
+ ip6_dst_idev(dst)->dev) &&
|
|
|
|
+ !(ip6_dst_idev(dst)->dev->flags & IFF_LOOPBACK))) {
|
|
dst_release(dst);
|
|
dst_release(dst);
|
|
- dst = NULL;
|
|
|
|
|
|
+ return NULL;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-out:
|
|
|
|
return dst;
|
|
return dst;
|
|
}
|
|
}
|
|
EXPORT_SYMBOL(cxgb_find_route6);
|
|
EXPORT_SYMBOL(cxgb_find_route6);
|