A wide ranging set of event system changes:
assign_wrapper.in: Hack in a change that ensures a delay node is created for any link on which an event is posted (up,down,modify), no matter what its initial parameters are. ie: If a link is created with no delay, but there is an event that adds a delay later, then we must drop in a delay node. Same for up/down on a link. We do this in the delay node. I am reasonably confident that this change is fine for duplex links, but I am less sure of the effect on lans! eventsys_control.in: Checkpoint latest changes. Add "replay" option, which right now just stops and starts the event scheduler so that it reloads the entire event list. Add check for existing experiment, and that the experiment is either active or swapping (do not want to start a scheduler for a swapped out experiment!). Add check to see if there are any events, and skip startup if there are not events in the DB. Lastly, get very serious about preventing more than one scheduler from being started, either by accident or intentionally. My protocol is to lock the table, grab and set the pid to -pid, test the pid for a positive value, and if positive, send the scheduler a kill(TERM) so that it can cleanup, clear the pid to zero in the DB, and exit. This approach ensures that we do not try to send a kill to a pid that is no longer active or owned by the user (this last part is not really necessary cause of how pids are reused, but it was easy to add so why not). exports_setup.in: Trivial change to make it easier to turn this on temporarily in devel trees. named_setup.in: Ditto. node_reboot.in: Add call to TBdbfork() in child cause of apparent DB connection problems across forks. In the child, set the eventstatus for the node to REBOOT if successful (not this event status stuff is temporary, will be recast in next set of revisions). GNUmakefile: Add new controlling program, eventsys_control. power.in: Ditto previous comment about REBOOT. os_setup.in: Non event system cleanups. tbend.in: Add DB cleanup of the new virt_trafgens and eventlist tables. tbprerun.in: Ditto. tbreport.in: Print out the event list in a pretty print format. tbswapin.in: Add call to start the event system. Also a big fix; move the named script up above the os_setup so that the named tables have been updated by the time the first node reboots. I noticed that nodes were failing on gethostbyname(). tbswapout.in: Add call to stop the event system.