route.c (281d1bbd34b734e4f22b30b6f3b673dda46a7470) route.c (b0a1ba59921eaaa9cb8f97bb35f2e6870fcdfedc)
1/*
2 * Linux INET6 implementation
3 * FIB front-end.
4 *
5 * Authors:
6 * Pedro Roque <roque@di.fc.ul.pt>
7 *
8 * This program is free software; you can redistribute it and/or

--- 1228 unchanged lines hidden (view full) ---

1237 continue;
1238 break;
1239 }
1240
1241 if (!rt)
1242 rt = net->ipv6.ip6_null_entry;
1243 else if (rt->dst.error) {
1244 rt = net->ipv6.ip6_null_entry;
1/*
2 * Linux INET6 implementation
3 * FIB front-end.
4 *
5 * Authors:
6 * Pedro Roque <roque@di.fc.ul.pt>
7 *
8 * This program is free software; you can redistribute it and/or

--- 1228 unchanged lines hidden (view full) ---

1237 continue;
1238 break;
1239 }
1240
1241 if (!rt)
1242 rt = net->ipv6.ip6_null_entry;
1243 else if (rt->dst.error) {
1244 rt = net->ipv6.ip6_null_entry;
1245 } else if (rt == net->ipv6.ip6_null_entry) {
1245 goto out;
1246 }
1247
1248 if (rt == net->ipv6.ip6_null_entry) {
1246 fn = fib6_backtrack(fn, &fl6->saddr);
1247 if (fn)
1248 goto restart;
1249 }
1250
1249 fn = fib6_backtrack(fn, &fl6->saddr);
1250 if (fn)
1251 goto restart;
1252 }
1253
1254out:
1251 dst_hold(&rt->dst);
1252
1253 read_unlock_bh(&table->tb6_lock);
1254
1255 return rt;
1256};
1257
1258static struct dst_entry *ip6_route_redirect(struct net *net,

--- 1981 unchanged lines hidden ---
1255 dst_hold(&rt->dst);
1256
1257 read_unlock_bh(&table->tb6_lock);
1258
1259 return rt;
1260};
1261
1262static struct dst_entry *ip6_route_redirect(struct net *net,

--- 1981 unchanged lines hidden ---