As seen below, Linux(3.7-trunk-686-pae) keeps route to 10.10.12.64/28 in routing table although the interface is physically down:
root@kali:~# ip addr show dev eth0 2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000 link/ether b4:99:ba:57:7c:5f brd ff:ff:ff:ff:ff:ff inet 10.10.12.77/28 scope global eth0 root@kali:~# ip route show dev eth0 10.10.12.64/28 proto kernel scope link src 10.10.12.77 root@kali:~# ip route get 10.10.12.69 10.10.12.69 dev eth0 src 10.10.12.77 cache root@kali:~#
Route is removed from the routing table if I disable the interface administratively("ip link set dev eth0 down").
What is the purpose to keep the route in routing table while the interface itself is physically down? For example if the more-specific route 10.10.12.64/28 would not be present while the interface is down, then the traffic could be sent to less-specific route(for example 0.0.0.0/0) to another interface which is up.