1. 10 Jan, 2005 2 commits
    • Mike Hibler's avatar
      aea704a4
    • Timothy Stack's avatar
      · 89bf0a7f
      Timothy Stack authored
      A bunch of engineering on the robot code.  I'm sure I've broken something,
      but the majority of it is done and I wanted to get a checkpoint in.
      
      	* GNUmakerules: Add rpcgen rules.
      
      	* Makeconf.in: Add PATH and host_cpu variables so
      	cross-compilation works properly.  Add JAVAC and JAR for java
      	compilation.  Add BRAINSTEM_DIR that refers to a brainstem build
      	directory to be used for the robot build.
      
      	* configure, configure.in: Prepend the arm cross-compile dir to
      	PATH.  Detect java for building applets.  Add --with-brainstem to
      	specify the brainstem build dir.  Add --enable-mezzanine to turn
      	on the mezzanine build.
      
      	* robots/GNUmakefile.in: Add client target that builds the
      	subdirs.
      
      	* robots/emc/GNUmakefile.in, robots/emc/emcd.h, robots/emc/emcd.c,
      	test_emcd.sh.in, robots/rmcd/GNUmakefile.in, robots/rmcd/rmcd.c,
      	robots/rmcd/test_rmcd.sh.in, robots/vmcd/test_vmc-client.sh.in,
      	robots/vmcd/test_vmcd.sh.in, robots/vmcd/test_vmcd2.sh,
      	robots/vmcd/test_vmcd3.sh, robots/vmcd/test_vmcd4.sh,
      	robots/vm...
      89bf0a7f
  2. 07 Jan, 2005 2 commits
    • Mike Hibler's avatar
      We don't have enough config time variables yet, so I added: · 2f6a197d
      Mike Hibler authored
      	FSNODE_IP
      	EXTERNAL_FSNODE_IP
      
      which default to ops' IP address if not set.  This allows for separate
      ops/fs nodes, a config Aero has.
      
      Also push some IP addresses (boss, ops, fs) into config.h so they can
      be used in C programs.  Specifically tmcd for returning values of
      "firewall variables" that can be used in default firewall rules.
      But I will likely wind up putting the var/value pairs in the DB rather
      than compiling them into tmcd.
      2f6a197d
    • Leigh B. Stoller's avatar
      Named setup gets a serious collagen injection ... As per Mike/Rob · cff2421e
      Leigh B. Stoller authored
      request, beef up named setup so that sites like DETER are handled
      properly. I have added 4 new defs variables:
      
          #
          # If your boss/ops nodes are multihomed (and typically, one of the
          # networks is a public routable network, and the other is an internal
          # unroutable network), then define the the external addresses here (and
          # the internal addresses above).
          #
          EXTERNAL_BOSSNODE_IP=$BOSSNODE_IP
          EXTERNAL_USERNODE_IP=$USERNODE_IP
      
          #
          # As above, if you have internal and external networks, define the
          # external network here, and the internal network above.
          #
          EXTERNAL_TESTBED_NETWORK=$TESTBED_NETWORK
          EXTERNAL_TESTBED_NETMASK=$TESTBED_NETMASK
      
      which if not set default to the internal values. When the external and
      internal networks are different, generate two sets of reverse zone
      files and two forward files (one internal and one external).
      cff2421e
  3. 03 Jan, 2005 1 commit
  4. 21 Dec, 2004 2 commits
    • Timothy Stack's avatar
      · 241132a3
      Timothy Stack authored
      Some cleanup of the robot vision system:
      
      	* Makeconf.in: Add INSTALL_INCDIR for includes, EVENTSYS for
      	whether or not the event system is available, HAVE_MEZZANINE for
      	whether or not we'll be building mezzanine, and GTK_CONFIG which
      	refers to the gtk-config binary, if there is one.
      
      	* config.h.in: Add HAVE_LINUX_VIDEODEV_H and HAVE_MEZZANINE
      	defines.
      
      	* configure, configure.in: Check for the robot vision system
      	dependencies.  Add mezzanine template files.
      
      	* robots/GNUmakefile.in: Add some conditionals for directories
      	that depend on the event-system and mezzanine.
      
      	* robots/mezzanine/GNUmakefile.in,
      	robots/mezzanine/libfg/GNUmakefile.in,
      	robots/mezzanine/libmezz/GNUmakefile.in,
      	robots/mezzanine/mezzanine/GNUmakefile.in,
      	robots/mezzanine/mezzcal/GNUmakefile.in,
      	robots/mezzanine/rtk2/GNUmakefile.in: Fold mezzanine into the
      	testbed's build system.
      
      	* robots/vmcd/GNUmakefile.in: When building the vmc-client, use
      	the mezzanine that we build locally instead of an installed
      	version.
      
      	* robots/vmcd/test_vmc-client.sh.in, robots/vmcd/test_vmcd.sh.in,
      	robots/vmcd/test_vmcd2.sh, robots/vmcd/test_vmcd3.sh,
      	robots/vmcd/test_vmcd4.sh: Bring the test cases up-to-date with
      	respect to the actual code.
      
      	* robots/vmcd/vmc-client.c: A bunch of cleanups and bug fixes: add
      	comments, set TCP_NODELAY on the client sockets (doh), etc...
      241132a3
    • Leigh B. Stoller's avatar
      Add configuration of named forwarders driven from NAMED_FORWARDERS · 2a1b6543
      Leigh B. Stoller authored
      variable in the defs file. Nice for elabinelab to avoid inner named
      from having to do too much work.
      2a1b6543
  5. 20 Dec, 2004 1 commit
  6. 16 Dec, 2004 2 commits
    • Robert Ricci's avatar
      Add support (admins only for now) for restarting the event system via · 1d13cde6
      Robert Ricci authored
      the web interface.
      1d13cde6
    • Leigh B. Stoller's avatar
      The panic button ... · 87dd2e60
      Leigh B. Stoller authored
      * tbsetup/panic.in: New backend script to implement the panic button
        feature. When used, it will cut the severe the connection to the
        firewall node by using snmpit to disable the port. Sets the panic
        bit (and date) in the experiments table, and changes the state of
        the experiment from "active" to "paniced" to ensure that the
        experiment cannot be messed with (swapped out or modified). Sends
        email to tbops when the panic button is pressed.
      
        Used with -r option, reverses the above. State is set back to
        active, the panic bit is cleared, and the port is renabled with
        snmpit.
      
      * tbsetup/tbswap.in: During swapout, a firewalled experiment that has
        been paniced will get a cleaning; The nodes are powered off, then
        the osids for all the nodes are reset (with os_select) so that they
        will boot the MFS, and then the nodes are powered on. Then the
        control network is turned back on, and then I wait for the nodes to
        reboot (this is simply cause we do not record in the DB that a node
        is turned off, and if I do not wait, the reload daemon will end
        hitting the power button again if they do not reboot in time. We can
        fix this later.
      
        I am not planning to apply this to general firewalled experiments
        yet as the power cycling is going to be hard on the nodes, so would
        rather that we at least have a 1/2 baked plan before we do that.
      
      * www/showexp.php3: If experiment is firewalled, show the Panic
        Button, linked to the panic button web script. If the experiment has
        already had the panic button pressed, show a big warning message and
        explain that user must talk to tbops to swap the experiment out.
        Also fiddle with menu options so that the terminate link is gone,
        and the swap link is visible only in admin mode. In other words, only
        an admin person can swap an experiment once it is paniced. And of
        course, an admin person can the backend panic script above with the
        -r option, but thats not something to be done lightly.
      
      * db/libdb.pm.in: Add "paniced" as an experiment state (EXPTSTATE_PANICED).
        Add utility functions: TBExptSetPanicBit(), TBExptGetPanicBit(), and
        TBExptClearPanicBit().
      
      * tbsetup/swapexp.in: Minor state fiddling so that an experiment can
        be swapped while in paniced state, but only when in admin mode. Also
        clear the panic bit when experiment is swapped out.
      
      * www/dbdefs.php3.in: Add "paniced" as an experiment state. Add a
        utility function TBExptFirewall() to see if experiment is firewalled.
      
      * www/panicbutton.php3: New web script to invoke the backend panic
        script mentioned above, after the usual confirm song and dance.
      
      * www/panicbutton.gif: New gif of a red panic button that I stole off
        the net. If anyone has sees/has a better one, feel free to replace
        this one.
      
      * utils/node_statewait.in: Add -s option so that I can pass in the
        state I want to wait for (used from tbswap above to wait for nodes
        to reach ISUP after power on).
      87dd2e60
  7. 15 Dec, 2004 1 commit
    • Robert Ricci's avatar
      Blinky light support for motes on stargates. · 9323263d
      Robert Ricci authored
      Display a new 'Blinky Lights' button on the showexp page. In order to
      do this, I have to get a list of which classes/types are in use in
      the experiment.
      
      This leads to moteleds.php3, which displays the blink lights using
      Tim's cool Java applet.
      9323263d
  8. 14 Dec, 2004 1 commit
  9. 13 Dec, 2004 2 commits
    • Robert Ricci's avatar
      New script: tbsgmotepower - · b63374eb
      Robert Ricci authored
      	A script for powering on, off, and cycling motes attached to
      	stargates
      
      Requires /usr/local/bin/motepower (our program, not yet in CVS) to be
      installed on the hosting stargate.
      b63374eb
    • Timothy Stack's avatar
      · fde7ae29
      Timothy Stack authored
      Rmcd and garcia stuff:
      
      	* configure, configure.in: Add robot related template files.
      
      	* robots/GNUmakefile.in: Add primotion directory.
      
      	* robots/emc/emcd.c: Debugging printfs, check the status for
      	update-position messages from rmc, and add a basic handler for
      	emulab clients.
      
      	* robots/emc/test_emcd.sh.in: Update for changes in mtp.
      
      	* robots/mtp/mtp.h, robots/mtp/mtp.c: Changes for the garcia.
      
      	* robots/mtp/mtp_send.c: Fixes so that it will compile under
      	linux.
      
      	* robots/primotion/GNUmakefile.in: Makefile for building a fake
      	gorobot in the testbed tree.
      
      	* robots/primotion/Makefile: tweaks
      
      	* robots/primotion/gorobot.cc: First draft with sort-of working
      	networking code.
      
      	* robots/primotion/test_gorobot.sh.in: Test case for the fake
      	gorobot.
      
      	* robots/primotion/dgrobot/GNUmakefile.in: Makefile for building a
      	fake grobot class in the testbed tree.
      
      	* robots/primotion/dgrobot/grobot.h: Add #if !defined(GROBOT_SIM)
      	conditionals.
      
      	* robots/primotion/dgrobot/grobot_sim.cc: Empty impl of grobot
      	class used for testing.
      
      	* robots/rmcd/GNUmakefile.in: Targets for building rmcd and
      	running its test case.
      
      	* robots/rmcd/rmcd.c: First draft with sort-of working networking
      	code.
      
      	* robots/rmcd/test_emcd.config: emcd configuration for the rmcd
      	test case.
      
      	* robots/rmcd/test_rmcd.sh.in: Test case for rmcd.
      fde7ae29
  10. 10 Dec, 2004 1 commit
    • Timothy Stack's avatar
      · d286c0cb
      Timothy Stack authored
      Start on vmc:
      
      	* configure, configure.in: Add vmcd related template files.
      
      	* robots/GNUmakefile.in: Switch order of vmcd/rmcd.
      
      	* robots/emc/GNUmakefile.in: cleanup
      
      	* robots/mtp/GNUmakefile.in: Add mtp_dump tool.
      
      	* robots/mtp/mtp.c: Change mtp_encode_packet to use a passed in
      	buffer pointer or allocate a buffer if its NULL, probably gonna be
      	a big source of errors...
      
      	* robots/mtp/mtp_dump.c: Another command-line tool that connects
      	to a server and dumps mtp packets that are received.  Useful for
      	seeing output from the vmc-client.
      
      	* robots/vmcd/GNUmakefile.in: Add vmc-client and test case.
      
      	* robots/vmcd/test_vmc-client.sh.in: Test case for the vmc-client.
      
      	* robots/vmcd/vmc-client.c: First cut of the vmc-client, it reads
      	mezzanine output and sends it to any connected clients.
      d286c0cb
  11. 09 Dec, 2004 1 commit
    • Timothy Stack's avatar
      · 1f16a276
      Timothy Stack authored
      Make the dots move on the robot map web page:
      
      	* configure, configure.in: Add robots/emc/loclistener.
      
      	* event/lib/event.h, event/lib/event.c: Add some helper functions
      	for sending events and parsing args.
      
      	* event/lib/tbevent.py.tail, event/lib/tbevent.py: Add support for
      	clients that register using keyfiles.
      
      	* robots/emc/GNUmakefile.in: Install loclistener on boss.
      
      	* robots/emc/emcd.h, robots/emc/emcd.c: Send update events every
      	two seconds with the node's location.  Fill out a little more of
      	the event callback, not sure what to do with the requested
      	destination though.  Add some code to the vmc callback to store
      	position updates.  Changed the config file format to also include
      	the vname of the robot.
      
      	* robots/emc/loclistener.in: Listen for NODE MODIFY events with
      	coordinates and update the database accordingly.  Kinda sucks, but
      	it works.
      
      	* robots/emc/test_emcd.config: Add vnames to the robots to reflect
      	change in the config file format.
      
      	* tbsetup/ns2ir/node.tcl: Add nodes to the virt_agents table.
      1f16a276
  12. 08 Dec, 2004 1 commit
    • Timothy Stack's avatar
      · feea9720
      Timothy Stack authored
      Elvinize emc and some bug fixes...
      
      	* configure, configure.in: Add "robots/emc/test_emcd.sh" script to
      	the list of template files.
      
      	* robots/GNUmakefile.in: Add a target for install-subdir.
      
      	* robots/emc/GNUmakefile.in: Compile emcd and install it on ops.
      	Add test_emcd.sh test case.
      
      	* robots/emc/emcd.h, robots/emc/emcd.c: Elvinize, add support for
      	events, and some minor cleanup.
      
      	* robots/emc/robot_list.c: Compilation fixes.
      
      	* robots/emc/test_emcd.config: Robot config for the test case.
      
      	* robots/emc/test_emcd.sh.in: Test case for emcd, just starts it
      	up and uses mtp_send to send a few messages to it.
      
      	* robots/mtp/GNUmakefile.in: Install mtp_send and mtp_recv on ops.
      
      	* robots/mtp/mtp.h, robots/mtp/mtp.c: Marshall floats correctly,
      	doh!  Move the packet printing code from mtp_recv to the lib.
      
      	* robots/mtp/mtp_recv.c: Move the packet printing code to the
      	lib.
      
      	* robots/mtp/mtp_send.c: Add a "-w" option to wait for a response
      	from the peer and then dump the packet to stdout.  Allow multiple
      	packets to be sent from a single invocation, the arguments for
      	each packet must be separated by a double dash (--), see
      	test_emcd.sh.in for an example.
      
      	* robots/mtp/mtp_test.c: Gah, test with actual floating point
      	values dummy.
      feea9720
  13. 07 Dec, 2004 1 commit
    • Timothy Stack's avatar
      · 0ed6b518
      Timothy Stack authored
      Command line tools for the robot protocol:
      
      	* configure, configure.in: Add the robots GNUmakefiles.
      
      	* robots/mtp/GNUmakefile.in: Add command line tools: mtp_send and
      	mtp_recv.
      
      	* robots/mtp/mtp.c: Make readall return an error if all of the
      	data wasn't read instead of making the caller check.  Free the
      	buffer allocated in mtp_send_packet.  Add an mtp_free_packet.
      
      	* robots/mtp/mtp_recv.c: Faux receiver of mtp packets, it doesn't
      	actually follow the protocol, it just prints out whatever it
      	receives.
      
      	* robots/mtp/mtp_send.c: Command line tool for sending mtp
      	packets.
      0ed6b518
  14. 22 Nov, 2004 1 commit
  15. 16 Nov, 2004 1 commit
    • Leigh B. Stoller's avatar
      ElabInElab Addition: New script that uses the frisbee client to · 6777d279
      Leigh B. Stoller authored
      download images from the outer emulab. This script is invoked from
      frisbeelauncher when ELABINELAB=1 and the filename does not exist
      (thus attempting to get the image file before bailing). The
      frisbeeimage script uses a new method in the RPC server to fire up a
      frisbeed (using frisbeelauncher on the outer Emulab), subject to the
      usual permission checks against creator of the elabinelab experiment
      (I assume that the creator will have access to any outer images that
      are used inside the inner emulab). If outer frisbeelauncher succeeds,
      its return value is the load_address (IP:port), which is used to fire
      up a frisbee client to get the image file and write it out (using
      Mike's new -N option that just dumps the raw data to file). Once the
      image is downloaded, control returns to inner frisbeelauncher and
      proceeds as normal.
      
      I whacked this together pretty quickly. Under heavy usage it might hit
      a race condition or two, but I do not expect that to happen in an
      inner elab for a while.
      6777d279
  16. 15 Nov, 2004 3 commits
  17. 12 Nov, 2004 1 commit
  18. 08 Nov, 2004 3 commits
  19. 07 Nov, 2004 1 commit
  20. 01 Nov, 2004 1 commit
  21. 29 Oct, 2004 3 commits
  22. 26 Oct, 2004 1 commit
  23. 25 Oct, 2004 2 commits
  24. 08 Oct, 2004 1 commit
  25. 07 Oct, 2004 1 commit
  26. 05 Oct, 2004 1 commit
  27. 04 Oct, 2004 1 commit
    • Leigh B. Stoller's avatar
      Add several configure variables to the defs file so that the ssl certificates · ad3a6c5b
      Leigh B. Stoller authored
      (config files) can be localized:
      
      	C                      = @SSLCERT_COUNTRY@
      	ST                     = @SSLCERT_STATE@
      	L                      = @SSLCERT_LOCALITY@
      	O                      = @SSLCERT_ORGNAME@
      
      Which are initialized locally to:
      
      	SSLCERT_COUNTRY="US"
      	SSLCERT_STATE="Utah"
      	SSLCERT_LOCALITY="Salt Lake City"
      	SSLCERT_ORGNAME="Utah Network Testbed"
      
      Also added an "apache" target which will generate an initial cert/key
      for the apache server. This is a self signed certificate of course, which
      is fine for getting a new site off the ground. Note that the cert/key are
      installed during by install/boss-install.
      ad3a6c5b
  28. 01 Oct, 2004 1 commit