Skip to content

Commit

Permalink
update README
Browse files Browse the repository at this point in the history
  • Loading branch information
ksherlock committed Aug 9, 2013
1 parent 8855f7f commit c9be4bb
Show file tree
Hide file tree
Showing 2 changed files with 139 additions and 16 deletions.
101 changes: 101 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -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
54 changes: 38 additions & 16 deletions README.text
Original file line number Diff line number Diff line change
@@ -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:
Expand All @@ -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:
Expand All @@ -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:
--------------------
Expand Down

0 comments on commit c9be4bb

Please sign in to comment.