Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ksherlock/marignotti
GNO + Marinetti = MariGNOtti
https://github.com/ksherlock/marignotti
appleiigs gno iigs marinetti
Last synced: about 1 month ago
JSON representation
GNO + Marinetti = MariGNOtti
- Host: GitHub
- URL: https://github.com/ksherlock/marignotti
- Owner: ksherlock
- Created: 2012-04-12T21:30:33.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2021-03-15T02:36:34.000Z (almost 4 years ago)
- Last Synced: 2023-03-23T04:27:28.416Z (almost 2 years ago)
- Topics: appleiigs, gno, iigs, marinetti
- Language: C
- Homepage:
- Size: 126 KB
- Stars: 6
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
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 room2. copy the `etc/services` file to `/etc/services` (if it does not exist).
3. edit and copy the `etc/resolv.conf` file to `/etc/resolv.conf` (if it does
not exist). This file points to your DNS server; update it as needed.4. If you do not 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 are 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).`setsockopt` -- `SO_SNDLOWAT`, `SO_RCVLOWAT`, `SO_SNDTIMEO`, and `SO_RCVTIMEO` are supported.
`SO_OOBINLINE` errors unless it's true.
`SO_DEBUG`, `SO_REUSEADDR`, `SO_REUSEPORT`, `SO_KEEPALIVE` set a flag but have no other effect.`getsockopt` -- support for `SO_TYPE`, `SO_DEBUG`, `SO_REUSEADDR`, `SO_REUSEPORT`, `SO_KEEPALIVE`,
`SO_OOBINLINE`, `SO_SNDLOWAT`, `SO_RCVLOWAT`, `SO_SNDTIMEO`, `SO_RCVTIMEO`, `SO_NREAD`, `SO_NWRITE``getsockopt` -- support for `SO_OOBINLINE`, `SO_SNDLOWAT`, `SO_RCVLOWAT`,
`SO_SNDTIMEO`, `SO_RCVTIMEO`, `SNDLOWAT` and `SNDTIMEO` set flags but don not have any
other effect. `OOBINLINE` is only be supported when true.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