diff --git a/README.md b/README.md new file mode 100644 index 0000000..039a89b --- /dev/null +++ b/README.md @@ -0,0 +1,101 @@ +MariGNOtti +========== + +MariGNOtti is a network driver for GNO/ME 2.0.6. It provides a translation +layer between BSD sockets and Marinetti. Think of it as a replacement for +GSTCP. + +Installation: +------------- + +1. copy the `marignotti`, `ftp`, `sic`, and `whois` executables to your `/usr/local/bin` +directory. + + * `ftp` is an update of the gno 2.0.6 ftp (it adds passive ftp support). + + * `whois` is an updated version (from FreeBSD 9.0). The gno 2.0.6 version is from FreeBSD 2.1. + + * `sic` is a very simple irc client. + + example: + sic -h irc.a2central.com -p 6667 -n myname + (a bunch of messages) + :j #a2c.chat << join a room + + +2. copy the `etc/services` file to `/etc/services` (if it does not exist). + +3. edit and copy the `etc/resolve.conf` file to `/etc/resolve.conf` (if it does +not exist). This file is your DNS server + +4. If you don't have a DNS server, edit `/etc/hosts` to include your favorite +sites. + + + +Usage: +------ + +Run marignotti in the background (`marignotti &`). To quit, bring it to the +foreground (`fg`) and hit `control-C`. + +If you're using the Sweet-16 emulator version 3.0, `marignotti -d` will print +some debugging information to the debugger console. `marignotti -dd` will +enable extra debugging information (including the contents of reads and +writes). + + +What it does: +------------- + +While marignotti is running in the background, it translates BSD socket calls +into Marinetti tool calls. It also handles blocking IO, socket options, +select, etc. + + +Architecture: +------------- + +BSD sockets are, by default, blocking whereas everything Marinetti does +(other than the inital network connection) is non-blocking. To handle +blocking behavior, each socket has a semaphore. The main thread performs +all the polling and uses the semaphore to signal the other threads when they +can proceed. + + +Supported: +---------- + +`socket` -- only support for `PF_UNIX`, `SOCK_STREAM`, and `SOCK_DGRAM`. + +`connect` -- but non-blocking connects are not yet supported. + +`bind` -- currently a no-op since the old `whois` used it. + +`read`/`recv`/`recvfrom` -- supports blocking, non-blocking, timeouts, and `RCVLOWAT`. +The address parameter of `recvfrom` is not supported. OOB is not supported. + +`write`/`send`/`sendto` -- does not support `SNDLOWAT`, OOB, or the address parameter +of `sendto`. + +`close` -- does not support `SOLINGER` type functionality. + +`shutdown` -- sets flags but the flags are not completely implemented. + +`ioctl` -- support for `FIONREAD` (bytes available to read) and `FIONBIO` +(set/clear non-blocking). + +`getsockopt` -- support for `SO_OOBINLINE`, `SO_SNDLOWAT`, `SO_RCVLOWAT`, +`SO_SNDTIMEO`, `SO_RCVTIMEO`, `SNDLOWAT` and `SNDTIMEO` set flags but don't have any +other effect. `OOBINLINE` is only be supported when true. + +`getsockopt` -- support for `SO_TYPE`, `SO_OOBINLINE`, `SO_SNDLOWAT`, `SO_RCVLOWAT`, +`SO_SNDTIMEO` + +Not (yet) supported: +-------------------- + +- OOB (out of band) data (and will never be supported). +- raw sockets (`SOCK_RAW`) +- TCP servers (`listen`/`accept`). Should be simple, though. +- UDP servers diff --git a/README.text b/README.text index f7b809c..2936473 100644 --- a/README.text +++ b/README.text @@ -1,15 +1,19 @@ MariGNOtti -MariGNOtti is a network driver for GNO/ME 2.0.6. It provides a translation layer between BSD sockets and Marinetti. Think of it as a replacement for GSTCP. +MariGNOtti is a network driver for GNO/ME 2.0.6. It provides a translation +layer between BSD sockets and Marinetti. Think of it as a replacement for +GSTCP. Installation: ------------- -1. copy the marignotti, ftp, sic, and whois executables to your /usr/local/bin directory. +1. copy the marignotti, ftp, sic, and whois executables to your /usr/local/bin +directory. ftp is an update of the gno 2.0.6 ftp (it adds passive ftp support). -whois is an updated version (from FreeBSD 9.0). The gno 2.0.6 version is from FreeBSD 2.1. +whois is an updated version (from FreeBSD 9.0). The gno 2.0.6 version is +from FreeBSD 2.1. sic is a very simple irc client. example: @@ -18,31 +22,43 @@ sic -h irc.a2central.com -p 6667 -n myname :j #a2c.chat << join a room -2. copy the services file to /etc/services (if it does not exist). -3. edit and copy the resolve.conf file to /etc/resolve.conf (if it does not exist). This file is your DNS server +2. copy the etc/services file to /etc/services (if it does not exist). +3. edit and copy the etc/resolve.conf file to /etc/resolve.conf (if it does +not exist). This file is your DNS server -4. If you don't have a DNS server, edit /etc/hosts to include your favorite sites. +4. If you don't have a DNS server, edit /etc/hosts to include your favorite +sites. Usage: ------ -Run marignotti in the background (marignotti &). To quit, bring it to the foreground (fg) and hit control-C. +Run marignotti in the background (marignotti &). To quit, bring it to the +foreground (fg) and hit control-C. -If you're using the Sweet-16 emulator and started Sweet 16 from the terminal (/Applications/Sweet16.app/Contents/MacOS/Sweet16), marignotti -d will print some debugging information to the console. marignotti -dd will enable extra debugging information (including the contents of reads and writes). +If you're using the Sweet-16 emulator version 3.0, marignotti -d will print +some debugging information to the debugger console. marignotti -dd will +enable extra debugging information (including the contents of reads and +writes). What it does: ------------- -While marignotti is running in the background, it translates BSD socket calls into Marinetti tool calls. It also handles blocking IO, socket options, select, etc. +While marignotti is running in the background, it translates BSD socket calls +into Marinetti tool calls. It also handles blocking IO, socket options, +select, etc. Architecture: ------------- -BSD sockets are, by default, blocking whereas everything Marinetti does (other than the inital network connection) is non-blocking. To handle blocking behavior, each socket has a semaphore. The main thread performs all the polling and uses the semaphore to signal the other threads when they can proceed. +BSD sockets are, by default, blocking whereas everything Marinetti does +(other than the inital network connection) is non-blocking. To handle +blocking behavior, each socket has a semaphore. The main thread performs +all the polling and uses the semaphore to signal the other threads when they +can proceed. Supported: @@ -52,21 +68,27 @@ socket -- only support for PF_UNIX, SOCK_STREAM, and SOCK_DGRAM. connect -- but non-blocking connects are not yet supported. -bind -- currently a no-op since the old whois(1) used it. +bind -- currently a no-op since the old whois used it. -read/recv/recvfrom -- supports blocking, non-blocking, timeouts, and RCVLOWAT. The address parameter of recvfrom is not supported. OOB is not supported. +read/recv/recvfrom -- supports blocking, non-blocking, timeouts, and RCVLOWAT. +The address parameter of recvfrom is not supported. OOB is not supported. -write/send/sendto -- does not support SNDLOWAT, OOB, or the address parameter of sendto. +write/send/sendto -- does not support SNDLOWAT, OOB, or the address parameter +of sendto. close -- does not support SOLINGER type functionality. shutdown -- sets flags but the flags are not completely implemented. -ioctl(2) -- support for FIONREAD (bytes available to read) and FIONBIO (set/clear non-blocking). +ioctl -- support for FIONREAD (bytes available to read) and FIONBIO +(set/clear non-blocking). -getsockopt(2) -- support for SO_OOBINLINE, SO_SNDLOWAT, SO_RCVLOWAT, SO_SNDTIMEO, SO_RCVTIMEO. SNDLOWAT and SNDTIMEO set flags but don't have any other effect. OOBINLINE will only be supported when true. +getsockopt -- support for SO_OOBINLINE, SO_SNDLOWAT, SO_RCVLOWAT, +SO_SNDTIMEO, SO_RCVTIMEO, SNDLOWAT and SNDTIMEO set flags but don't have any +other effect. OOBINLINE will only be supported when true. -getsockopt(2) -- support for SO_TYPE, SO_OOBINLINE, SO_SNDLOWAT, SO_RCVLOWAT, SO_SNDTIMEO +getsockopt -- support for SO_TYPE, SO_OOBINLINE, SO_SNDLOWAT, SO_RCVLOWAT, +SO_SNDTIMEO Not (yet) supported: --------------------