Skip to content

Commit 49dd18b

Browse files
pmatilaidavem330
authored andcommitted
ipv4: Fix incorrect error code when adding an unreachable route
Trying to add an unreachable route incorrectly returns -ESRCH if if custom FIB rules are present: [root@localhost ~]# ip route add 74.125.31.199 dev eth0 via 1.2.3.4 RTNETLINK answers: Network is unreachable [root@localhost ~]# ip rule add to 55.66.77.88 table 200 [root@localhost ~]# ip route add 74.125.31.199 dev eth0 via 1.2.3.4 RTNETLINK answers: No such process [root@localhost ~]# Commit 83886b6 ("[NET]: Change "not found" return value for rule lookup") changed fib_rules_lookup() to use -ESRCH as a "not found" code internally, but for user space it should be translated into -ENETUNREACH. Handle the translation centrally in ipv4-specific fib_lookup(), leaving the DECnet case alone. On a related note, commit b7a71b5 ("ipv4: removed redundant conditional") removed a similar translation from ip_route_input_slow() prematurely AIUI. Fixes: b7a71b5 ("ipv4: removed redundant conditional") Signed-off-by: Panu Matilainen <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent b7f4c0b commit 49dd18b

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

net/ipv4/fib_rules.c

+4
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,10 @@ int __fib_lookup(struct net *net, struct flowi4 *flp, struct fib_result *res)
6262
else
6363
res->tclassid = 0;
6464
#endif
65+
66+
if (err == -ESRCH)
67+
err = -ENETUNREACH;
68+
6569
return err;
6670
}
6771
EXPORT_SYMBOL_GPL(__fib_lookup);

0 commit comments

Comments
 (0)