This commit is intended to makes the license status of Emulab and
ProtoGENI source files more clear. It replaces license symbols like
"EMULAB-COPYRIGHT" and "GENIPUBLIC-COPYRIGHT" with {{{ }}}-delimited
blocks that contain actual license statements.
This change was driven by the fact that today, most people acquire and
track Emulab and ProtoGENI sources via git.
Before the Emulab source code was kept in git, the Flux Research Group
at the University of Utah would roll distributions by making tar
files. As part of that process, the Flux Group would replace the
license symbols in the source files with actual license statements.
When the Flux Group moved to git, people outside of the group started
to see the source files with the "unexpanded" symbols. This meant
that people acquired source files without actual license statements in
them. All the relevant files had Utah *copyright* statements in them,
but without the expanded *license* statements, the licensing status of
the source files was unclear.
This commit is intended to clear up that confusion.
Most Utah-copyrighted files in the Emulab source tree are distributed
under the terms of the Affero GNU General Public License, version 3
(AGPLv3).
Most Utah-copyrighted files related to ProtoGENI are distributed under
the terms of the GENI Public License, which is a BSD-like open-source
license.
Some Utah-copyrighted files in the Emulab source tree are distributed
under the terms of the GNU Lesser General Public License, version 2.1
(LGPL).

tb-set-node-plab-role $plc plc
to make it the PLC node. Then any number of other nodes are declared as:
tb-set-node-plab-role $plab1 node
to make them inner plab nodes. Unlike elabinelab, there is no magic
"tb-plab-in-elab" command which implies the topology, you put all the
plab nodes in a LAN or whatever yourself. This may or may not be a good idea.
Anyway, these NS commands set DB state in virt_nodes and reserved much like
elabinelab. During swapin, the dhcpd.conf file is rewritten so that
inner plab nodes have their "filename" set to "pxelinux.0" and their
"next-server" set to the designated PLC node. The PLC node will then be
loaded/booted before anything is done to the inner-plab nodes. After
it comes up, the inner plab nodes are rebooted and declared as up.
There is a new tmcd command "eplabconfig" (suggestions for a new name
welcom!), which returns info like:
NAME=plc ROLE=plc IP=155.98.36.3 MAC=00d0b713f57d
NAME=plab1 ROLE=node IP=155.98.36.10 MAC=0002b3877a4f
NAME=plab2 ROLE=node IP=155.98.36.34 MAC=00d0b7141057
to just the PLC node (returns nothing to any other node).
The implications of this setup are:
* The PLC node must act as a TFTP server as we have discussed in the past.
The TMCC info above is hopefully enough to configure pxelinux, if not
we can change it.
* The PLC node is responsible for loading the disks of inner plab nodes.
This is implied by the setup, where we change the dhcpd.conf file before
doing anything to the inner nodes. Thus, once the inner nodes are
rebooted, they will be talking pxelinux with PLC, and not to boss.
This step is dubious, as we could no doubt load the disks faster than
whatever plab uses can. But it simplified the setup (and is more
realistic!). The alternative, which is something that might be useful
anyway, is to introduce a "state" after which nodes have been reloaded
but before they are rebooted. With that, we can reload the plab nodes
and then change the dhcpd.conf file so when they reboot they start
talking to the PLC.