How to find the correct source address to a destination in a kernel driver?

From: Stephan von Krawczynski
Date: Fri Oct 17 2014 - 04:15:00 EST


Hello all,

in former kernels with routing cache things were easy. We just used :

rt = ip_route_output_key(XXX)
src = rt->rt_src;

Now if there is no routing cache, we tried this:

rt = ip_route_output_key(XXX)
src = inet_select_addr(rt->dst.dev, dst, RT_SCOPE_UNIVERSE);

Unfortunately this does not work with interfaces having multiple ip addresses
and the routing in question is not over the first configured ip.
How do I get the correct src for all possible cases?

--
Regards,
Stephan
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/