Hi all, I'm interested in OS network stacks, and I'm very interested in OpenBSD, but I'm coming from a Linux background, and I've had a hard time finding resources that cover the way the kernel code is organized. Learning cold from the source code is tricky - so if someone could point me in the right direction I'd appreciate it. In Linux terms, I'm looking for the equivalent of queue_dev_xmit and net_rx. Simply put - they're the 'send' and 'recieve' interface between device drivers and the link layer (although there are lesser-used alternatives). I've found ether_input and ether_output in net/ if_ethersubr.c, and it seems they're called by USB and other device code. Are these the functions I'm looking for? And if so, are there other functions that support other Link Layer protocols? (Not that I'm aware of any common ones) I like thinking of the network stack as a well define top (system calls) and a well-defined bottom (a device agnostic interface, perhaps?) but this bottom is hard to define, and that's what I'm looking for. Of course, if I'm totally missing some significant difference between Linux and BSD, please tell me! I hope I can become a contributing member of the community quickly.
Cheers, Sean Mackrory [email protected]

