branch merge
authorCraig Dowell <craigdo@ee.washington.edu>
Fri, 10 Oct 2008 15:26:32 -0700
changeset 3797 9f03fc6f7296
parent 3796 75c6a3d424d9 (current diff)
parent 3741 dae14c4979dd (diff)
child 3798 898d8a14b88f
branch merge
doc/manual/figures/internet-node-recv.obj
doc/manual/figures/internet-node-send.obj
doc/manual/figures/node.obj
doc/manual/figures/packet.obj
doc/tutorial/figures/helpers.obj
--- a/doc/manual/Makefile	Fri Oct 10 15:24:56 2008 -0700
+++ b/doc/manual/Makefile	Fri Oct 10 15:26:32 2008 -0700
@@ -1,35 +1,22 @@
 TEXI2HTML = texi2html
 TEXI2PDF = texi2dvi --pdf
 EPSTOPDF = epstopdf
-TGIF = tgif 
 DIA = dia
 CONVERT = convert
 CSS = --css-include=manual.css
 SPLIT = --split section
 
-DIA_SOURCES = buffer.dia sockets-overview.dia
-TGIF_SOURCES = packet.obj node.obj internet-node-send.obj internet-node-recv.obj 
+DIA_SOURCES = internet-node-send.dia internet-node-recv.dia packet.dia node.dia buffer.dia sockets-overview.dia
 DIA_EPS = ${DIA_SOURCES:.dia=.eps}
 DIA_PNG = ${DIA_SOURCES:.dia=.png}
 DIA_PDF = ${DIA_SOURCES:.dia=.pdf}
 
-TGIF_EPS = ${TGIF_SOURCES:.obj=.eps}
-TGIF_PNG = ${TGIF_SOURCES:.obj=.png}
-TGIF_PDF = ${TGIF_SOURCES:.obj=.pdf}
-
 all:  images html split-html pdf
 
-# Note:  tgif requires a valid x display to convert from .obj to .png.  
-#        If running this makefile on a remote console, the X virtual frame
-#        buffer may be needed (xorg-x11-server-Xvfb) to provide a "fake"
-#        display
 images:
 	cd figures/; $(DIA) -t png $(DIA_SOURCES) 
 	cd figures/; $(DIA) -t eps $(DIA_SOURCES) 
 	cd figures/; $(foreach FILE,$(DIA_EPS),$(EPSTOPDF) $(FILE);)
-	cd figures/; $(TGIF) -print -png $(TGIF_SOURCES) 
-	cd figures/; $(TGIF) -print -eps $(TGIF_SOURCES) 
-	cd figures/; $(foreach FILE,$(TGIF_EPS),$(EPSTOPDF) $(FILE);)
 
 html: images
 	$(TEXI2HTML) ${CSS} manual.texi
@@ -42,7 +29,6 @@
 
 figures-clean:
 	cd figures/; rm -rf $(DIA_EPS); rm -rf $(DIA_PNG); rm -rf $(DIA_PDF)
-	cd figures/; rm -rf $(TGIF_EPS); rm -rf $(TGIF_PNG); rm -rf $(TGIF_PDF)
 
 clean: figures-clean
 	rm -rf manual.aux manual.cp manual.cps manual.fn manual.ky manual.pg manual.tp manual.vr manual.toc manual.log manual.pdf manual.html manual/ 
--- a/doc/manual/figures/README	Fri Oct 10 15:24:56 2008 -0700
+++ b/doc/manual/figures/README	Fri Oct 10 15:26:32 2008 -0700
@@ -1,18 +1,18 @@
 Please write image files in a vector graphics format, when possible, and
 generate the .png and .pdf versions on the fly (see ../Makefile).  
 
-Currently supported tools are dia and tgif.  xfig could be added similarly
+The currently supported tool is dia.  xfig could be added similarly
 if someone wants to add it.  The main requirement for adding another format
 is that the tool to edit it is freely available and that a cron script can 
-autogenerate the pdf and png from the figure source.
+autogenerate the pdf and png from the figure source.  Tgif (.obj) files
+were once used but the file conversions require a valid X display to 
+be running, and are therefore to be avoided since our code server 
+does not run such a server.  Tgif pdf conversions were also cumbersome.
 
-Store the .dia, or .obj versions in mercurial, but not the .png or .pdfs.  
+Store the .dia versions in mercurial, but not the .png or .pdfs.  
 If the figure is not available in a vector graphics format, store both
 a .png and a .pdf version in this directory.
 
-If you add a source (.dia, .obj) file here, remember to add it to
+If you add a source (.dia) file here, remember to add it to
 the list of figure sources in the Makefile in the directory above
 
-Note:  tgif can convert from .obj to .pdf, but the pdf that results takes
-up a whole page.  Instead, we convert to an intermediate .eps step, and
-then run epstopdf.
Binary file doc/manual/figures/internet-node-recv.dia has changed
--- a/doc/manual/figures/internet-node-recv.obj	Fri Oct 10 15:24:56 2008 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,380 +0,0 @@
-%TGIF 4.1.43-QPL
-state(0,37,100.000,154,78,0,16,0,9,1,1,0,0,3,0,1,0,'Times-Roman',0,80640,0,3,0,10,0,0,1,1,0,16,0,0,1,1,1,1,1088,1408,1,0,2880,0).
-%
-% @(#)$Header$
-% %W%
-%
-unit("1 pixel/pixel").
-color_info(11,65535,0,[
-	"magenta", 65535, 0, 65535, 65535, 0, 65535, 1,
-	"red", 65535, 0, 0, 65535, 0, 0, 1,
-	"green", 0, 65535, 0, 0, 65535, 0, 1,
-	"blue", 0, 0, 65535, 0, 0, 65535, 1,
-	"yellow", 65535, 65535, 0, 65535, 65535, 0, 1,
-	"pink", 65535, 49344, 52171, 65535, 49344, 52171, 1,
-	"cyan", 0, 65535, 65535, 0, 65535, 65535, 1,
-	"CadetBlue", 24415, 40606, 41120, 24415, 40606, 41120, 1,
-	"white", 65535, 65535, 65535, 65535, 65535, 65535, 1,
-	"black", 0, 0, 0, 0, 0, 0, 1,
-	"DarkSlateGray", 12079, 20303, 20303, 12079, 20303, 20303, 1
-]).
-script_frac("0.6").
-fg_bg_colors('black','white').
-dont_reencode("FFDingbests:ZapfDingbats").
-page(1,"",1,'').
-group([
-rcbox('black','',161,586,241,634,2,1,1,0,16,125,0,0,0,0,'1',0,[
-]),
-text('black',161,605,1,0,1,72,18,124,13,5,0,0,0,0,2,72,18,0,0,"",0,0,0,0,618,'',[
-minilines(72,18,0,0,0,0,0,[
-mini_line(72,13,5,0,0,0,[
-str_block(0,72,13,5,0,0,0,0,0,[
-str_seg('black','Courier',0,80640,72,13,5,0,0,0,0,0,0,0,
-	"NetDevice")])
-])
-])])
-],
-141,0,0,[
-]).
-group([
-rcbox('black','',147,77,255,125,2,1,1,0,16,354,0,0,0,0,'1',0,[
-]),
-text('black',163,96,1,0,1,88,18,353,13,5,0,0,0,0,2,88,18,0,0,"",0,0,0,0,109,'',[
-minilines(88,18,0,0,0,0,0,[
-mini_line(88,13,5,0,0,0,[
-str_block(0,88,13,5,0,0,0,0,0,[
-str_seg('black','Courier',0,80640,88,13,5,0,0,0,0,0,0,0,
-	"Application")])
-])
-])])
-],
-352,0,0,[
-]).
-text('black',202,172,1,1,1,90,17,473,14,3,2,0,0,0,2,90,17,0,0,"",0,0,0,0,186,'',[
-minilines(90,17,0,0,1,0,0,[
-mini_line(90,14,3,0,0,0,[
-str_block(0,90,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,90,14,3,0,0,0,0,0,0,0,
-	"UdpSocketImpl")])
-])
-])]).
-rcbox('black','',132,165,269,198,0,1,1,0,16,474,0,0,0,0,'1',0,[
-]).
-text('black',202,241,1,1,1,78,17,475,14,3,2,0,0,0,2,78,17,0,0,"",0,0,0,0,255,'',[
-minilines(78,17,0,0,1,0,0,[
-mini_line(78,14,3,0,0,0,[
-str_block(0,78,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,78,14,3,0,0,0,0,0,0,0,
-	"Ipv4EndPoint")])
-])
-])]).
-rcbox('black','',132,234,269,267,0,1,1,0,16,476,0,0,0,0,'1',0,[
-]).
-text('black',202,338,1,1,1,88,17,488,14,3,2,0,0,0,2,88,17,0,0,"",0,0,0,0,352,'',[
-minilines(88,17,0,0,1,0,0,[
-mini_line(88,14,3,0,0,0,[
-str_block(0,88,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,88,14,3,0,0,0,0,0,0,0,
-	"UdpL4Protocol")])
-])
-])]).
-rcbox('black','',132,331,269,364,0,1,1,0,16,489,0,0,0,0,'1',0,[
-]).
-text('black',202,434,1,1,1,90,17,490,14,3,2,0,0,0,2,90,17,0,0,"",0,0,0,0,448,'',[
-minilines(90,17,0,0,1,0,0,[
-mini_line(90,14,3,0,0,0,[
-str_block(0,90,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,90,14,3,0,0,0,0,0,0,0,
-	"Ipv4L3Protocol")])
-])
-])]).
-rcbox('black','',132,427,269,460,0,1,1,0,16,491,0,0,0,0,'1',0,[
-]).
-text('black',585,11,1,0,1,179,17,496,14,3,0,0,0,0,2,179,17,0,0,"",0,0,0,0,25,'',[
-minilines(179,17,0,0,0,0,0,[
-mini_line(179,14,3,0,0,0,[
-str_block(0,179,14,3,0,-2,0,0,0,[
-str_seg('black','Times-Roman',0,80640,179,14,3,0,-2,1,0,0,0,0,
-	"Step in packet receive process:")])
-])
-])]).
-text('black',480,595,1,0,1,408,17,498,14,3,0,0,0,0,2,408,17,0,0,"",0,0,0,0,609,'',[
-minilines(408,17,0,0,0,0,0,[
-mini_line(408,14,3,0,0,0,[
-str_block(0,408,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,408,14,3,0,0,0,0,0,0,0,
-	"1.  NetDevice calls the function registered at Node::m_receiveCallback")])
-])
-])]).
-text('black',480,572,1,0,1,346,17,520,14,3,0,0,0,0,2,346,17,0,0,"",0,0,0,0,586,'',[
-minilines(346,17,0,0,0,0,0,[
-mini_line(346,14,3,0,0,0,[
-str_block(0,346,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,346,14,3,0,0,0,0,0,0,0,
-	"2.  This is typically the Node::ReceiveFromDevice() function")])
-])
-])]).
-text('black',479,509,3,0,1,460,51,524,14,3,0,0,0,0,2,460,51,0,0,"",0,0,0,0,523,'',[
-minilines(460,51,0,0,0,0,0,[
-mini_line(426,14,3,0,0,0,[
-str_block(0,426,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,426,14,3,0,-1,0,0,0,0,0,
-	"3.  Node::ReceiveFromDevice stores a set of callbacks (protocol handlers)")])
-]),
-mini_line(460,14,3,0,0,0,[
-str_block(0,460,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,460,14,3,0,-1,0,0,0,0,0,
-	" that are looked up based on protocol number and device.  In this case, the lookup")])
-]),
-mini_line(300,14,3,0,0,0,[
-str_block(0,300,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,300,14,3,0,-1,0,0,0,0,0,
-	"will result in Ipv4L3Protocol::Receive() being called.")])
-])
-])]).
-text('black',480,425,4,0,1,499,68,531,14,3,0,0,0,0,2,499,68,0,0,"",0,0,0,0,439,'',[
-minilines(499,68,0,0,0,0,0,[
-mini_line(475,14,3,0,0,0,[
-str_block(0,475,14,3,0,-2,0,0,0,[
-str_seg('black','Times-Roman',0,80640,475,14,3,0,-2,0,0,0,0,0,
-	"4.  Ipv4L3Protocol removes the IP header, checks checksum (if implemented), and ")])
-]),
-mini_line(467,14,3,0,0,0,[
-str_block(0,467,14,3,0,-2,0,0,0,[
-str_seg('black','Times-Roman',0,80640,467,14,3,0,-2,0,0,0,0,0,
-	"either Forwards the packet or calls ForwardUp().  ForwardUp() then looks up the ")])
-]),
-mini_line(499,14,3,0,0,0,[
-str_block(0,499,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,499,14,3,0,-1,0,0,0,0,0,
-	"IP protocol number in an IPv4L4Demux to obtain a pointer to an Ipv4L4Protocol object,")])
-]),
-mini_line(191,14,3,0,0,0,[
-str_block(0,191,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,191,14,3,0,-1,0,0,0,0,0,
-	"and calls the  ::Receive() method.")])
-])
-])]).
-text('black',281,548,1,0,1,140,17,541,14,3,2,0,0,0,2,140,17,0,0,"",0,0,0,0,562,'',[
-minilines(140,17,0,0,0,0,0,[
-mini_line(140,14,3,0,0,0,[
-str_block(0,140,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,140,14,3,0,-1,0,0,0,0,0,
-	"Node::ProtocolHandlers")])
-])
-])]).
-rcbox('black','',261,541,398,574,0,1,1,2,16,542,0,0,0,0,'1',0,[
-]).
-poly('black','',2,[
-	236,596,327,576],1,1,1,548,0,0,2,0,0,0,0,'1',0,0,
-    "0","",[
-    0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
-]).
-text('black',272,590,1,0,1,112,17,550,14,3,0,0,0,0,2,112,17,0,0,"",0,0,0,0,604,'',[
-minilines(112,17,0,0,0,0,0,[
-mini_line(112,14,3,0,0,0,[
-str_block(0,112,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,112,14,3,0,0,0,0,0,0,0,
-	"m_receiveCallback")])
-])
-])]).
-poly('black','',2,[
-	306,541,202,460],1,1,1,555,0,0,0,0,0,0,0,'1',0,0,
-    "0","",[
-    0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
-]).
-poly('black','',2,[
-	280,447,367,423],3,1,1,566,0,0,3,0,0,0,0,'1',0,0,
-    "0","",[
-    0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
-]).
-text('black',185,499,1,0,1,65,17,575,14,3,0,0,0,0,2,65,17,0,0,"",0,0,0,0,513,'',[
-minilines(65,17,0,0,0,0,0,[
-mini_line(65,14,3,0,0,0,[
-str_block(0,65,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,65,14,3,0,-1,0,0,0,0,0,
-	"::Receive()")])
-])
-])]).
-text('black',315,438,1,0,1,135,17,585,14,3,0,0,0,0,2,135,17,0,0,"",0,0,0,0,452,'',[
-minilines(135,17,0,0,0,0,0,[
-mini_line(135,14,3,0,0,0,[
-str_block(0,135,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,135,14,3,0,-1,0,0,0,0,0,
-	"::GetProtocol(protocol)")])
-])
-])]).
-poly('black','',2,[
-	201,426,201,366],1,1,1,593,0,0,0,0,0,0,0,'1',0,0,
-    "0","",[
-    0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
-]).
-text('black',211,390,1,0,1,65,17,597,14,3,0,0,0,0,2,65,17,0,0,"",0,0,0,0,404,'',[
-minilines(65,17,0,0,0,0,0,[
-mini_line(65,14,3,0,0,0,[
-str_block(0,65,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,65,14,3,0,-1,0,0,0,0,0,
-	"::Receive()")])
-])
-])]).
-text('black',480,291,6,0,1,438,102,612,14,3,0,0,0,0,2,438,102,0,0,"",0,0,0,0,305,'',[
-minilines(438,102,0,0,0,0,0,[
-mini_line(293,14,3,0,0,0,[
-str_block(0,293,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,293,14,3,0,0,0,0,0,0,0,
-	"5.  UdpL4Protocol is where the socket-independent")])
-]),
-mini_line(428,14,3,0,0,0,[
-str_block(0,428,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,428,14,3,0,0,0,0,0,0,0,
-	"protocol logic for UDP is implemented.  The Receive() method removes the")])
-]),
-mini_line(420,14,3,0,0,0,[
-str_block(0,420,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,420,14,3,0,0,0,0,0,0,0,
-	"UDP header and looks up the per-flow context state, which is one or more")])
-]),
-mini_line(438,14,3,0,0,0,[
-str_block(0,438,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,438,14,3,0,-1,0,0,0,0,0,
-	"Ipv4EndPoint objects stored in an Ipv4EndPointDemux (indexed by src addr,")])
-]),
-mini_line(405,14,3,0,0,0,[
-str_block(0,405,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,405,14,3,0,-1,0,0,0,0,0,
-	"src port, dest addr, dest port).  It then calls Ipv4EndPoint::ForwardUp()")])
-]),
-mini_line(66,14,3,0,0,0,[
-str_block(0,66,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,66,14,3,0,-1,0,0,0,0,0,
-	"when done.")])
-])
-])]).
-poly('black','',2,[
-	201,331,201,271],1,1,1,619,0,0,0,0,0,0,0,'1',0,0,
-    "0","",[
-    0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
-]).
-text('black',211,295,1,0,1,85,17,620,14,3,0,0,0,0,2,85,17,0,0,"",0,0,0,0,309,'',[
-minilines(85,17,0,0,0,0,0,[
-mini_line(85,14,3,0,0,0,[
-str_block(0,85,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,85,14,3,0,-1,0,0,0,0,0,
-	"::ForwardUp()")])
-])
-])]).
-poly('black','',2,[
-	282,335,369,311],3,1,1,630,0,0,3,0,0,0,0,'1',0,0,
-    "0","",[
-    0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
-]).
-text('black',317,326,1,0,1,62,17,631,14,3,0,0,0,0,2,62,17,0,0,"",0,0,0,0,340,'',[
-minilines(62,17,0,0,0,0,0,[
-mini_line(62,14,3,0,0,0,[
-str_block(0,62,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,62,14,3,0,-1,0,0,0,0,0,
-	"::Lookup()")])
-])
-])]).
-text('black',211,208,1,0,1,181,17,650,14,3,0,0,0,0,2,181,17,0,0,"",0,0,0,0,222,'',[
-minilines(181,17,0,0,0,0,0,[
-mini_line(181,14,3,0,0,0,[
-str_block(0,181,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,181,14,3,0,-1,0,0,0,0,0,
-	"(m_rxCallback)->ForwardUp()")])
-])
-])]).
-poly('black','',2,[
-	201,233,201,196],1,1,1,652,0,0,0,0,0,0,0,'1',0,0,
-    "0","",[
-    0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
-]).
-text('black',211,138,1,0,1,144,17,656,14,3,0,0,0,0,2,144,17,0,0,"",0,0,0,0,152,'',[
-minilines(144,17,0,0,0,0,0,[
-mini_line(144,14,3,0,0,0,[
-str_block(0,144,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,144,14,3,0,-1,0,0,0,0,0,
-	"(m_rxCallback)->Recv()")])
-])
-])]).
-text('black',149,17,1,0,1,321,21,683,17,4,0,0,0,0,2,321,21,0,0,"",0,0,0,0,34,'',[
-minilines(321,21,0,0,0,0,0,[
-mini_line(321,17,4,0,0,0,[
-str_block(0,321,17,4,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,103680,321,17,4,0,0,0,0,0,0,0,
-	"Function/object trace for receiving a packet")])
-])
-])]).
-poly('black','',2,[
-	199,163,199,126],1,1,1,691,0,0,0,0,0,0,0,'1',0,0,
-    "0","",[
-    0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
-]).
-group([
-text('black',311,280,1,0,1,120,17,484,14,3,0,0,0,0,2,120,17,0,0,"",0,0,0,0,294,'',[
-minilines(120,17,0,0,0,0,0,[
-mini_line(120,14,3,0,0,0,[
-str_block(0,120,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,120,14,3,0,0,0,0,0,0,0,
-	"Ipv4EndPointDemux")])
-])
-])]),
-polygon('black','',6,[
-	309,276,324,305,419,305,439,277,309,277,309,276],0,1,1,0,485,0,0,0,0,0,'1',0,
-    "00",[
-])
-],
-704,0,0,[
-]).
-text('black',480,190,3,0,1,363,51,708,14,3,0,0,0,0,2,363,51,0,0,"",0,0,0,0,204,'',[
-minilines(363,51,0,0,0,0,0,[
-mini_line(363,14,3,0,0,0,[
-str_block(0,363,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,363,14,3,0,-1,0,0,0,0,0,
-	"6.  Ipv4EndPoint has a callback where a Socket object is able to")])
-]),
-mini_line(304,14,3,0,0,0,[
-str_block(0,304,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,304,14,3,0,-1,0,0,0,0,0,
-	"register a receive method.  Here, this callback calls to")])
-]),
-mini_line(175,14,3,0,0,0,[
-str_block(0,175,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,175,14,3,0,-1,0,0,0,0,0,
-	"UdpSocketImpl::ForwardUp()")])
-])
-])]).
-text('black',480,106,3,0,1,446,51,712,14,3,0,0,0,0,2,446,51,0,0,"",0,0,0,0,120,'',[
-minilines(446,51,0,0,0,0,0,[
-mini_line(407,14,3,0,0,0,[
-str_block(0,407,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,407,14,3,0,0,0,0,0,0,0,
-	"7.  UdpSocketImpl itself calls the Recv() callback set by the Application")])
-]),
-mini_line(402,14,3,0,0,0,[
-str_block(0,402,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,402,14,3,0,0,0,0,0,0,0,
-	"when data is ready to be read.  The application can then call the socket")])
-]),
-mini_line(446,14,3,0,0,0,[
-str_block(0,446,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,446,14,3,0,-1,0,0,0,0,0,
-	"Recv() or RecvFrom() methods to read data (or dummy data) from the socket.")])
-])
-])]).
-group([
-text('black',308,393,1,0,1,96,17,772,14,3,0,0,0,0,2,96,17,0,0,"",0,0,0,0,407,'',[
-minilines(96,17,0,0,0,0,0,[
-mini_line(96,14,3,0,0,0,[
-str_block(0,96,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,96,14,3,0,0,0,0,0,0,0,
-	"    Ipv4L4Demux")])
-])
-])]),
-polygon('black','',6,[
-	306,389,321,418,416,418,436,390,306,390,306,389],0,1,1,0,771,0,0,0,0,0,'1',0,
-    "00",[
-])
-],
-770,0,0,[
-]).
Binary file doc/manual/figures/internet-node-send.dia has changed
--- a/doc/manual/figures/internet-node-send.obj	Fri Oct 10 15:24:56 2008 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,352 +0,0 @@
-%TGIF 4.1.43-QPL
-state(0,37,100.000,83,0,0,16,0,9,1,1,0,0,3,2,1,0,'Times-Roman',0,80640,0,3,0,10,0,0,1,1,0,16,0,0,1,1,1,1,1088,1408,1,0,2880,0).
-%
-% @(#)$Header$
-% %W%
-%
-unit("1 pixel/pixel").
-color_info(11,65535,0,[
-	"magenta", 65535, 0, 65535, 65535, 0, 65535, 1,
-	"red", 65535, 0, 0, 65535, 0, 0, 1,
-	"green", 0, 65535, 0, 0, 65535, 0, 1,
-	"blue", 0, 0, 65535, 0, 0, 65535, 1,
-	"yellow", 65535, 65535, 0, 65535, 65535, 0, 1,
-	"pink", 65535, 49344, 52171, 65535, 49344, 52171, 1,
-	"cyan", 0, 65535, 65535, 0, 65535, 65535, 1,
-	"CadetBlue", 24415, 40606, 41120, 24415, 40606, 41120, 1,
-	"white", 65535, 65535, 65535, 65535, 65535, 65535, 1,
-	"black", 0, 0, 0, 0, 0, 0, 1,
-	"DarkSlateGray", 12079, 20303, 20303, 12079, 20303, 20303, 1
-]).
-script_frac("0.6").
-fg_bg_colors('black','white').
-dont_reencode("FFDingbests:ZapfDingbats").
-page(1,"",1,'').
-group([
-rcbox('black','',158,451,238,499,2,1,1,0,16,125,0,0,0,0,'1',0,[
-]),
-text('black',158,470,1,0,1,72,18,124,13,5,0,0,0,0,2,72,18,0,0,"",0,0,0,0,483,'',[
-minilines(72,18,0,0,0,0,0,[
-mini_line(72,13,5,0,0,0,[
-str_block(0,72,13,5,0,0,0,0,0,[
-str_seg('black','Courier',0,80640,72,13,5,0,0,0,0,0,0,0,
-	"NetDevice")])
-])
-])])
-],
-141,0,0,[
-]).
-group([
-rcbox('black','',147,77,255,125,2,1,1,0,16,354,0,0,0,0,'1',0,[
-]),
-text('black',163,96,1,0,1,88,18,353,13,5,0,0,0,0,2,88,18,0,0,"",0,0,0,0,109,'',[
-minilines(88,18,0,0,0,0,0,[
-mini_line(88,13,5,0,0,0,[
-str_block(0,88,13,5,0,0,0,0,0,[
-str_seg('black','Courier',0,80640,88,13,5,0,0,0,0,0,0,0,
-	"Application")])
-])
-])])
-],
-352,0,0,[
-]).
-text('black',202,172,1,1,1,90,17,473,14,3,2,0,0,0,2,90,17,0,0,"",0,0,0,0,186,'',[
-minilines(90,17,0,0,1,0,0,[
-mini_line(90,14,3,0,0,0,[
-str_block(0,90,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,90,14,3,0,0,0,0,0,0,0,
-	"UdpSocketImpl")])
-])
-])]).
-rcbox('black','',132,165,269,198,0,1,1,0,16,474,0,0,0,0,'1',0,[
-]).
-text('black',202,241,1,1,1,88,17,475,14,3,2,0,0,0,2,88,17,0,0,"",0,0,0,0,255,'',[
-minilines(88,17,0,0,1,0,0,[
-mini_line(88,14,3,0,0,0,[
-str_block(0,88,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,88,14,3,0,0,0,0,0,0,0,
-	"UdpL4Protocol")])
-])
-])]).
-rcbox('black','',132,234,269,267,0,1,1,0,16,476,0,0,0,0,'1',0,[
-]).
-text('black',201,317,1,1,1,90,17,490,14,3,2,0,0,0,2,90,17,0,0,"",0,0,0,0,331,'',[
-minilines(90,17,0,0,1,0,0,[
-mini_line(90,14,3,0,0,0,[
-str_block(0,90,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,90,14,3,0,0,0,0,0,0,0,
-	"Ipv4L3Protocol")])
-])
-])]).
-rcbox('black','',131,310,268,343,0,1,1,0,16,491,0,0,0,0,'1',0,[
-]).
-text('black',540,56,1,0,1,180,17,496,14,3,0,0,0,0,2,180,17,0,0,"",0,0,0,0,70,'',[
-minilines(180,17,0,0,0,0,0,[
-mini_line(180,14,3,0,0,0,[
-str_block(0,180,14,3,0,-2,0,0,0,[
-str_seg('black','Times-Roman',0,80640,180,14,3,0,-2,1,0,0,0,0,
-	"Step in packet sending process:")])
-])
-])]).
-text('black',480,420,4,0,1,460,68,524,14,3,0,0,0,0,2,460,68,0,0,"",0,0,0,0,434,'',[
-minilines(460,68,0,0,0,0,0,[
-mini_line(457,14,3,0,0,0,[
-str_block(0,457,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,457,14,3,0,0,0,0,0,0,0,
-	"5.  Ipv4Interface is an abstract base class; here, we depict the ArpIpv4Interface")])
-]),
-mini_line(460,14,3,0,0,0,[
-str_block(0,460,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,460,14,3,0,-1,0,0,0,0,0,
-	"concrete class.  This object looks up the MAC address if Arp is supported on this")])
-]),
-mini_line(454,14,3,0,0,0,[
-str_block(0,454,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,454,14,3,0,0,0,0,0,0,0,
-	"NetDevice technology, and if there is a cache hit, it sends it to the NetDevice, or")])
-]),
-mini_line(197,14,3,0,0,0,[
-str_block(0,197,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,197,14,3,0,-1,0,0,0,0,0,
-	"else it first initiates an Arp request.")])
-])
-])]).
-text('black',479,354,3,0,1,476,51,531,14,3,0,0,0,0,2,476,51,0,0,"",0,0,0,0,368,'',[
-minilines(476,51,0,0,0,0,0,[
-mini_line(469,14,3,0,0,0,[
-str_block(0,469,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,469,14,3,0,0,0,0,0,0,0,
-	"4.  Ipv4L3Protocol adds the IP header, looks up a route, and sends the packet to an")])
-]),
-mini_line(476,14,3,0,0,0,[
-str_block(0,476,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,476,14,3,0,-1,0,0,0,0,0,
-	"appropriate Ipv4Interface instance.   In this example, the device is one that supports")])
-]),
-mini_line(322,14,3,0,0,0,[
-str_block(0,322,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,322,14,3,0,-1,0,0,0,0,0,
-	"Arp, so the packet is sent to an ArpIpv4Interface object.")])
-])
-])]).
-text('black',478,261,4,0,1,437,68,612,14,3,0,0,0,0,2,437,68,0,0,"",0,0,0,0,275,'',[
-minilines(437,68,0,0,0,0,0,[
-mini_line(293,14,3,0,0,0,[
-str_block(0,293,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,293,14,3,0,0,0,0,0,0,0,
-	"3.  UdpL4Protocol is where the socket-independent")])
-]),
-mini_line(387,14,3,0,0,0,[
-str_block(0,387,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,387,14,3,0,0,0,0,0,0,0,
-	"protocol logic for UDP is implemented.  The Send() method adds the")])
-]),
-mini_line(437,14,3,0,0,0,[
-str_block(0,437,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,437,14,3,0,-1,0,0,0,0,0,
-	"UDP header, initializes the checksum, and sends the packet to the Ipv4 layer.")])
-]),
-mini_line(431,14,3,0,0,0,[
-str_block(0,431,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,431,14,3,0,-1,0,0,0,0,0,
-	"Here, the Ipv4L3Protocol object is queried, and the Send() method is called.")])
-])
-])]).
-poly('black','',2,[
-	201,308,201,271],2,1,1,619,0,0,0,0,0,0,0,'1',0,0,
-    "0","",[
-    0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
-]).
-text('black',208,278,1,0,1,47,17,620,14,3,0,0,0,0,2,47,17,0,0,"",0,0,0,0,292,'',[
-minilines(47,17,0,0,0,0,0,[
-mini_line(47,14,3,0,0,0,[
-str_block(0,47,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,47,14,3,0,-1,0,0,0,0,0,
-	"::Send()")])
-])
-])]).
-text('black',211,208,1,0,1,47,17,650,14,3,0,0,0,0,2,47,17,0,0,"",0,0,0,0,222,'',[
-minilines(47,17,0,0,0,0,0,[
-mini_line(47,14,3,0,0,0,[
-str_block(0,47,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,47,14,3,0,-1,0,0,0,0,0,
-	"::Send()")])
-])
-])]).
-poly('black','',2,[
-	201,233,201,196],2,1,1,652,0,0,0,0,0,0,0,'1',0,0,
-    "0","",[
-    0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
-]).
-text('black',211,138,1,0,1,87,17,656,14,3,0,0,0,0,2,87,17,0,0,"",0,0,0,0,152,'',[
-minilines(87,17,0,0,0,0,0,[
-mini_line(87,14,3,0,0,0,[
-str_block(0,87,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,87,14,3,0,-1,0,0,0,0,0,
-	"Socket::Send()")])
-])
-])]).
-text('black',149,17,1,0,1,310,21,683,17,4,0,0,0,0,2,310,21,0,0,"",0,0,0,0,34,'',[
-minilines(310,21,0,0,0,0,0,[
-mini_line(310,17,4,0,0,0,[
-str_block(0,310,17,4,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,103680,310,17,4,0,0,0,0,0,0,0,
-	"Function/object trace for sending a packet")])
-])
-])]).
-poly('black','',2,[
-	199,163,199,126],2,1,1,691,0,0,0,0,0,0,0,'1',0,0,
-    "0","",[
-    0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
-]).
-text('black',480,153,6,0,1,524,102,708,14,3,0,0,0,0,2,524,102,0,0,"",0,0,0,0,167,'',[
-minilines(524,102,0,0,0,0,0,[
-mini_line(399,14,3,0,0,0,[
-str_block(0,399,14,3,0,-2,0,0,0,[
-str_seg('black','Times-Roman',0,80640,399,14,3,0,-2,0,0,0,0,0,
-	"2.  Socket::Send() forwards to UdpSocketImpl::DoSend() and later to ")])
-]),
-mini_line(173,14,3,0,0,0,[
-str_block(0,173,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,173,14,3,0,-1,0,0,0,0,0,
-	"UdpSocketImpl::DoSendTo().")])
-]),
-mini_line(479,14,3,0,0,0,[
-str_block(0,479,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,479,14,3,0,-1,0,0,0,0,0,
-	"These functions set the proper source and destination addresses, handle socket calls")])
-]),
-mini_line(524,14,3,0,0,0,[
-str_block(0,524,14,3,0,-2,0,0,0,[
-str_seg('black','Times-Roman',0,80640,524,14,3,0,-2,0,0,0,0,0,
-	"such as bind() and connect() and then the UdpL4Protocol::Send() function is called.  As in a ")])
-]),
-mini_line(505,14,3,0,0,0,[
-str_block(0,505,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,505,14,3,0,-1,0,0,0,0,0,
-	"real implementation, the socket must query the Ipv4 layer to find the right source address")])
-]),
-mini_line(187,14,3,0,0,0,[
-str_block(0,187,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,187,14,3,0,-1,0,0,0,0,0,
-	"to match the destination address.")])
-])
-])]).
-text('black',480,106,2,0,1,434,34,712,14,3,0,0,0,0,2,434,34,0,0,"",0,0,0,0,120,'',[
-minilines(434,34,0,0,0,0,0,[
-mini_line(413,14,3,0,0,0,[
-str_block(0,413,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,413,14,3,0,-1,0,0,0,0,0,
-	"1.  The Application has previously created a socket (here, a UdpSocket).")])
-]),
-mini_line(434,14,3,0,0,0,[
-str_block(0,434,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,434,14,3,0,-1,0,0,0,0,0,
-	"It calls Socket::Send().  Either real data or dummy data is passed at the API.")])
-])
-])]).
-text('black',377,315,1,1,1,60,17,774,14,3,2,0,0,0,2,60,17,0,0,"",0,0,0,0,329,'',[
-minilines(60,17,0,0,1,0,0,[
-mini_line(60,14,3,0,0,0,[
-str_block(0,60,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,60,14,3,0,0,0,0,0,0,0,
-	"Ipv4Route")])
-])
-])]).
-rcbox('black','',307,308,444,341,0,1,1,0,16,775,0,0,0,0,'1',0,[
-]).
-poly('black','',2,[
-	267,325,304,325],3,1,1,787,0,0,3,0,0,0,0,'1',0,0,
-    "0","",[
-    0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
-]).
-text('black',278,299,1,0,1,62,17,796,14,3,2,0,0,0,2,62,17,0,0,"",0,0,0,0,313,'',[
-minilines(62,17,0,0,0,0,0,[
-mini_line(62,14,3,0,0,0,[
-str_block(0,62,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,62,14,3,0,-1,0,0,0,0,0,
-	"::Lookup()")])
-])
-])]).
-text('black',200,385,1,1,1,102,17,803,14,3,2,0,0,0,2,102,17,0,0,"",0,0,0,0,399,'',[
-minilines(102,17,0,0,1,0,0,[
-mini_line(102,14,3,0,0,0,[
-str_block(0,102,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,102,14,3,0,0,0,0,0,0,0,
-	"ArpIpv4Interface")])
-])
-])]).
-rcbox('black','',130,378,267,411,0,1,1,0,16,804,0,0,0,0,'1',0,[
-]).
-poly('black','',2,[
-	199,380,199,343],2,1,1,810,0,0,0,0,0,0,0,'1',0,0,
-    "0","",[
-    0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
-]).
-text('black',206,350,1,0,1,47,17,811,14,3,0,0,0,0,2,47,17,0,0,"",0,0,0,0,364,'',[
-minilines(47,17,0,0,0,0,0,[
-mini_line(47,14,3,0,0,0,[
-str_block(0,47,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,47,14,3,0,-1,0,0,0,0,0,
-	"::Send()")])
-])
-])]).
-text('black',378,388,1,1,1,71,17,817,14,3,2,0,0,0,2,71,17,0,0,"",0,0,0,0,402,'',[
-minilines(71,17,0,0,1,0,0,[
-mini_line(71,14,3,0,0,0,[
-str_block(0,71,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,71,14,3,0,0,0,0,0,0,0,
-	"ArpProtocol")])
-])
-])]).
-rcbox('black','',308,381,445,414,0,1,1,0,16,818,0,0,0,0,'1',0,[
-]).
-poly('black','',2,[
-	268,398,305,398],3,1,1,819,0,0,3,0,0,0,0,'1',0,0,
-    "0","",[
-    0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
-]).
-text('black',279,372,1,0,1,62,17,820,14,3,2,0,0,0,2,62,17,0,0,"",0,0,0,0,386,'',[
-minilines(62,17,0,0,0,0,0,[
-mini_line(62,14,3,0,0,0,[
-str_block(0,62,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,62,14,3,0,-1,0,0,0,0,0,
-	"::Lookup()")])
-])
-])]).
-poly('black','',2,[
-	199,448,199,411],2,1,1,837,0,0,0,0,0,0,0,'1',0,0,
-    "0","",[
-    0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
-]).
-text('black',206,418,1,0,1,47,17,838,14,3,0,0,0,0,2,47,17,0,0,"",0,0,0,0,432,'',[
-minilines(47,17,0,0,0,0,0,[
-mini_line(47,14,3,0,0,0,[
-str_block(0,47,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,47,14,3,0,-1,0,0,0,0,0,
-	"::Send()")])
-])
-])]).
-text('black',371,173,1,1,1,26,17,842,14,3,2,0,0,0,2,26,17,0,0,"",0,0,0,0,187,'',[
-minilines(26,17,0,0,1,0,0,[
-mini_line(26,14,3,0,0,0,[
-str_block(0,26,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,26,14,3,0,-1,0,0,0,0,0,
-	"Ipv4")])
-])
-])]).
-rcbox('black','',301,166,438,199,0,1,1,0,16,843,0,0,0,0,'1',0,[
-]).
-text('black',272,157,1,0,1,148,17,844,14,3,2,0,0,0,2,148,17,0,0,"",0,0,0,0,171,'',[
-minilines(148,17,0,0,0,0,0,[
-mini_line(148,14,3,0,0,0,[
-str_block(0,148,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,148,14,3,0,-1,0,0,0,0,0,
-	"::GetAddress(outgoing if)")])
-])
-])]).
-poly('black','',2,[
-	269,182,306,182],3,1,1,846,0,0,3,0,0,0,0,'1',0,0,
-    "0","",[
-    0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
-]).
Binary file doc/manual/figures/node.dia has changed
--- a/doc/manual/figures/node.obj	Fri Oct 10 15:24:56 2008 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,211 +0,0 @@
-%TGIF 4.1.43-QPL
-state(0,37,100.000,0,0,0,16,0,9,1,1,0,0,3,2,1,0,'Times-Italic',2,80640,0,8,0,10,0,0,1,1,0,16,0,0,1,1,1,1,1088,1408,1,0,2880,0).
-%
-% @(#)$Header$
-% %W%
-%
-unit("1 pixel/pixel").
-color_info(11,65535,0,[
-	"magenta", 65535, 0, 65535, 65535, 0, 65535, 1,
-	"red", 65535, 0, 0, 65535, 0, 0, 1,
-	"green", 0, 65535, 0, 0, 65535, 0, 1,
-	"blue", 0, 0, 65535, 0, 0, 65535, 1,
-	"yellow", 65535, 65535, 0, 65535, 65535, 0, 1,
-	"pink", 65535, 49344, 52171, 65535, 49344, 52171, 1,
-	"cyan", 0, 65535, 65535, 0, 65535, 65535, 1,
-	"CadetBlue", 24415, 40606, 41120, 24415, 40606, 41120, 1,
-	"white", 65535, 65535, 65535, 65535, 65535, 65535, 1,
-	"black", 0, 0, 0, 0, 0, 0, 1,
-	"DarkSlateGray", 12079, 20303, 20303, 12079, 20303, 20303, 1
-]).
-script_frac("0.6").
-fg_bg_colors('black','white').
-dont_reencode("FFDingbests:ZapfDingbats").
-page(1,"",1,'').
-rcbox('black','',64,64,400,384,0,1,1,0,16,0,0,0,0,0,'1',0,[
-]).
-box('black','',280,432,555,464,0,1,1,17,0,0,0,0,0,'1',0,[
-]).
-text('black',384,435,1,0,1,56,18,18,13,5,0,0,0,0,2,56,18,0,0,"",0,0,0,0,448,'',[
-minilines(56,18,0,0,0,0,0,[
-mini_line(56,13,5,0,0,0,[
-str_block(0,56,13,5,0,-1,0,0,0,[
-str_seg('black','Courier-Bold',1,80640,56,13,5,0,-1,0,0,0,0,0,
-	"Channel")])
-])
-])]).
-text('black',76,42,1,0,1,208,18,108,13,5,2,0,0,0,2,208,18,0,0,"",0,0,0,0,55,'',[
-minilines(208,18,0,0,0,0,0,[
-mini_line(208,13,5,0,0,0,[
-str_block(0,208,13,5,0,0,0,0,0,[
-str_seg('black','Courier-Bold',1,80640,208,13,5,0,0,0,0,0,0,0,
-	"class Node : public Object")])
-])
-])]).
-group([
-rcbox('black','',112,304,192,352,2,1,1,0,16,134,0,0,0,0,'1',0,[
-]),
-text('black',112,323,1,0,1,72,18,135,13,5,0,0,0,0,2,72,18,0,0,"",0,0,0,0,336,'',[
-minilines(72,18,0,0,0,0,0,[
-mini_line(72,13,5,0,0,0,[
-str_block(0,72,13,5,0,0,0,0,0,[
-str_seg('black','Courier',0,80640,72,13,5,0,0,0,0,0,0,0,
-	"NetDevice")])
-])
-])])
-],
-138,0,0,[
-]).
-group([
-rcbox('black','',266,304,346,352,2,1,1,0,16,125,0,0,0,0,'1',0,[
-]),
-text('black',266,323,1,0,1,72,18,124,13,5,0,0,0,0,2,72,18,0,0,"",0,0,0,0,336,'',[
-minilines(72,18,0,0,0,0,0,[
-mini_line(72,13,5,0,0,0,[
-str_block(0,72,13,5,0,0,0,0,0,[
-str_seg('black','Courier',0,80640,72,13,5,0,0,0,0,0,0,0,
-	"NetDevice")])
-])
-])])
-],
-141,0,0,[
-]).
-poly('black','',2,[
-	304,351,304,430],3,1,1,167,0,2,0,0,0,0,0,'1',0,0,
-    "0","",[
-    0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
-]).
-text('black',219,304,1,0,1,24,37,177,30,7,2,0,0,0,2,24,37,0,0,"",0,0,0,0,334,'',[
-minilines(24,37,0,0,0,0,0,[
-mini_line(24,30,7,0,0,0,[
-str_block(0,24,30,7,0,-2,0,0,0,[
-str_seg('black','Times-Bold',1,195840,24,30,7,0,-2,0,0,0,0,0,
-	"...")])
-])
-])]).
-text('black',220,98,1,0,1,24,37,182,30,7,2,0,0,0,2,24,37,0,0,"",0,0,0,0,128,'',[
-minilines(24,37,0,0,0,0,0,[
-mini_line(24,30,7,0,0,0,[
-str_block(0,24,30,7,0,-2,0,0,0,[
-str_seg('black','Times-Bold',1,195840,24,30,7,0,-2,0,0,0,0,0,
-	"...")])
-])
-])]).
-text('black',420,116,2,0,1,136,36,183,13,5,2,0,0,0,2,136,36,0,0,"",0,0,0,0,129,'',[
-minilines(136,36,0,0,0,0,0,[
-mini_line(136,13,5,0,0,0,[
-str_block(0,136,13,5,0,0,0,0,0,[
-str_seg('black','Courier-Bold',1,80640,136,13,5,0,0,0,0,0,0,0,
-	"Unix-like C-based")])
-]),
-mini_line(80,13,5,0,0,0,[
-str_block(0,80,13,5,0,-1,0,0,0,[
-str_seg('black','Courier-Bold',1,80640,80,13,5,0,-1,0,0,0,0,0,
-	"socket API")])
-])
-])]).
-text('black',414,212,3,0,1,232,54,198,13,5,2,0,0,0,2,232,54,0,0,"",0,0,0,0,225,'',[
-minilines(232,54,0,0,0,0,0,[
-mini_line(112,13,5,0,0,0,[
-str_block(0,112,13,5,0,0,0,0,0,[
-str_seg('black','Courier-Bold',1,80640,112,13,5,0,0,0,0,0,0,0,
-	"Callback-based")])
-]),
-mini_line(176,13,5,0,0,0,[
-str_block(0,176,13,5,0,0,0,0,0,[
-str_seg('black','Courier-Bold',1,80640,176,13,5,0,0,0,0,0,0,0,
-	"protocol demultiplexer")])
-]),
-mini_line(232,13,5,0,0,0,[
-str_block(0,8,13,5,0,-1,0,0,0,[
-str_seg('black','Courier-Bold',1,80640,8,13,5,0,-1,0,0,0,0,0,
-	"(")]),
-str_block(0,216,13,3,0,-2,0,0,0,[
-str_seg('black','Courier-Oblique',2,80640,216,13,3,0,-2,0,0,0,0,0,
-	"list of ProtocolHandlers")]),
-str_block(0,8,13,5,0,-2,0,0,0,[
-str_seg('black','Courier-Bold',1,80640,8,13,5,0,-2,0,0,0,0,0,
-	")")])
-])
-])]).
-poly('black','',2,[
-	410,231,222,259],1,1,1,200,0,2,2,0,0,0,0,'1',0,0,
-    "0","",[
-    0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
-]).
-box('black','',56,401,229,433,0,1,1,250,0,0,0,0,0,'1',0,[
-]).
-text('black',119,409,1,0,1,56,18,251,13,5,0,0,0,0,2,56,18,0,0,"",0,0,0,0,422,'',[
-minilines(56,18,0,0,0,0,0,[
-mini_line(56,13,5,0,0,0,[
-str_block(0,56,13,5,0,-1,0,0,0,[
-str_seg('black','Courier-Bold',1,80640,56,13,5,0,-1,0,0,0,0,0,
-	"Channel")])
-])
-])]).
-poly('black','',2,[
-	154,353,154,400],3,1,1,254,0,2,0,0,0,0,0,'1',0,0,
-    "0","",[
-    0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
-]).
-group([
-rcbox('black','',98,96,206,144,2,1,1,0,16,1,0,0,0,0,'1',0,[
-]),
-text('black',114,115,1,0,1,88,18,2,13,5,0,0,0,0,2,88,18,0,0,"",0,0,0,0,128,'',[
-minilines(88,18,0,0,0,0,0,[
-mini_line(88,13,5,0,0,0,[
-str_block(0,88,13,5,0,0,0,0,0,[
-str_seg('black','Courier',0,80640,88,13,5,0,0,0,0,0,0,0,
-	"Application")])
-])
-])])
-],
-348,0,0,[
-]).
-group([
-rcbox('black','',257,96,365,144,2,1,1,0,16,354,0,0,0,0,'1',0,[
-]),
-text('black',273,115,1,0,1,88,18,353,13,5,0,0,0,0,2,88,18,0,0,"",0,0,0,0,128,'',[
-minilines(88,18,0,0,0,0,0,[
-mini_line(88,13,5,0,0,0,[
-str_block(0,88,13,5,0,0,0,0,0,[
-str_seg('black','Courier',0,80640,88,13,5,0,0,0,0,0,0,0,
-	"Application")])
-])
-])])
-],
-352,0,0,[
-]).
-text('black',155,73,1,0,1,110,18,426,14,4,2,0,0,0,2,110,18,0,0,"",0,0,0,0,87,'',[
-minilines(110,18,0,0,0,0,0,[
-mini_line(110,14,4,0,0,0,[
-str_block(0,110,14,4,0,-1,0,0,0,[
-str_seg('black','Times-Italic',2,80640,110,14,4,0,-1,0,0,0,0,0,
-	"list of Applications")])
-])
-])]).
-text('black',161,357,1,0,1,106,18,443,14,4,2,0,0,0,2,106,18,0,0,"",0,0,0,0,371,'',[
-minilines(106,18,0,0,0,0,0,[
-mini_line(106,14,4,0,0,0,[
-str_block(0,106,14,4,0,-1,0,0,0,[
-str_seg('black','Times-Italic',2,80640,106,14,4,0,-1,0,0,0,0,0,
-	"list of NetDevices")])
-])
-])]).
-text('black',79,194,2,0,1,55,36,482,14,4,2,0,0,0,2,55,36,0,0,"",0,0,0,0,208,'',[
-minilines(55,36,0,0,0,0,0,[
-mini_line(53,14,4,0,0,0,[
-str_block(0,53,14,4,0,0,0,0,0,[
-str_seg('black','Times-Italic',2,80640,53,14,4,0,0,0,0,0,0,0,
-	"unique id")])
-]),
-mini_line(55,14,4,0,0,0,[
-str_block(0,55,14,4,0,0,0,0,0,[
-str_seg('black','Times-Italic',2,80640,55,14,4,0,0,0,0,0,0,0,
-	"system id")])
-])
-])]).
-polygon('black','',7,[
-	158,271,305,271,288,291,173,291,159,273,160,273,158,271],2,1,1,0,493,8,0,0,0,0,'1',0,
-    "00",[
-]).
Binary file doc/manual/figures/packet.dia has changed
--- a/doc/manual/figures/packet.obj	Fri Oct 10 15:24:56 2008 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,227 +0,0 @@
-%TGIF 4.1.43-QPL
-state(0,37,100.000,0,64,0,32,0,9,1,1,1,0,0,0,1,0,'Courier-Bold',1,103680,0,3,0,10,0,0,1,1,0,16,0,0,1,1,1,1,1088,1408,1,0,2880,0).
-%
-% @(#)$Header$
-% %W%
-%
-unit("1 pixel/pixel").
-color_info(11,65535,0,[
-	"magenta", 65535, 0, 65535, 65535, 0, 65535, 1,
-	"red", 65535, 0, 0, 65535, 0, 0, 1,
-	"green", 0, 65535, 0, 0, 65535, 0, 1,
-	"blue", 0, 0, 65535, 0, 0, 65535, 1,
-	"yellow", 65535, 65535, 0, 65535, 65535, 0, 1,
-	"pink", 65535, 49344, 52171, 65535, 49344, 52171, 1,
-	"cyan", 0, 65535, 65535, 0, 65535, 65535, 1,
-	"CadetBlue", 24415, 40606, 41120, 24415, 40606, 41120, 1,
-	"white", 65535, 65535, 65535, 65535, 65535, 65535, 1,
-	"black", 0, 0, 0, 0, 0, 0, 1,
-	"DarkSlateGray", 12079, 20303, 20303, 12079, 20303, 20303, 1
-]).
-script_frac("0.6").
-fg_bg_colors('black','white').
-dont_reencode("FFDingbests:ZapfDingbats").
-page(1,"",1,'').
-box('black','',32,48,240,256,0,3,1,0,0,0,0,0,0,'3',0,[
-]).
-text('black',64,10,1,0,1,121,28,3,22,6,0,0,0,0,2,121,28,0,0,"",0,0,0,0,32,'',[
-minilines(121,28,0,0,0,0,0,[
-mini_line(121,22,6,0,0,0,[
-str_block(0,121,22,6,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,138240,121,22,6,0,0,0,0,0,0,0,
-	"class Packet")])
-])
-])]).
-text('black',416,100,1,0,1,116,28,15,22,6,0,0,0,0,2,116,28,0,0,"",0,0,0,0,122,'',[
-minilines(116,28,0,0,0,0,0,[
-mini_line(116,22,6,0,0,0,[
-str_block(0,116,22,6,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,138240,116,22,6,0,0,0,0,0,0,0,
-	"class Buffer")])
-])
-])]).
-text('black',48,178,4,0,1,83,69,32,14,4,0,0,0,0,2,83,69,0,0,"",0,0,0,0,192,'',[
-minilines(83,69,0,0,0,0,0,[
-mini_line(80,14,4,0,0,0,[
-str_block(0,80,14,4,0,-1,0,0,0,[
-str_seg('black','Times-Bold',1,80640,80,14,4,0,-1,0,0,0,0,0,
-	"private data:")])
-]),
-mini_line(59,14,3,0,0,0,[
-str_block(0,59,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,59,14,3,0,0,0,0,0,0,0,
-	"- unique id")])
-]),
-mini_line(83,14,3,0,0,0,[
-str_block(0,83,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,83,14,3,0,0,0,0,0,0,0,
-	"- Buffer object")])
-]),
-mini_line(76,14,3,0,0,0,[
-str_block(0,76,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,76,14,3,0,0,0,0,0,0,0,
-	"- Tags object")])
-])
-])]).
-text('black',112,288,1,0,1,103,28,82,22,6,0,0,0,0,2,103,28,0,0,"",0,0,0,0,310,'',[
-minilines(103,28,0,0,0,0,0,[
-mini_line(103,22,6,0,0,0,[
-str_block(0,103,22,6,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,138240,103,22,6,0,-1,0,0,0,0,0,
-	"class Tags")])
-])
-])]).
-text('black',48,50,5,0,1,175,86,176,14,4,0,0,0,0,2,175,86,0,0,"",0,0,0,0,64,'',[
-minilines(175,86,0,0,0,0,0,[
-mini_line(105,14,4,0,0,0,[
-str_block(0,105,14,4,0,-1,0,0,0,[
-str_seg('black','Times-Bold',1,80640,105,14,4,0,-1,0,0,0,0,0,
-	"public functions:")])
-]),
-mini_line(80,14,3,0,0,0,[
-str_block(0,80,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,80,14,3,0,-1,0,0,0,0,0,
-	"- constructors")])
-]),
-mini_line(175,14,3,0,0,0,[
-str_block(0,175,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,175,14,3,0,-1,0,0,0,0,0,
-	"- add/remove/peek at Headers")])
-]),
-mini_line(155,14,3,0,0,0,[
-str_block(0,155,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,155,14,3,0,-1,0,0,0,0,0,
-	"- add/remove/peek at Tags")])
-]),
-mini_line(88,14,3,0,0,0,[
-str_block(0,88,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,88,14,3,0,0,0,0,0,0,0,
-	"- fragmentation")])
-])
-])]).
-box('black','',384,144,614,352,0,3,1,245,0,0,0,0,0,'3',0,[
-]).
-text('black',400,274,4,0,1,204,69,246,14,4,0,0,0,0,2,204,69,0,0,"",0,0,0,0,288,'',[
-minilines(204,69,0,0,0,0,0,[
-mini_line(80,14,4,0,0,0,[
-str_block(0,80,14,4,0,-1,0,0,0,[
-str_seg('black','Times-Bold',1,80640,80,14,4,0,-1,0,0,0,0,0,
-	"private data:")])
-]),
-mini_line(193,14,3,0,0,0,[
-str_block(0,193,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,193,14,3,0,0,0,0,0,0,0,
-	"- struct BufferData, a dynamically")])
-]),
-mini_line(160,14,3,0,0,0,[
-str_block(0,160,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,160,14,3,0,0,0,0,0,0,0,
-	"varying byte buffer to which")])
-]),
-mini_line(204,14,3,0,0,0,[
-str_block(0,204,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,204,14,3,0,0,0,0,0,0,0,
-	"data can be prepended or appended")])
-])
-])]).
-text('black',400,146,5,0,1,188,86,247,14,4,0,0,0,0,2,188,86,0,0,"",0,0,0,0,160,'',[
-minilines(188,86,0,0,0,0,0,[
-mini_line(105,14,4,0,0,0,[
-str_block(0,105,14,4,0,-1,0,0,0,[
-str_seg('black','Times-Bold',1,80640,105,14,4,0,-1,0,0,0,0,0,
-	"public functions:")])
-]),
-mini_line(172,14,3,0,0,0,[
-str_block(0,172,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,172,14,3,0,0,0,0,0,0,0,
-	"- Iterators to move byte buffer")])
-]),
-mini_line(171,14,3,0,0,0,[
-str_block(0,171,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,171,14,3,0,0,0,0,0,0,0,
-	"pointers forward or backward")])
-]),
-mini_line(188,14,3,0,0,0,[
-str_block(0,188,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,188,14,3,0,0,0,0,0,0,0,
-	"- functions to read and write data")])
-]),
-mini_line(132,14,3,0,0,0,[
-str_block(0,132,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,132,14,3,0,-1,0,0,0,0,0,
-	"of various sized chunks")])
-])
-])]).
-box('black','',96,324,304,532,0,3,1,264,0,0,0,0,0,'3',0,[
-]).
-text('black',112,454,4,0,1,167,69,265,14,4,0,0,0,0,2,167,69,0,0,"",0,0,0,0,468,'',[
-minilines(167,69,0,0,0,0,0,[
-mini_line(80,14,4,0,0,0,[
-str_block(0,80,14,4,0,-1,0,0,0,[
-str_seg('black','Times-Bold',1,80640,80,14,4,0,-1,0,0,0,0,0,
-	"private data:")])
-]),
-mini_line(167,14,3,0,0,0,[
-str_block(0,167,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,167,14,3,0,0,0,0,0,0,0,
-	"- singly linked-list of TagData")])
-]),
-mini_line(158,14,3,0,0,0,[
-str_block(0,158,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,158,14,3,0,0,0,0,0,0,0,
-	"structures, with a reference")])
-]),
-mini_line(32,14,3,0,0,0,[
-str_block(0,32,14,3,0,0,0,0,0,[
-str_seg('black','Times-Roman',0,80640,32,14,3,0,0,0,0,0,0,0,
-	"count")])
-])
-])]).
-text('black',112,326,5,0,1,155,86,266,14,4,0,0,0,0,2,155,86,0,0,"",0,0,0,0,340,'',[
-minilines(155,86,0,0,0,0,0,[
-mini_line(105,14,4,0,0,0,[
-str_block(0,105,14,4,0,-1,0,0,0,[
-str_seg('black','Times-Bold',1,80640,105,14,4,0,-1,0,0,0,0,0,
-	"public functions:")])
-]),
-mini_line(80,14,3,0,0,0,[
-str_block(0,80,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,80,14,3,0,-1,0,0,0,0,0,
-	"- constructors")])
-]),
-mini_line(155,14,3,0,0,0,[
-str_block(0,155,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,155,14,3,0,-1,0,0,0,0,0,
-	"- templates to add, remove,")])
-]),
-mini_line(148,14,3,0,0,0,[
-str_block(0,148,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,148,14,3,0,-1,0,0,0,0,0,
-	"or peek at Tags of various")])
-]),
-mini_line(31,14,3,0,0,0,[
-str_block(0,31,14,3,0,-1,0,0,0,[
-str_seg('black','Times-Roman',0,80640,31,14,3,0,-1,0,0,0,0,0,
-	"types")])
-])
-])]).
-poly('black','',2,[
-	59,245,96,320],0,2,1,272,0,0,3,0,0,0,0,'2',0,0,
-    "0","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-poly('black','',2,[
-	123,246,288,320],0,2,1,280,0,0,3,0,0,0,0,'2',0,0,
-    "0","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-poly('black','',2,[
-	141,219,379,147],0,2,1,286,0,0,3,0,0,0,0,'2',0,0,
-    "0","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-poly('black','',2,[
-	132,226,375,335],0,2,1,287,0,0,3,0,0,0,0,'2',0,0,
-    "0","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
--- a/doc/tutorial/Makefile	Fri Oct 10 15:24:56 2008 -0700
+++ b/doc/tutorial/Makefile	Fri Oct 10 15:26:32 2008 -0700
@@ -1,23 +1,17 @@
 TEXI2HTML = texi2html
 TEXI2PDF = texi2dvi --pdf
 EPSTOPDF = epstopdf
-TGIF = tgif 
 DIA = dia
 CONVERT = convert
 CSS = --css-include=tutorial.css
 SPLIT = --split section
 
 DIA_SOURCES = pp.dia dumbbell.dia star.dia 
-TGIF_SOURCES = helpers.obj 
 
 DIA_EPS = ${DIA_SOURCES:.dia=.eps}
 DIA_PNG = ${DIA_SOURCES:.dia=.png}
 DIA_PDF = ${DIA_SOURCES:.dia=.pdf}
 
-TGIF_EPS = ${TGIF_SOURCES:.obj=.eps}
-TGIF_PNG = ${TGIF_SOURCES:.obj=.png}
-TGIF_PDF = ${TGIF_SOURCES:.obj=.pdf}
-
 all:  html split-html pdf
 
 # Note:  tgif requires a valid x display to convert from .obj to .png.  
@@ -28,9 +22,6 @@
 	cd figures/; $(DIA) -t png $(DIA_SOURCES) 
 	cd figures/; $(DIA) -t eps $(DIA_SOURCES) 
 	cd figures/; $(foreach FILE,$(DIA_EPS),$(EPSTOPDF) $(FILE);)
-	cd figures/; $(TGIF) -print -png $(TGIF_SOURCES) 
-	cd figures/; $(TGIF) -print -eps $(TGIF_SOURCES) 
-	cd figures/; $(foreach FILE,$(TGIF_EPS),$(EPSTOPDF) $(FILE);)
 
 html: 
 	$(TEXI2HTML) ${CSS} tutorial.texi
@@ -43,7 +34,6 @@
 
 figures-clean:
 	cd figures/; rm -rf $(DIA_EPS); rm -rf $(DIA_PNG); rm -rf $(DIA_PDF)
-	cd figures/; rm -rf $(TGIF_EPS); rm -rf $(TGIF_PNG); rm -rf $(TGIF_PDF)
 
 clean: # figures-clean
 	rm -rf tutorial.aux tutorial.cp tutorial.cps tutorial.fn tutorial.ky tutorial.pg tutorial.tp tutorial.vr tutorial.toc tutorial.log tutorial.pdf tutorial.html tutorial/ 
--- a/doc/tutorial/figures/README	Fri Oct 10 15:24:56 2008 -0700
+++ b/doc/tutorial/figures/README	Fri Oct 10 15:26:32 2008 -0700
@@ -1,18 +1,18 @@
 Please write image files in a vector graphics format, when possible, and
 generate the .png and .pdf versions on the fly (see ../Makefile).  
 
-Currently supported tools are dia and tgif.  xfig could be added similarly
+The currently supported tool is dia.  xfig could be added similarly
 if someone wants to add it.  The main requirement for adding another format
 is that the tool to edit it is freely available and that a cron script can 
-autogenerate the pdf and png from the figure source.
+autogenerate the pdf and png from the figure source.  Tgif (.obj) files
+were once used but the file conversions require a valid X display to 
+be running, and are therefore to be avoided since our code server 
+does not run such a server.  Tgif pdf conversions were also cumbersome.
 
-Store the .dia, or .obj versions in mercurial, but not the .png or .pdfs.  
+Store the .dia versions in mercurial, but not the .png or .pdfs.  
 If the figure is not available in a vector graphics format, store both
 a .png and a .pdf version in this directory.
 
-If you add a source (.dia, .obj) file here, remember to add it to
+If you add a source (.dia) file here, remember to add it to
 the list of figure sources in the Makefile in the directory above
 
-Note:  tgif can convert from .obj to .pdf, but the pdf that results takes
-up a whole page.  Instead, we convert to an intermediate .eps step, and
-then run epstopdf.
Binary file doc/tutorial/figures/helpers.dia has changed
--- a/doc/tutorial/figures/helpers.obj	Fri Oct 10 15:24:56 2008 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,115 +0,0 @@
-%TGIF 4.1.43-QPL
-state(0,37,100.000,0,0,0,32,1,9,1,1,0,0,1,2,1,0,'Courier',0,80640,0,2,0,10,0,0,1,1,0,16,0,0,1,1,1,1,1088,1408,1,0,2880,0).
-%
-% @(#)$Header$
-% %W%
-%
-unit("1 pixel/pixel").
-color_info(11,65535,0,[
-	"magenta", 65535, 0, 65535, 65535, 0, 65535, 1,
-	"red", 65535, 0, 0, 65535, 0, 0, 1,
-	"green", 0, 65535, 0, 0, 65535, 0, 1,
-	"blue", 0, 0, 65535, 0, 0, 65535, 1,
-	"yellow", 65535, 65535, 0, 65535, 65535, 0, 1,
-	"pink", 65535, 49344, 52171, 65535, 49344, 52171, 1,
-	"cyan", 0, 65535, 65535, 0, 65535, 65535, 1,
-	"CadetBlue", 24415, 40606, 41120, 24415, 40606, 41120, 1,
-	"white", 65535, 65535, 65535, 65535, 65535, 65535, 1,
-	"black", 0, 0, 0, 0, 0, 0, 1,
-	"DarkSlateGray", 12079, 20303, 20303, 12079, 20303, 20303, 1
-]).
-script_frac("0.6").
-fg_bg_colors('black','white').
-dont_reencode("FFDingbests:ZapfDingbats").
-page(1,"",1,'').
-text('black',272,195,2,0,1,248,36,0,13,5,0,0,0,0,2,248,36,0,0,"",0,0,0,0,208,'',[
-minilines(248,36,0,0,0,0,0,[
-mini_line(200,13,5,0,0,0,[
-str_block(0,200,13,5,0,-8,0,0,0,[
-str_seg('black','Courier',0,80640,200,13,5,0,-8,0,0,0,0,0,
-	"low-level APIs (all src/ ")])
-]),
-mini_line(248,13,5,0,0,0,[
-str_block(0,248,13,5,0,-2,0,0,0,[
-str_seg('black','Courier',0,80640,248,13,5,0,-2,0,0,0,0,0,
-	"directories except src/helper/)")])
-])
-])]).
-rcbox('black','',96,240,384,288,5,1,1,0,16,2,0,0,0,0,'1',0,[
-]).
-text('black',192,259,1,0,1,112,18,3,13,5,2,0,0,0,2,112,18,0,0,"",0,0,0,0,272,'',[
-minilines(112,18,0,0,0,0,0,[
-mini_line(112,13,5,0,0,0,[
-str_block(0,112,13,5,0,0,0,0,0,[
-str_seg('black','Courier',0,80640,112,13,5,0,0,0,0,0,0,0,
-	"ns-3 simulator")])
-])
-])]).
-poly('black','',2,[
-	272,208,240,240],0,1,1,17,0,0,2,0,0,0,0,'1',0,0,
-    "0","",[
-    0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
-]).
-poly('black','',2,[
-	240,176,240,240],1,1,1,18,0,0,0,0,0,0,0,'1',0,0,
-    "0","",[
-    0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
-]).
-rcbox('black','',176,128,384,176,5,1,1,0,16,25,0,0,0,0,'1',0,[
-]).
-text('black',192,131,2,0,1,120,36,26,13,5,2,0,0,0,2,120,36,0,0,"",0,0,0,0,144,'',[
-minilines(120,36,0,0,0,0,0,[
-mini_line(120,13,5,0,0,0,[
-str_block(0,120,13,5,0,-1,0,0,0,[
-str_seg('black','Courier',0,80640,120,13,5,0,-1,0,0,0,0,0,
-	"ns-3 helper API")])
-]),
-mini_line(96,13,5,0,0,0,[
-str_block(0,96,13,5,0,-2,0,0,0,[
-str_seg('black','Courier',0,80640,96,13,5,0,-2,0,0,0,0,0,
-	"(src/helper)")])
-])
-])]).
-rcbox('black','',96,16,384,64,0,1,1,0,16,32,0,0,0,0,'1',0,[
-]).
-poly('black','',2,[
-	240,64,240,128],1,1,1,36,0,0,0,0,0,0,0,'1',0,0,
-    "0","",[
-    0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
-]).
-text('black',272,83,2,0,1,200,36,40,13,5,0,0,0,0,2,200,36,0,0,"",0,0,0,0,96,'',[
-minilines(200,36,0,0,0,0,0,[
-mini_line(200,13,5,0,0,0,[
-str_block(0,200,13,5,0,-2,0,0,0,[
-str_seg('black','Courier',0,80640,200,13,5,0,-2,0,0,0,0,0,
-	"helper APIs (src/helper/)")])
-]),
-mini_line(192,13,5,0,0,0,[
-str_block(0,192,13,5,0,-1,0,0,0,[
-str_seg('black','Courier',0,80640,192,13,5,0,-1,0,0,0,0,0,
-	"call into low-level APIs")])
-])
-])]).
-poly('black','',2,[
-	272,96,240,128],0,1,1,41,0,0,2,0,0,0,0,'1',0,0,
-    "0","",[
-    0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
-]).
-text('black',128,19,2,0,1,232,36,47,13,5,0,0,0,0,2,232,36,0,0,"",0,0,0,0,32,'',[
-minilines(232,36,0,0,0,0,0,[
-mini_line(224,13,5,0,0,0,[
-str_block(0,224,13,5,0,-2,0,0,0,[
-str_seg('black','Courier',0,80640,224,13,5,0,-2,0,0,0,0,0,
-	"ns-3 scripts (main programs)")])
-]),
-mini_line(232,13,5,0,0,0,[
-str_block(0,232,13,5,0,-1,0,0,0,[
-str_seg('black','Courier',0,80640,232,13,5,0,-1,0,0,0,0,0,
-	"- may use either or both APIs")])
-])
-])]).
-poly('black','',2,[
-	144,64,144,240],1,1,1,50,0,0,0,0,0,0,0,'1',0,0,
-    "0","",[
-    0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
-]).