1. 30 Apr, 2002 2 commits
  2. 29 Apr, 2002 2 commits
  3. 26 Apr, 2002 2 commits
  4. 25 Apr, 2002 1 commit
    • Leigh B. Stoller's avatar
      Fix contributed by Brian. The general idea is to allow global · 0f774f51
      Leigh B. Stoller authored
      variables to be renamed from within a subroutine:
      
      	proc create_testnet {} {
      		set s1 [$ns node]
       	}
      
      Chris' redefined set did not allow this. This is further complicated
      by the fact that its difficult to tell whats a global variable. You
      can declare a variable global, but until its set for the first time,
      the TCL info function will not tell you its a global. We do not want
      to rename locals of course, since that would make no sense to do.
      Anyway, Brian contributed the code to fix the new set function, and I
      looked at it and did my best to understand it (I kinda do), but no way
      I can be sure! I ran it through the test suite and spot checked the DB
      state. Seems to work okay.
      0f774f51
  5. 24 Apr, 2002 1 commit
    • Leigh B. Stoller's avatar
      Add trafgen/reset event for Mike. The event only goes to the traffic · 50515097
      Leigh B. Stoller authored
      source, which is something of a problem. The ugly solution right now
      is to send reset events to both the source and sink (sink first I
      would think) if you need both sides to get it.
      
      	$ns at 1 "$null0 reset"
      	$ns at 1 "$cbr0 reset"
      
      Another option might be to internally create the second event for
      reset ...
      50515097
  6. 23 Apr, 2002 1 commit
  7. 22 Apr, 2002 9 commits
  8. 18 Apr, 2002 2 commits
  9. 17 Apr, 2002 2 commits
    • Robert Ricci's avatar
      Moved EventSend calls to the TBSetNodeEventState() function. This has · 15c13c32
      Robert Ricci authored
      two benefits: (1) More general (2) Regains ability to run without the
      event system. Previously, since programs that watned to set node state
      had to 'use event', this broke our ability to run without the event
      system. Now, we can do a check in libdb for the event system, and not
      use it if EVENTSYS is not set. If not, we update state in the database
      directly rather than sending an event.
      
      Also added equivalent calls for node operational mode, as well as new
      constants for both state and mode.
      
      Converted power and node_reboot to use this new scheme.
      15c13c32
    • Leigh B. Stoller's avatar
      A really twisted fix for routing from inside a lan. There is no set · 67cb051c
      Leigh B. Stoller authored
      way to determine the lan that both the source and nexthop are a part
      of.  find_link() only works when there is a duplex link from source to
      nexthop. If its a lan, do some ugly stuff.
      67cb051c
  10. 16 Apr, 2002 1 commit
  11. 15 Apr, 2002 2 commits
    • Leigh B. Stoller's avatar
      Oops, left in a debugging printf. · 8e206eed
      Leigh B. Stoller authored
      8e206eed
    • Leigh B. Stoller's avatar
      Add static routing support: · d881770b
      Leigh B. Stoller authored
      	# Turn on manual routing.
      	$ns rtproto Manual
      
      	# Set manual routes
      	$nodeA add-route $nodeC $nodeB
      	$nodeC add-route $nodeA $nodeB
      
      results in this information being returned from the tmcd routing
      command:
      
      	ROUTERTYPE=manual
      	ROUTE DEST=192.168.2.3 DESTTYPE=host DESTMASK=255.255.255.0 \
      		NEXTHOP=192.168.3.2 COST=0
      
      The reason for DESTTYPE and DESTMASK is so that we can also support
      routing to links and lans, since doing it on a per host basis if not
      only hugely tedious, but plain impossible if the destination node has
      multiple links; the add-route syntax takes a node, but we need the IP
      of the relevant link in order to run the route add commands on the
      nodes. So, I've "extended" the syntax of add-route so that you can
      give it a Link or a Lan as the dest:
      
      	$nodeA add-route $link0 $nodeB
      	$nodeA add-route [$ns link $nodeB $nodeC] $nodeB
      
      In this case, the DESTTYPE=net, and the netmask is no longer ignored;
      it is used in the route add command. Currently, the mask is hardwired
      in the DB to 255.255.255.0, but by providing it in the tmcd command,
      we change it later if needed.
      
      I did not implement add-route-to-adj-node since that is not really
      useful in our context, and we definitely do not want the user to
      change the default routes on his nodes. But, its easy to add if we
      need to.
      
      The client side stuff is not done yet.
      d881770b
  12. 11 Apr, 2002 1 commit
  13. 08 Apr, 2002 2 commits
    • Leigh B. Stoller's avatar
      Hmm, guess I did not commit this change along with the documentation: · 75377b0d
      Leigh B. Stoller authored
      Add "$ns rtproto Session" and change tge FAQ and tutorial as needed.
      75377b0d
    • Leigh B. Stoller's avatar
      Add generation of per-project email lists, as per Dave's request. The · 8cac9c47
      Leigh B. Stoller authored
      lists are stored on users:/etc/mail/lists. For example, you can send
      email to ron-users@users.emulab.net. An alias entry is added (and
      newaliases run) if there is no alias in /etc/mail/aliases (by the proxy
      of course). There are two new options to genelists (on boss):
      
      	"Use the -a option to generate lists for all projects.\n".
      	"Use the -n option to generate lists for a new user.\n";
      
      With no options, generate the all users and active users lists
      (renamed to emulab-users and emulab-active-users). With the -n option
      (used by mkacct) regen the lists for all the projects the user is a
      member of.
      
      It would be nice to archive the email, but that requires a publically
      readable directory and a u+S archive file; the mailer daemon runs as
      user daemon, and the project tree is 770, so it cannot write the
      archive file. At some point we will have to go to majordomo or spam
      filtering, when the first list is spamm'ed. Sigh.
      8cac9c47
  14. 03 Apr, 2002 1 commit
  15. 02 Apr, 2002 2 commits
    • Leigh B. Stoller's avatar
      Ah, the things I do. Added web page and backend script to scroll the · 07323144
      Leigh B. Stoller authored
      experiment log file to the user as it gets generated. The web page
      does not redraw, it just never exits until the backend sees that the
      experiement transition is done, and then it exists, which terminates
      the script. I added a DB field to hold the logfile name and some
      routines in libdb, with the idea that this might be more generally
      useful at some point. Next time you create an experiment, look for the
      last sentence, and click on "realtime".
      07323144
    • Leigh B. Stoller's avatar
      Bump max number of children to 20. · 2ad9ac28
      Leigh B. Stoller authored
      2ad9ac28
  16. 01 Apr, 2002 3 commits
    • Robert Ricci's avatar
      Transition to tmcd and event-based node state reporting. · 44311142
      Robert Ricci authored
      Changed scripts that used the 'eventstatus' column to use the more
      descriptively-named 'eventstate' column.
      
      The FreeBSD and Linux starup scripts report a 'REBOOTED' state to tmcd
      when they start, and 'ISUP' when the starup script is done.
      
      node_reboot and power now send TBNODESTATE/REBOOTING events.
      44311142
    • Robert Ricci's avatar
      Added a new exported constant, TB_BOSSNODE, that just contains the · a841a9f8
      Robert Ricci authored
      value of the BOSSNODE configure variable.
      a841a9f8
    • Leigh B. Stoller's avatar
      First cut at supporting RON (or more generally, remote nodes). · bd587829
      Leigh B. Stoller authored
      * tmcd/ron: A new directory of client code, based on the freebsd
        client code, but scaled back to the bare minimum. Does only account
        and group file maintenance. I redid the account stuff so that only
        emulab accounts are operated on. Does not require a stub file, but
        instead keeps a couple of local dbm files recording what groups and
        accounts were added by Emulab. There is a ton of paranoia checking
        to make sure that local accounts are not touched.
      
        The update script that runs on the client node detaches so that the
        ssh from boss returns immediately. update can also be run from the
        node periodically and at boottime. The script is installed setuid
        root, but checks to make sure that *only* root or "emulabman" has
        invoked it.
      
      * utils/sshremote: New file. For remote nodes, instead of using sshtb,
        use sshremote, which ssh's in as "emulabman", which needs to be a
        local non-root user, but with an authorized_keys file containing
        boss' public key.
      
      * web interface changes: Allow user to specify his own public key in
        addition to the emulab key.
      
        Add option in showexp page to update accounts on nodes in the
        experiment. I was originally intending to do this from approveuser,
        but this was easier and faster. I will add an option to do it on the
        approveuser page later.
      
      * libdb.pm: Add a TBIsNodeRemote() query to see if a node is in the
        local testbed or a pcRemote node. Currently, this test is hardwired
        to a check for class=pcRemote, but this will need to change to a
        node_types property at some point.
      
      * node_update: Reorg so that there is a maximum number of children
        created. Previously, a child was forked for each node, but that
        could chew up too many processes, especially for remote nodes which
        might hang up. For the same reason, we need to "lock" the experiment
        so that it cannot be terminated while a node_update is in progress.
        Might be to relax that, but this was easy for now. Also add
        distinction between local and remote, since for remote we use
        sshremote insted of sshtb. Various cleanup stuff
      
      * mkacct; When generating a new account, include user supplied pub key
        in the authorized keys file, in addition to the eumlab generated
        key. Both keys are stored in the DB in the users table. Anytime we
        update an account, get a fresh copy of the emulab pub key, in case
        user changes it.
      bd587829
  17. 28 Mar, 2002 1 commit
  18. 27 Mar, 2002 1 commit
    • Leigh B. Stoller's avatar
      Some small additions to support events after Chris' queue changes. · addc8b02
      Leigh B. Stoller authored
      Queue events have a new parameter in the arg list for link events:
      
      	ARGS="PIPE=pipe0 THRESH=8"
      
      This is kinda hacky right now; I do not have time to get all the stuff
      just right. The convention is that pipe0 is the first pipe in the list
      (left to right) and pipe1 is the other. We can worry about cleanup
      later.
      addc8b02
  19. 26 Mar, 2002 3 commits
  20. 25 Mar, 2002 1 commit