MorphOS Developer
Posts: 1107 from 2003/6/11
From: Białystok...
Well, I must admit I started to prepare to this project almost a month ago. I started from reading tons of documentation and RFC-s. I also have now a lot of working code. I wanted to be sure I can make it before I've taken the bounty. I'm writing this stack from scratch for two reasons. We all know MorphOS is a single-user OS with limited memory protection. Many consider it a disadvantage. But it may be taken as an advantage and TCP/IP stack can be much faster than bloated U*ix ported solutions designed for multi-user memory protected environment. The second reason is educational, I want to increase my TCP/IP knowledge with all the details and practice.
So well, what is already done?
1) The main task. There are two approaches to the stack in Amiga-like OS. The first, common one is that the stack is an application. It creates bsdsocket.library dynamically in memory when launched. The second one (used only in RoadShow AFAIK) is that the stack is a library in LIBS:. It creates all processes when opened the first time. I've choosen the first approach, so the network is started by launching "ezTCP" app. This app is a MUI app so it has the stack GUI integrated. The GUI is not done yet, but it will be. Screenshots will follow
.
2) Subtasks for interface: IP subtask (handles addressing and packet fragmentation), ARP daemon subtask.
3) The complete library skeleton with all API functions.
4) Syslog facility. ezSysLog is a separate MUI app which can be used to catch syslog() output. It is 100% functional now.
5) API functions related to logging and error reporting like SysLog(), Errno(), SetErrnoPtr(), SocketBaseTagList() (partially), GetDTableSize().
As you can see I've started from logging and errors then I'm building IP layer. The stack is modularized and extendable, so after releasing the bounty version, more features can be added. I will report progress on MorphZone. I also plan to release some beta versions and set up a bugtracker.