-#ifdef CONFIG_IP_ROUTE_TOS
- /*
- * Find route with the same destination and tos.
- */
- FIB_SCAN_KEY(f, fp, key) {
- if (f->fn_tos <= tos)
- break;
- }
-#endif
-
- del_fp = NULL;
-
- if (f && (f->fn_state&FN_S_ZOMBIE) &&
-#ifdef CONFIG_IP_ROUTE_TOS
- f->fn_tos == tos &&
-#endif
- fn_key_eq(f->fn_key, key)) {
- del_fp = fp;
- fp = &f->fn_next;
- f = *fp;
- goto create;
- }
-
- FIB_SCAN_TOS(f, fp, key, tos) {
- if (fi->fib_priority <= FIB_INFO(f)->fib_priority)
- break;
- }
-
- /* Now f==*fp points to the first node with the same
- keys [prefix,tos,priority], if such key already
- exists or to the node, before which we will insert new one.
- */
-
- if (f &&
-#ifdef CONFIG_IP_ROUTE_TOS
- f->fn_tos == tos &&
-#endif
- fn_key_eq(f->fn_key, key) &&
- fi->fib_priority == FIB_INFO(f)->fib_priority) {
- struct fib_node **ins_fp;
+ if (fa && fa->fa_tos == tos &&
+ fa->fa_info->fib_priority == fi->fib_priority) {
+ struct fib_alias *fa_orig;