381 lines
12 KiB
Plaintext
381 lines
12 KiB
Plaintext
%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,[
|
|
]).
|