Hi, Adel, ip_route_output_flow() calls __ip_route_output_key(). The return value is the routing entry, rtable. the parameters for __ip_route_output_key() do not include sock; only net and flow (flp4). And the __ip_route_output_key() is exported. There is a call for xfrm_lookup() which does need a sock in ip_route_output_flow() The xfrm_lookup() is empty when building without IPsec. So in you case, if you know that your solution does not require IPSec traffic, you can use __ip_route_output_key(). rgs. Rami Rosen http://ramirose.wix.com/ramirosen On Fri, Feb 22, 2013 at 3:53 PM, Adel Qodmani <mpcadel@gmail.com> wrote:
On Fri, Feb 22, 2013 at 3:47 PM, Rami Rosen <roszenrami@gmail.com> wrote:
Hi, Adel,
You should use ip_route_output_flow(). For this you should construct a flowi4 instance. ip_route_output_flow() is exported via EXPORT_SYMBOL_GPL.
See for example how this is done in udp_sendmsg().
Good luck!
Rami Rosen http://ramirose.wix.com/ramirosen
On Fri, Feb 22, 2013 at 2:36 PM, Adel Qodmani <mpcadel@gmail.com> wrote:
Hey,
My question is quite simple, I have an sk_buff that I want to transmit, the sk_buff is an ICMP message and so far, I've built the headers and set up everything.
The problem is, when I want to do such a thing, I typically use a function called: dev_queue_xmit which takes the skb and transmits the packet using the net_device specified in the skb; but time time I can't set the net_device, I need the packet to go through the routing code and get it sent normally; so what function can I use to that?
Some notes: *The kernel I am working on is 3.2.0-37 *I am working using Modules, so symbols that are not exported are unreachable for me *I set the IP header using htons, so my header data is already in network byte-order.
Regards, Adel
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Hi Rami,
Using ip_route_output_flow() or using udp_sendmsg() would require not only constructing a flowi4 but also a sock; I am intentionally trying to avoid building a sock at the time being. Is there a way I can deliver my sk_buff to the routing code so that it'd set the net_device in there or at least tell me which interface to use and then I'd set it up myself?
Thankful, Adel