• Mike Hibler's avatar
    First crack at a frisbee "master server" for handling GET (download) requests. · a2a896ab
    Mike Hibler authored
    There are a couple of new packet types in the frisbee protocol which are
    exchanged via TCP with the master server: GETREQUEST and GETREPLY.  The
    client passes to the master server an opaque imageid and a couple of options
    and gets back the addr/port to use to actually download the image.  The
    implementation of the master server is fragile and is more of a test
    framework, Grant is working on a more robust master server.  I am mostly
    doing a backend that communicates with the Emulab DB to do its authentication
    and making the client changes.
    
    The client now uses the -S option to specify the IP address of the master
    server and the -F option to specify an imageid.  If no error is returned,
    the image is downloaded using the returned addr/port.  If -Q is used in place
    of -F, then the client makes a "status only" call getting back info about
    whether the named image is accessible to the client and whether a server is
    currently running.
    
    On the server side, the new master server (mserver.c) has an Emulab
    configuration "backend" that supports host-based authentication.
    The IP address of the caller is mapped to a node_id/pid/gid/eid combo
    that is used to determine access.  On a request, the specified imageid is
    treated either as a pathname (if it starts with '/') or an image identifier
    of the form "<pid>/<imagename>".  If it is a pathname, we check to make
    sure that pathname (after running through "realpath") is contained in one
    of the directories accessible to that node in its current experiment context;
    i.e., /share, /proj/<pid>, /groups/<pid>/<gid>, or /users/<swapper-uid>.
    If it is an image identifier, the DB is queried to ensure that access is
    allowed to that image; i.e., it must be "global" or in the appropriate
    project/group.
    
    The master server forks a frisbeed for each valid request, if one is not
    already running.  The multicast address selection is still based on the
    emulab_indicies.frisbee_index field, but the address/port/server info is no
    longer stored in the frisbee_blobs table (frisbee_pid, load_address,
    load_busy are not set).
    
    Note that this is not yet integrated in the os_load path.  Further work is
    required to replace frisbeelauncher.
    a2a896ab
Name
Last commit
Last update
account Loading commit data...
apache Loading commit data...
assign Loading commit data...
autoconf Loading commit data...
backend Loading commit data...
bugdb Loading commit data...
capture Loading commit data...
cdrom Loading commit data...
collab Loading commit data...
daikon Loading commit data...
db Loading commit data...
delay Loading commit data...
dhcpd Loading commit data...
discvr Loading commit data...
doc Loading commit data...
event Loading commit data...
firewall Loading commit data...
flash Loading commit data...
hw_config Loading commit data...
hyperviewer Loading commit data...
image-test Loading commit data...
install Loading commit data...
ipod Loading commit data...
lib Loading commit data...
mfs Loading commit data...
mote Loading commit data...
named Loading commit data...
node_usage Loading commit data...
os Loading commit data...
patches Loading commit data...
pelab Loading commit data...
protogeni Loading commit data...
pxe Loading commit data...
rc.d Loading commit data...
robots Loading commit data...
rpms Loading commit data...
security Loading commit data...
sensors Loading commit data...
sql Loading commit data...
ssl Loading commit data...
sysadmin Loading commit data...
tbsetup Loading commit data...
testsuite Loading commit data...
tip Loading commit data...
tmcd Loading commit data...
tools Loading commit data...
utils Loading commit data...
vis Loading commit data...
wiki Loading commit data...
www Loading commit data...
xmlrpc Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.loc-ignore Loading commit data...
AGPL-COPYING Loading commit data...
GNUmakefile.in Loading commit data...
GNUmakerules Loading commit data...
GPL-COPYING Loading commit data...
LGPL-COPYING Loading commit data...
MOVED-TO-WIKI Loading commit data...
Makeconf.in Loading commit data...
README Loading commit data...
TODO Loading commit data...
TODO.plab Loading commit data...
VERSION Loading commit data...
WEBtemplate.in Loading commit data...
config.h.in Loading commit data...
configure Loading commit data...
configure.in Loading commit data...
defs-aerolab Loading commit data...
defs-calfeld-emulab Loading commit data...
defs-davidand-emulab Loading commit data...
defs-default Loading commit data...
defs-duerig-emulab Loading commit data...
defs-elabinelab Loading commit data...
defs-example Loading commit data...
defs-example-privatecnet Loading commit data...
defs-fbsd7 Loading commit data...
defs-fish-emulab Loading commit data...
defs-gatech Loading commit data...
defs-gtw-emulab Loading commit data...
defs-johnsond-emulab Loading commit data...
defs-kevina-emulab Loading commit data...
defs-kwebb-emulab Loading commit data...
defs-mike-emulab Loading commit data...
defs-newbold-emulab Loading commit data...
defs-newbold-macdb Loading commit data...
defs-ricci-emulab Loading commit data...
defs-shash-emulab Loading commit data...
defs-stoller-emulab Loading commit data...
defs-stoller-home Loading commit data...
defs-stoller-lbsdb Loading commit data...
defs-uky Loading commit data...
defs-wbsun-emulab Loading commit data...
defs-wide Loading commit data...