On Mon, 7 Jun 2004 08:12:13 -0400, Tobias DiPasquale <cbcgtt@gmail.com> wrote: > ...Any help would be appreciated. Thanks. Nevermind about that. Someone on the netfilter list just told me how it works. As well, there is more detailed information in Chapter 18 of Understanding the Linux Kernel (2nd Edition) (RTFM ;-)). For others who may be interested in how this works: Any one FIB table (because there are more than one) consists of (among other things) a struct fn_hash, an array of 33 pointers to struct fn_zone records. The fn_zone records include routing information for destination networks that each have the same network mask (e.g. all /24 networks would be represented by the same fn_zone record). The routing information itself is stored in a fib_node record which is attached to its associated fn_zone record. The fib_node then contains a pointer to the struct fib_info record which represents the network device for that particular route (which is shared by all routes that are directed to that particular interface). It also seems that after the route is resolved the first time, it is then entered in the routing cache (rt_hash_table) for faster future resolution. This method is similar to the traditional BSD route resolution method (in fact its almost identical). It also happens to be pretty inefficient and much better IP lookup algorithms have existed for a number of years (though there may be some patent/IP issues preventing some of them from being used that I'm not aware of... $FLAME=="no" if that's the case). Anyway, thanks for letting me take up your time with this largely useless thread. -- Tobias DiPasquale [ 0x63626367545440676d61696c2e636f6d ] - : send the line "unsubscribe linux-net" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html