Hi there, Waldemar and I talked a bit and here is what we came up with: According to Waldemar, our current networking stack is still very close to a BSD stack which could ease the effort of porting FreeBSD modules into it. Also according to Waldemar, he has little hope that we could or should use any of the code in our repository right now. While my impression of the code was similar, it has been some years since I looked at it (during David's active time). In any way, what needs to be done first is that someone starts at the very ground (ie. packet and memory management, a.k.a. mbufs and their handling) of our current stack and works his way up in layers and modules. Step by step the existing code can either be replaced with FreeBSD code or fixed so that it becomes usable. Everything above the current working set doesn't even need to be built. The only things that we definitely need to keep are the net_stack_driver, the ethernet legacy code, and the userland testing stuff (BONE only). The ethernet code probably needs most of the work and should be better separated from the rest. We also agreed that it makes sense to liften up the current module structure a bit at first, and, if needed, put more stuff into the stack directly (though as modularized as possible). Only the interface layer must be true modules for VPN and the like. That would be a good compromise for R1 if it allows us to reach a stable and robust stack earlier. It would be nice if we have the following in mind when doing the port/ rework: - use native BeOS kernel API wherever possible, there shouldn't be a generic FreeBSD porting layer - the networking modules should be integrated as much as possible. - use our coding style guide Both will make it much harder to adopt further improvements to the FreeBSD stack, but since it's working nicely now, I don't see that this would be so important - the maintenance and cleaning changes at least shouldn't be necessary anymore, if we do a good job. So, since we are more than one person working on this, we need to break that work down into smaller portions, and we also need to communicate a lot to keep us on track. For a start, we identified the following separate tasks: * separate the ethernet legacy code from the network core, and move it into the ethernet interface, so that it can later be used with no or only little changes * make yourself familiar with the FreeBSD networking stack (in comparison with what we have in our tree) * port demons and other needed networking tools to our stack Any takers? Andrew, what have you done so far, and what would you prefer to do? Any comments? The main configuration should work via ioctl(), not via sysctl() - in contrast we thought that it would be nicer to have an extra userland API for the networking stack configuration and interfaces etc. that would hide these details from the programmer. Networking notifications like "interface (dis)connected" should be done via the KMessage service, like node monitoring. Accessing networking interfaces (via ifconfig, for example) should go over the path of the device (if any), or the name of the interface module. I like how BONE does it. And I don't like what our current stack does (ipro10000, sis9000, etc.). To suggest some goals that are further down the road: * a nice and clean preferences application * a net_server application that takes over the duties of inetd and also handles the complete server configuration in a useful way (ie. reads in configuration files on startup and configures the stack) * a Deskbar replicant that manages all available interfaces and shows useful info * have a look at porting WiFi stuff from FreeBSD I hope that wasn't too confusing :-) Bye, Axel.