Since we seem to be debating again the design of the network stack, I felt I would present again the idea that I wrote to the GlassE list a year ago. The basic idea is that you have only one kind of add-on (Axel will know where this idea came from), the network layer, and these add-ons self- organize into a series of interlocking chains (looks more like a web, I suppose, but...). Sockets could be an add-on too... after all, they consume packets just like any protocol. Here's how this works. Each add -on/module has a type which is defined by something vaguely resembling an MIME type, like this: "ethernet/abcd-foo", where abcd-foo is the type of card. Each module is then given a list of other modules as they are loaded, building a chain. The PPPoE module (or Ethernet IP) module would say, "Hey! That's an ethernet card! and register some packet type with it, or ask to be given all packets, or something along those lines. As a packet moves through the stack, it will acquire attributes, and its data pointer will be modified so that the contents of the packet are simply its payload. The attributes would include information like destination and source addresses, packet types, etc. This would allow IP or AppleTalk stacks to be oblivious to the link type, as sub-modules (with appropriate types, like "ip/ethernet" (the second part of the type could even define on top of which layers it was placed)) would translate network-protocol specific header information into a standard set of attributes. And those are my ramblings. Thoughts? -Nathan -- Fortune Cookie Says: Law of Probable Dispersal: Whatever it is that hits the fan will not be evenly distributed.