Support for vnodes, plus some other changes:
1) Merge in the accounts code that I did for ron. Instead of resetting the password file on each reboot, look at the node status to determine if the password/group file should be reset. If the node is free, reset it. Otherwise, we track changes to the password and group file now, so that users can change it and not have their changes wiped out at each reboot. I had to do this for the ron nodes so that the testbed software would not alter or delete already existing accounts; I keep a couple of little dbm files listing all the accounts/groups added. The only downside right now is if a node is reallocated before it is wiped clean; I plan to add an os_teardown phase to experiment termination asap. 2) Add tunnels support. New DB table (tunnels) provides information for running vtund to link up to remote nodes. Creates a vtund.conf file on the fly, and fires them off. The complication is that you cannot do the ifconfigs or the routes until the tunnels are connected, so that stuff has to be configured within the vtund.conf file on a per tunnel basis. vtund.conf has some sections for running commands when tunnels are brought up or down. 3) Damage the routing configuration code that Mike did. To support tunnels, as noted above, rc,route is no longer a simple list of commands, but a program that adds/dels routes based on the netmask, with a special "enable" section for the other stuff. This allows me to call it from vtund.conf for up/down on each tunnel'ed interfaces, as needed. Quite gross, but no way around it. 4) For remote nodes, add a vnodesetup script, invoked from boss when experiments are setup/torndown. This gets the tunnel/route/trafgen configuration and runs them. It then goes into the background waiting for a death signal, at which time it brings them down and cleans out the vnode state.
Showing with 1430 additions and 651 deletions