branch merge
This commit is contained in:
@@ -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 @@ pdf: images
|
||||
|
||||
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/
|
||||
|
||||
@@ -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.
|
||||
|
||||
BIN
doc/manual/figures/internet-node-recv.dia
Normal file
BIN
doc/manual/figures/internet-node-recv.dia
Normal file
Binary file not shown.
@@ -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,[
|
||||
]).
|
||||
BIN
doc/manual/figures/internet-node-send.dia
Normal file
BIN
doc/manual/figures/internet-node-send.dia
Normal file
Binary file not shown.
@@ -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'],[
|
||||
]).
|
||||
BIN
doc/manual/figures/node.dia
Normal file
BIN
doc/manual/figures/node.dia
Normal file
Binary file not shown.
@@ -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",[
|
||||
]).
|
||||
BIN
doc/manual/figures/packet.dia
Normal file
BIN
doc/manual/figures/packet.dia
Normal file
Binary file not shown.
@@ -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'],[
|
||||
]).
|
||||
@@ -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 @@ 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:
|
||||
$(TEXI2HTML) ${CSS} tutorial.texi
|
||||
@@ -43,7 +34,6 @@ pdf:
|
||||
|
||||
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/
|
||||
|
||||
@@ -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.
|
||||
|
||||
BIN
doc/tutorial/figures/helpers.dia
Normal file
BIN
doc/tutorial/figures/helpers.dia
Normal file
Binary file not shown.
@@ -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'],[
|
||||
]).
|
||||
Reference in New Issue
Block a user