> Here some milestones I think we should aim now. > D) Code cleanup > Issues that *need* to be solved: 1) Shared variables: Some header files had been used to define variables. I think I removed most of this. But two problems remained. Two variables had been used in different modules. It appeared as if they were shared, but in fact, every module had it's own copy. It may be needed to share them by providing a access function in the core module. Variables that need to be taken care of: struct ipstat ipstat uint32 sb_max struct in_ifaddr *in_ifaddr; (partitially soved by using core->get_primary_addr) 2) in_ifaddr The usage and init of ifaddr appears to be broken/unclear. 3) socket_accept() Looks broken, at least I don't understand what is going on here. 4) wait/signal functions broken void wakeup(sem_id chan) is definitly broken, the way it is implemented as a result, int nsleep(sem_id chan, char *msg, int timeo) might not work as expected. also void sowakeup(struct socket *so, struct sockbuf *sb) and perhaps other related functions may not work as expected. 5) ugly ugly macros in socketvar.h should be removed/changed 6 ) Locking: There is nearly no locking! This can lead to all kinds of various errors. I noticed that especially the socket and mbuf code have no locks at all, but many other places might need locking, too. 7) Global variables There are many global variables. Accessing them must be serialized using proper locking. 8) Comments There are hardly any comments in the code. For example, I have no idea what the radix.c file is supposed to do at all. 9) thats it. I'm going back to do some media kit work. Have fun. Perhaps rewriting the network stack (using C++) is an option, unless somebody understands what is going on/wrong. Marcus