GNO + Marinetti = MariGNOtti
Go to file
2012-05-12 19:44:10 -04:00
driver.c check busy flag for send/recv 2012-05-07 22:39:40 -04:00
main.c stack size. 2012-05-11 22:46:42 -04:00
makefile.mk updated makefile 2012-05-07 22:41:31 -04:00
marignotti.h xsockaddr 2012-05-12 19:43:24 -04:00
mattach.c UDP support (socket, read, write) 2012-05-12 19:44:10 -04:00
mconnect.c use Debug flag 2012-05-11 21:21:29 -04:00
mdetach.c remove any pending selects when closing the socket. 2012-05-12 01:28:46 -04:00
mgetsockname.c getsockname 2012-05-07 22:41:05 -04:00
mgetsockopt.c SO_TYPE 2012-05-12 01:25:36 -04:00
mioctl.c ioctl(2) 2012-05-06 17:41:45 -04:00
mread.c UDP support (socket, read, write) 2012-05-12 19:44:10 -04:00
mselect.c fix select(2) 2012-05-12 01:29:39 -04:00
msetsockopt.c remove duplicate label 2012-05-07 22:43:51 -04:00
mshutdown.c shutdown(2) 2012-05-06 17:41:38 -04:00
mwrite.c UDP support (socket, read, write) 2012-05-12 19:44:10 -04:00
net.h initial version (it even works) 2012-04-12 00:51:12 -04:00
README.txt readme 2012-05-06 20:23:39 -04:00
s16debug.c debug updates 2012-05-12 19:42:54 -04:00
s16debug.h debug updates 2012-05-12 19:42:54 -04:00
table.c UDP support (socket, read, write) 2012-05-12 19:44:10 -04:00

MariGNOtti

MariGNOtti is a network driver for GNO/ME 2.0.6.  It provides a translation layer between BSD sockets and Marinetti. 

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 signals the other threads when they can proceed.

Supported:

socket(2) -- but only for PF_UNIX, SOCK_STREAM, TCP.

connect(2) -- but non-blocking connects are not yet supported.

bind(2) -- currently a no-op since the old whois(1) used it.

read(2) -- supports blocking, non-blocking, timeouts, and RCVLOWAT.

write(2) -- currently no SNDLOWAT type functionality.

close(2) -- currently no SOLINGER type functionality.

shutdown(2) -- set flags but the flags have no effect.

ioctl(2) -- 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(2) -- support for SO_TYPE, SO_OOBINLINE, SO_SNDLOWAT, SO_RCVLOWAT, SO_SNDTIMEO

send(2)/sendto(2) -- flags and address are ignored (ie, same as write(2))
recv(2)/redcvfrom(2) -- flags and address are ignored. (ie, same as read(2))

Since UDP is not supported, you'll want to put some values in your /etc/hosts file.  You'll also need to create an /etc/services file.

whois works.
ftp does not yet work.