cnet either displays the entire network under Tcl/Tk or runs rather less visually on an ASCII terminal. Under Tcl/Tk cnet provides a graphical representation of the network under execution and permits a number of attributes of the network to be modified while the simulation is running. Nodes may be re-positioned and selected which results in a sub-window being displayed containing the output and statistics of that node. The node's attributes of message rates and sizes may be modified while the network is running by selecting choice buttons. Similarly, the default attributes of all nodes in the network may be simultaneously modified by selecting and changing global attributes. From a menu each node may be forced to reboot, (impolitely) crash, (politely) shutdown and reboot, pause and (hardware) fail.
Selecting a link results in a sub-window being displayed containing statistics for that link. Links are bidirectional, so ``selecting a link'' means clicking on the link near the end of its source. The link-based attributes of costs and probabilities of error may be modified while the network is running by dragging sliders. Similarly, the attributes of all links in the network may be simultaneously modified by selecting and changing global link attributes.
The current node and link attributes (as possibly modified via the windowing interface) are available to each node in C data structures and variables declared in cnet's header file <cnet.h>. These are initialized when each node is rebooted and updated as each node is scheduled for execution. The contents of these data structures are considered as read-only values and not be modified directly by the protocols. They may be successfully modified via the windowing interface.
cnet requires network protocols to be written in either ANSI-C or the K&R programming language and supports their execution within a single UNIX process. Protocols are invoked directly by cnet itself - not interpreted. Protocols do not need to contain any windowing code.