See inline please..

On Thu, 16 May 2002, Anand S wrote:

> We are implementing a user space router for Linux
>
> *******************************************************Our
> architecture is as follows
>
>            User Space Router architecture
>          ------------------------------
>
> Incoming packet -> NETFILTER -> Queued
>                                 packet  -
>                               handler  |
>                                          |
>                                          v
>  reinject   <- device driver   <-  User space
>  into kernel   for reinjection     router

>From the device driver, you can make direct call to
the interrupt routine netif_rx(), which eventually, thru
bh ends up calling net_rx_action in net/core/dev.c.
Is this what you are looking for?

>      |
>      V
>  packet goes out
>
>
> We have implemented the "Queued packet handler" to
> take the packets given by NETFILTER and gives it to
> the user space program
>
> The "user space routing program" takes the routing
> decision and write the packet back using write() of
> the device driver.
>
> write() calls NETFILTER's nf_reinject() to put the
> packet back on track
>
> *******************************************************The
> problem we have is:
>
> We want to indicate the next hop IP address for the
> packet while reinjecting through nf_reinject(), i.e.
> We want the forwarding to be done based on the IP
> address supplied by the user space program
>
> *******************************************************How
> do we do this ?
>
> We could think of these ways
>   1. setting skb->dst to correspond to the information
> about this IP address

If you setup skb->dst yourself, you can call ip_route_output(),
since at this point, you already have the info about the route
(next hop).

>   2. directly call ip_route_input() with proper
> parameters
>   3. lookup the information about this IP address from
> the kernel's routing table

You have to do this anyways todo [1] above.

>
> Is any of these feasible ?
> Is there a better way ?

Do you indicate netfilter about your stolen packet?

> *******************************************************
> THANKS IN ADVANCE
>
> __________________________________________________
> Do You Yahoo!?
> LAUNCH - Your Yahoo! Music Experience
> http://launch.yahoo.com
>
>


Reply via email to