NETLINK_FIB_LOOKUP and NETLINK_ROUTE
Kevin Wilson
wkevils at gmail.com
Fri Jan 11 09:30:22 EST 2013
Hi,
Why do we need NETLINK_FIB_LOOKUP ?
I see that NETLINK_FIB_LOOKUP is used in a libnl util named nl-fib-lookup,
and that NETLINK_FIB_LOOKUP is also used in lib/fib_lookup/lookup.c.
Is there anything in which NETLINK_FIB_LOOKUP is better than using RTM_GETROUTE?
With NETLINK_FIB_LOOKUP, we call nl_fib_input() which eventually calls
fib_table_lookup().
In the kernel we have these two registrations:
rtnl_register(PF_INET, RTM_GETROUTE, inet_rtm_getroute, NULL, NULL);
rtnl_register(PF_INET, RTM_GETROUTE, NULL, inet_dump_fib, NULL);
The first is for doit action and the second is for dumpit action.
inet_rtm_getroute() finds routing entry by ip_route_input()/ip_route_output(),
which eventually calls also fib_table_lookup().
I saw here:
http://lists.openwall.net/netdev/2009/05/25/33
...
...
"This was added when fib_trie was introduced and in this case we're comparing
NETLINK_FIB_LOOKUP result with a userland program doing longest prefix match
on the same routing table.
...
iproute normally dumps the table, it doesn't look up a particular route
as done via the RX softirq."
But
Indeed, "ip route" calls inet_dump_fib()
But,
"ip route get" calls inet_rtm_getroute(), which as said above, performs
also a fib lookup.
Example:
ip route get 192.168.1.100
192.168.1.100 dev p2p1 src 192.168.1.10
cache
Maybe using NETLINK_FIB_LOOKUP should be replaced with lookup with RTM_GETROUTE
of NETLINK_ROUTE?
I don't see anything in which NETLINK_FIB_LOOKUP is better than
using RTM_GETROUTE.
regards,
Kevin
More information about the libnl
mailing list