[Spread-users] Spread source overview

Jonathan Stanton jonathan at cnds.jhu.edu
Thu Sep 6 10:28:23 EDT 2001

I just had one or two things to add to Yair's reply. Essentially you are
exactly right.

Comments are inline.

On Thu, Sep 06, 2001 at 05:24:57AM +0100, Joshua Goodall wrote:
> Primarily for my own use I have just been through the source and made a
> one-line overview for each source file. I suspect I have it partially
> wrong, particularly with respect to network.c, protocol.c, groups.c and
> membership.c. I'd appreciate it if someone who "knows the source" can
> correct me.
> This is what I have:
> Spread daemon:
> acm.c           handle access control policies
> acp-permit.c    acp_ops to permit open access
> alarm.c         console message filtering&display
> auth-ip.c       auth_ops for IP-based authentication
> auth-null.c     auth_ops for no authentication
> config_parse.[yl]   yacc & lex source for reading configuration files
> configuration.c     yacc wrapper & configuration lookup
> data_link.c     socket code layer with scatter
> events.c        event scheduling&delivery, prioritised-events select wrapper
> flow_control.c  update ring flowcontrol tunables
> groups.c        manages group memberships
> log.c           write log messages to file
> membership.c    network membership state machine including ring protocol
> memory.c        typed&pooled memory object manager
> message.c       message object data access functions

The session layer (groups.c, session.c) use an abstraction of a message
that is provided by message.c. Message.c is intertwined (by implementation)
with the protocol layer (membership.c protocol.c flow_control.c). The idea
is that changes to the protocol layer data structures can be made without
effecting the session layer.

> network.c       implement forwarding choices of protocol.c, call data_link.c
> protocol.c      implement reliability & ordering
> session.c       handle client connections
> skiplist.c      implementation of skiplists for group lookups
> spread.c        initialise subsystems, start main event loop
> status.c        respond to monitor status requests (magic 15051963)
> Library sources:
> alarm.c         as above
> events.c        as above
> memory.c        as above
> sp.c            Spread client API implementation library
> Tools sources:
> monitor.c       monitor & manage daemons
> flooder.c       message flooder
> user.c          command-line interface to client API
> simple_user.c   simple send&receive demonstration
> Other sources:
> r.c             sniffing tool
> s.c             spamming tool
Useful for testing network UDP loss rates. 

> arch.c          dummy strerror for SunOS
> auth-pword.c    acp_ops for cleartext password authentication     } unused?
> auth-pword-client.c acp_ops for cleartext password authentication }

These are unused because I don't consider them tested or necessarily a good
idea (bad security). They were written to provide an example of an
authentication module. 


Jonathan R. Stanton         jonathan at cs.jhu.edu
Dept. of Computer Science   
Johns Hopkins University    

More information about the Spread-users mailing list