The following requirements must be met.
- Design the binary so that
the socket library is always available (so can exist in libs: or in
rom). Miami support, etc will still be exposed by the socket library.
- Compatible with bsdsocket.library (IPv6 Can use an extended API.)
- Move the network control/config parsing code into a separate utility.
- Replace all fixed IPv4 storage types in the socket api to use opaque
types, so that client code can mostly be "address type" agnostic.
- Rework the network layer/protocol code to be modular and instantiated
by the network control utility. "modules" should use an amiga like API
(e.g. libs) so that they can be rommable - and attach to bsdsocket in
their init code 1. e.g -:
- transport layer modules : tcp, udp
- protocol modules : ip, 2 ipv6, icmp, arp 3
- Provide a buffer management API for drivers (perhaps extending SANA) to
handle high throughput devices. "new" drivers should use more efficient
packet processing as part of the extended spec.
- Must be able to use existing drivers API at least for IPv4 mode
- It must be possible to share the library base of bsdsocket.library
between different tasks. This should be controllable via
- Multicast support
- Must be based on AROS-compatible license (BSD, MIT, etc)
- provide a device for tunnelling IPv6 over IPv4
- Zero Config support
- Look at better intergrating the ppp/wlan support so that separate manager apps aren't necessary.
1 - As part of this, the code for the necessary modules should be updated based on current (net?)bsd sources.
2 - IPv6 may perhaps be just included in the "IP" module.
- It would be preferable to have them as libraries, so that they can
expose functionality for further "modules" to utilise, etc. In rom the
init code could bind them to the main socket library, or from disk the
network control utility/per service scripts (or other "service"
framework) could load them based on config settings and likewise cause
the library to init (so that it binds). This would allow including just
the necessary modules in rom to e.g. ftpboot.