%!PS-Adobe-2.0
%%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software
%%Title: libxorp_overview.dvi
%%Pages: 14
%%PageOrder: Ascend
%%BoundingBox: 0 0 595 842
%%DocumentFonts: Times-Roman Times-Italic Times-Bold CMSY10 Courier
%%DocumentPaperSizes: a4
%%EndComments
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips libxorp_overview.dvi -o libxorp_overview.ps
%DVIPSParameters: dpi=600
%DVIPSSource: TeX output 2008.07.23:1010
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
(LaserWriter 16/600)]{A length product length le{A length product exch 0
exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
%%EndProcSet
%%BeginProcSet: 8r.enc 0 0
% File 8r.enc TeX Base 1 Encoding Revision 2.0 2002-10-30
%
% @@psencodingfile@{
% author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry,
% W. Schmidt, P. Lehman",
% version = "2.0",
% date = "30 October 2002",
% filename = "8r.enc",
% email = "tex-fonts@@tug.org",
% docstring = "This is the encoding vector for Type1 and TrueType
% fonts to be used with TeX. This file is part of the
% PSNFSS bundle, version 9"
% @}
%
% The idea is to have all the characters normally included in Type 1 fonts
% available for typesetting. This is effectively the characters in Adobe
% Standard encoding, ISO Latin 1, Windows ANSI including the euro symbol,
% MacRoman, and some extra characters from Lucida.
%
% Character code assignments were made as follows:
%
% (1) the Windows ANSI characters are almost all in their Windows ANSI
% positions, because some Windows users cannot easily reencode the
% fonts, and it makes no difference on other systems. The only Windows
% ANSI characters not available are those that make no sense for
% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen
% (173). quotesingle and grave are moved just because it's such an
% irritation not having them in TeX positions.
%
% (2) Remaining characters are assigned arbitrarily to the lower part
% of the range, avoiding 0, 10 and 13 in case we meet dumb software.
%
% (3) Y&Y Lucida Bright includes some extra text characters; in the
% hopes that other PostScript fonts, perhaps created for public
% consumption, will include them, they are included starting at 0x12.
% These are /dotlessj /ff /ffi /ffl.
%
% (4) hyphen appears twice for compatibility with both ASCII and Windows.
%
% (5) /Euro was assigned to 128, as in Windows ANSI
%
% (6) Missing characters from MacRoman encoding incorporated as follows:
%
% PostScript MacRoman TeXBase1
% -------------- -------------- --------------
% /notequal 173 0x16
% /infinity 176 0x17
% /lessequal 178 0x18
% /greaterequal 179 0x19
% /partialdiff 182 0x1A
% /summation 183 0x1B
% /product 184 0x1C
% /pi 185 0x1D
% /integral 186 0x81
% /Omega 189 0x8D
% /radical 195 0x8E
% /approxequal 197 0x8F
% /Delta 198 0x9D
% /lozenge 215 0x9E
%
/TeXBase1Encoding [
% 0x00
/.notdef /dotaccent /fi /fl
/fraction /hungarumlaut /Lslash /lslash
/ogonek /ring /.notdef /breve
/minus /.notdef /Zcaron /zcaron
% 0x10
/caron /dotlessi /dotlessj /ff
/ffi /ffl /notequal /infinity
/lessequal /greaterequal /partialdiff /summation
/product /pi /grave /quotesingle
% 0x20
/space /exclam /quotedbl /numbersign
/dollar /percent /ampersand /quoteright
/parenleft /parenright /asterisk /plus
/comma /hyphen /period /slash
% 0x30
/zero /one /two /three
/four /five /six /seven
/eight /nine /colon /semicolon
/less /equal /greater /question
% 0x40
/at /A /B /C
/D /E /F /G
/H /I /J /K
/L /M /N /O
% 0x50
/P /Q /R /S
/T /U /V /W
/X /Y /Z /bracketleft
/backslash /bracketright /asciicircum /underscore
% 0x60
/quoteleft /a /b /c
/d /e /f /g
/h /i /j /k
/l /m /n /o
% 0x70
/p /q /r /s
/t /u /v /w
/x /y /z /braceleft
/bar /braceright /asciitilde /.notdef
% 0x80
/Euro /integral /quotesinglbase /florin
/quotedblbase /ellipsis /dagger /daggerdbl
/circumflex /perthousand /Scaron /guilsinglleft
/OE /Omega /radical /approxequal
% 0x90
/.notdef /.notdef /.notdef /quotedblleft
/quotedblright /bullet /endash /emdash
/tilde /trademark /scaron /guilsinglright
/oe /Delta /lozenge /Ydieresis
% 0xA0
/.notdef /exclamdown /cent /sterling
/currency /yen /brokenbar /section
/dieresis /copyright /ordfeminine /guillemotleft
/logicalnot /hyphen /registered /macron
% 0xD0
/degree /plusminus /twosuperior /threesuperior
/acute /mu /paragraph /periodcentered
/cedilla /onesuperior /ordmasculine /guillemotright
/onequarter /onehalf /threequarters /questiondown
% 0xC0
/Agrave /Aacute /Acircumflex /Atilde
/Adieresis /Aring /AE /Ccedilla
/Egrave /Eacute /Ecircumflex /Edieresis
/Igrave /Iacute /Icircumflex /Idieresis
% 0xD0
/Eth /Ntilde /Ograve /Oacute
/Ocircumflex /Otilde /Odieresis /multiply
/Oslash /Ugrave /Uacute /Ucircumflex
/Udieresis /Yacute /Thorn /germandbls
% 0xE0
/agrave /aacute /acircumflex /atilde
/adieresis /aring /ae /ccedilla
/egrave /eacute /ecircumflex /edieresis
/igrave /iacute /icircumflex /idieresis
% 0xF0
/eth /ntilde /ograve /oacute
/ocircumflex /otilde /odieresis /divide
/oslash /ugrave /uacute /ucircumflex
/udieresis /yacute /thorn /ydieresis
] def
%%EndProcSet
%%BeginProcSet: texps.pro 0 0
%!
TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
end
%%EndProcSet
%%BeginProcSet: special.pro 0 0
%!
TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N
/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N
/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{
/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
{userdict/md get type/dicttype eq{userdict begin md length 10 add md
maxlength ge{/md md dup length 20 add dict copy def}if end md begin
/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S
atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{
itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll
transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll
curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf
pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}
if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1
-1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip
yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub
neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{
noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop
90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr
1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr
2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4
-1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S
TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{
Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale
}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
save N userdict maxlength dict begin/magscale true def normalscale
currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts
/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x
psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx
psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub
TR/showpage{}N/erasepage{}N/setpagedevice{pop}N/copypage{}N/p 3 def
@MacSetUp}N/doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll
newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto
closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N
/@beginspecial{SDict begin/SpecialSave save N gsave normalscale
currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N}
N/@setspecial{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs
neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate
rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse
scale llx neg lly neg TR}{rhiSeen{rhi ury lly sub div dup scale llx neg
lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx
ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N
/setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{
pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave
restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B
/rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1
setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY
moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix
matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc
savematrix setmatrix}N end
%%EndProcSet
%%BeginProcSet: color.pro 0 0
%!
TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop
setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll
}repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def
/TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{
setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{
/currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch
known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC
/Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC
/Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0
setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0
setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61
0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC
/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0
setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87
0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{
0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{
0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC
/Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0
setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0
setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90
0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC
/Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0
setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0
0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{
0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{
0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC
/BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0
setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC
/CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0
0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1
0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11
0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0
setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0
0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC
/Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0
setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0
0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0
1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC
/PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0
setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{
0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor}
DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70
setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0
setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1
setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end
%%EndProcSet
%%BeginFont: CMSY10
%!PS-AdobeFont-1.1: CMSY10 1.0
%%CreationDate: 1991 Aug 15 07:20:57
% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
11 dict begin
/FontInfo 7 dict dup begin
/version (1.0) readonly def
/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
/FullName (CMSY10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle -14.035 def
/isFixedPitch false def
end readonly def
/FontName /CMSY10 def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 15 /bullet put
dup 20 /lessequal put
dup 102 /braceleft put
dup 103 /braceright put
readonly def
/FontBBox{-29 -960 1116 775}readonly def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A
27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF
5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09
0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730
DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A
71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09
4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C
515DB70A8D4F6146FE068DC1E5DE8BC57030ACE57A0A31C99BEDB251A0ECAD78
253AB321023D15FF7F55A3CE81514C1E7E76240C1FB36CD4874DDB761CC325F5
D588700B294849D690F93526EF438A42B9B5B0508584EA3766D35F5B8D51C458
ECB9FBD23A47EDBD084BB9C49E9467EF5A8AA0D6C0E4E3ECE060ED5D8A3F4085
35E370208A051DC90C2D197BB736C1FACF08C77DCE67D27B4BCF77777FD1B485
6092104A93504020AA4650C56280CAA084637D462FB380E48E3347D817EFDF6B
54EC73FC4D1553C1F37AE5184A59713832734DECB7AA1C8AF204A42C8F2C9997
264EAEBC720F8F10C71DD00AA2C9C40632A3CF6B1D57DDBD035441E0C894B16F
54E7CE440C88B78ED85CE97D8CB11EB8636B84C1D44DB5162865B62C57348DA3
0CB0EA58CCA87ADAFE6872AEC90D63AFD02A88D17BE52A4A5F1948B83C9EAF90
8382522155C45E1A37A67B0A800077A1FE56CE09A3CEF2B49078C7104CD26FEB
3D7392CC6EB6FF6059F6EA59BB377460AE3FB66E8DC3346012AA2B5B055902C2
BC757EE870CF4FE91FA16B4E0C8474CD0DEBA7DD0CD79A6258EE882E8F2D3916
1F9A9F01028784CA40D3D540229D31C35C72F914348935C00F91A6FAE53AF8C9
99A48EECDF78D0D3E08EB2860BCFC53DC1D5652E30E27FD872BF117376522C82
2B1B5EBE7557BC828D89F8F157D8736C08C5D0229F2D3781C12A37FF3B9B95D8
876C96964650C231498D8C7B8B95CFBAC07493B76A440C086DEEF28D7B338B01
4320558B757A58C87270D0D595BE840A8417429534F9BDA680796EE05D8EA42B
09FCF4C8E194A6FA87E7329E99481586B4CB6154C5ADFF8A0ED8DBCFEB88E2AF
FE08D19E4E5DA811BF464117D63E858AAA3669473DA9D5E4204C0736AD671824
679B35E1D6526CFBD3F23C18E7417EC9942BBF715A479A341863503A28236F49
20146711B12632DBBA7FD7E0ED130B5DADA63DED3C2C6D8C9C333D7734D41E73
0BAE16E866A50DD23152E45755C20647DAA5F9F248C36B18A4C707216BDB381A
1CC05569E434553D6397A76687C349E27C4A1F9C920D01
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont
TeXDict begin 39139632 55387786 1000 600 600 (libxorp_overview.dvi)
@start /Fa 130[55 1[55 55 55 55 55 55 55 55 55 55 1[55
55 55 55 55 55 1[55 55 55 55 55 55 55 55 55 1[55 1[55
55 55 1[55 55 55 55 55 55 55 55 1[55 55 55 55 55 55 1[55
55 55 55 55 55 55 55 55 2[55 55 55 55 55 55 1[55 1[55
55 55 55 55 55 55 55 1[55 1[55 55 55 55 1[55 1[55 55
34[{TeXBase1Encoding ReEncodeFont}76 90.9091 /Courier
rf /Fb 152[45 45 81[71 4[45 15[{}4 90.9091 /CMSY10 rf
/Fc 134[50 50 72 50 55 33 39 44 1[55 50 55 83 28 55 33
28 55 50 33 44 55 44 55 50 17[78 21[50 50 50 50 50 50
50 50 50 50 1[25 1[25 41[55 2[{TeXBase1Encoding ReEncodeFont}38
99.6264 /Times-Bold rf /Fd 105[45 28[40 40 61 40 45 25
35 35 1[45 45 45 66 25 40 25 25 45 45 25 40 45 40 45
45 7[51 56 76 56 66 51 45 56 1[56 66 61 76 51 61 1[30
66 66 56 56 66 61 56 56 6[30 3[45 1[45 45 45 2[25 23
30 23 2[30 30 37[45 2[{TeXBase1Encoding ReEncodeFont}60
90.9091 /Times-Italic rf /Fe 104[91 2[40 40 24[40 45
45 66 45 45 25 35 30 45 45 45 45 71 25 45 25 25 45 45
30 40 45 40 45 40 3[30 1[30 1[66 66 86 66 66 56 51 61
1[51 66 66 81 56 66 35 30 66 66 51 56 66 61 61 66 5[25
25 45 45 45 45 45 45 45 45 45 45 25 23 30 23 51 45 30
30 30 1[76 33[51 51 2[{TeXBase1Encoding ReEncodeFont}79
90.9091 /Times-Roman rf /Ff 134[60 3[66 40 47 53 1[66
60 66 100 3[33 2[40 53 66 53 1[60 14[86 4[113 3[47 93
3[86 86 1[86 14[60 60 46[66 2[{TeXBase1Encoding ReEncodeFont}25
119.552 /Times-Bold rf /Fg 135[44 66 2[28 1[39 1[50 50
3[44 2[50 50 28 44 50 44 50 50 32[92 5[33 10[28 25 46[{
TeXBase1Encoding ReEncodeFont}19 99.6264 /Times-Italic
rf /Fh 134[50 3[50 6[50 1[28 8[44 10[72 5[66 1[55 72
4[39 33 16[50 5[50 1[50 1[25 1[25 44[{TeXBase1Encoding ReEncodeFont}16
99.6264 /Times-Roman rf /Fi 134[72 72 104 72 2[56 48
1[72 72 72 4[40 3[64 2[72 64 8[104 1[104 3[96 1[80 104
2[88 22[72 3[72 2[36 46[{TeXBase1Encoding ReEncodeFont}22
143.462 /Times-Roman rf end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi
TeXDict begin
%%BeginPaperSize: a4
a4
%%EndPaperSize
end
%%EndSetup
%%Page: 1 1
TeXDict begin 1 0 bop Black Black Black Black 979 456
a Fi(XORP)34 b(Libxorp)g(Library)g(Ov)n(ervie)l(w)1623
703 y(V)-16 b(ersion)34 b(1.5)1722 956 y Fh(XORP)-11
b(,)25 b(Inc.)1535 1072 y Fg(http://www)-7 b(.xorp.or)l(g/)1557
1188 y(feedbac)n(k@xorp.or)l(g)1680 1390 y Fh(July)24
b(22,)h(2008)0 1770 y Ff(1)119 b(Intr)n(oduction)0 1977
y Fe(The)23 b Fd(libxorp)i Fe(library)g(contains)g(a)e(set)h(of)f
(classes)i(for)f(basic)g(XORP)d(functionality)27 b(such)d(as)g(IP)e
(addresses)k(and)e(subnets,)0 2090 y(timers,)32 b(e)n(v)o(ent)f(loops,)
i(etc.)49 b(It)30 b(is)g(used)h(by)f(virtually)j(e)n(v)o(ery)e(other)g
(XORP)d(component,)34 b(and)c(its)h(main)f(purpose)i(is)e(to)0
2203 y(simplify)25 b(the)f(implementation)i(of)e(those)g(components.)0
2451 y Fc(1.1)99 b(Ov)o(er)o(view)0 2625 y Fe(Currently)-6
b(,)25 b(the)f(libxorp)h(library)g(contains)h(the)e(follo)n(wing)h
(classes)g(and)f(components)i(\(in)e(alphabetical)j(order\):)p
Black 136 2827 a Fb(\017)p Black 46 w Fd(asnum.hh:)k(class)24
b(AsNum)p Fe(:)k(A)23 b(class)h(for)g(storing)h(an)f(AS)e(number)i
(used)g(by)g(protocols)i(such)f(as)e(BGP)-10 b(.)p Black
136 3012 a Fb(\017)p Black 46 w Fd(asyncio.hh:)32 b(class)25
b(AsyncF)l(ileReader)-10 b(,)25 b(class)g(AsyncF)l(ileWriter)r
Fe(:)31 b(Asynchronous)c(\002le)c(transfer)i(classes.)p
Black 136 3196 a Fb(\017)p Black 46 w Fd(b)n(uf)n(fer)-10
b(.hh:)32 b(class)25 b(Buf)n(fer)r Fe(:)30 b(A)22 b(class)j(for)e
(storing)j(b)n(uf)n(fered)f(data.)p Black 136 3380 a
Fb(\017)p Black 46 w Fd(b)n(uf)n(fer)m(ed)p 525 3380
28 4 v 36 w(asyncio.hh:)32 b(class)25 b(Buf)n(fer)m(edAsyncReader)r
Fe(:)33 b(Buf)n(fered)24 b(asynchronous)k(\002le)23 b(reader)i(class.)p
Black 136 3564 a Fb(\017)p Black 46 w Fd(c)p 272 3564
V 33 w(format.hh:)31 b(c)p 760 3564 V 33 w(format\(\))p
Fe(:)f(A)23 b(macro)h(that)g(creates)h(a)e(C++)g(string)i(from)e(a)g
(C-style)i(printf\(3\)-formatted)j(string.)p Black 136
3748 a Fb(\017)p Black 46 w Fd(callbac)n(k.hh,)f(callbac)n(k)p
1001 3748 V 35 w(deb)n(ug)o(.hh,)f(callbac)n(k)p 1718
3748 V 35 w(nodeb)n(ug)o(.hh,)g(safe)p 2367 3748 V 35
w(callbac)n(k)p 2705 3748 V 36 w(obj.hh)p Fe(:)k(Callback)25
b(mechanism.)p Black 136 3933 a Fb(\017)p Black 46 w
Fd(cloc)n(k.hh:)31 b(class)25 b(SystemCloc)n(k)r Fe(:)31
b(A)22 b(class)i(for)g(pro)o(viding)i(the)e(interf)o(ace)i(to)d(obtain)
i(the)f(system)g(clock.)p Black 136 4117 a Fb(\017)p
Black 46 w Fd(con\002g)p 452 4117 V 35 w(par)o(am.hh:)30
b(template)25 b(class)g(Con\002gP)-7 b(ar)o(am)p Fe(:)29
b(A)23 b(class)h(for)g(storing)h(a)e(con\002guration)k(parameter)-5
b(.)p Black 136 4301 a Fb(\017)p Black 46 w Fd(deb)n(ug)o(.h)p
Fe(:)31 b(Pro)o(vides)24 b(f)o(acility)i(for)e(generating)i(deb)n(ug)f
(messages.)p Black 136 4485 a Fb(\017)p Black 46 w Fd(ether)p
417 4485 V 35 w(compat.h)p Fe(:)30 b(Ethernet)25 b(manipulation)h
(compatibility)h(functions.)p Black 136 4670 a Fb(\017)p
Black 46 w Fd(e)o(ventloop.hh:)39 b(class)28 b(EventLoop)p
Fe(:)37 b(Ev)o(ent)27 b(loop)g(class)h(for)f(coordinated)j(operations)g
(between)e(timers)f(and)h(I/O)227 4782 y(operations)f(on)c(\002le)g
(descriptors.)p Black 136 4967 a Fb(\017)p Black 46 w
Fd(e)n(xceptions.hh)p Fe(:)33 b(Standard)25 b(XORP)c(C++)i(e)o
(xceptions.)p Black 136 5151 a Fb(\017)p Black 46 w Fd(heap.hh:)31
b(class)25 b(Heap)p Fe(:)k(Pro)o(vides)c(Heap)e(data)h(structure.)p
Black 1927 5400 a(1)p Black eop end
%%Page: 2 2
TeXDict begin 2 1 bop Black Black Black 136 91 a Fb(\017)p
Black 46 w Fd(ioe)o(vents.hh)p Fe(:)32 b(Enumeration)25
b(of)f(v)n(arious)h(e)n(v)o(ent)f(types)g(supported)j(by)c(the)h(I/O)f
(callback)j(f)o(acade.)p Black 136 279 a Fb(\017)p Black
46 w Fd(ipnet.hh,)d(ipv4net.hh,)h(ipv6net.hh,)g(ipvxnet.hh:)31
b(class)22 b(IPv4Net,)f(class)h(IPv6Net,)g(class)g(IPvXNet)r
Fe(:)27 b(Implemen-)227 392 y(tation)33 b(of)d(classes)j(for)e(basic)h
(subnet)h(addresses)g(\(for)f(IPv4,)g(IPv6)f(and)h(dual)f(IPv4/6)h
(address)h(f)o(amily)f(respec-)227 505 y(ti)n(v)o(ely\).)p
Black 136 692 a Fb(\017)p Black 46 w Fd(ipv4.hh,)c(ipv6.hh,)h(ipvx.hh:)
36 b(class)27 b(IPv4,)g(class)g(IPv6,)g(class)g(IPvX)t
Fe(:)f(Implementation)j(of)d(classes)i(for)f(basic)g(IP)227
805 y(addresses)f(\(for)e(IPv4,)g(IPv6)f(and)h(dual)g(IPv4/6)g(address)
i(f)o(amily)e(respecti)n(v)o(ely\).)p Black 136 993 a
Fb(\017)p Black 46 w Fd(mac.hh:)30 b(class)24 b(Mac,)f(class)i
(EtherMac)p Fe(:)30 b(Containers)c(for)d(MA)l(C)f(types.)p
Black 136 1181 a Fb(\017)p Black 46 w Fd(ne)n(xthop.hh)p
Fe(:)32 b(Classes)25 b(that)f(contain)h(routing)h(ne)o(xt-hop)f
(information.)p Black 136 1368 a Fb(\017)p Black 46 w
Fd(popen.hh)p Fe(:)32 b(The)23 b(interf)o(ace)i(for)f(the)g(local)g
(implementation)j(of)c Fd(popen\(2\))j Fe(and)e Fd(pclose\(2\))p
Fe(.)p Black 136 1556 a Fb(\017)p Black 46 w Fd(pr)l(o\002le)o(.hh)p
Fe(:)31 b(Implementation)c(of)c(a)g(mechanism)i(for)f(e)n(v)o(ent)g
(pro\002ling.)p Black 136 1743 a Fb(\017)p Black 46 w
Fd(r)o(andom.h)p Fe(:)30 b(Local)24 b(implementation)j(of)c
(random\(3\).)p Black 136 1931 a Fb(\017)p Black 46 w
Fd(r)o(ang)o(e)o(.hh:)30 b(class)23 b(U32Rang)o(e)o(,)g(class)f
(IPv4Rang)o(e)o(,)h(class)g(IPv4Rang)o(e)p Fe(:)30 b(A)20
b(set)i(of)g(classes)h(that)f(implement)h(linear)227
2044 y(ranges)i(\()p Fd(e)o(.g)o(.,)e Fe(inte)o(gers)i(or)e
(addresses\).)p Black 136 2232 a Fb(\017)p Black 46 w
Fd(r)m(ef)p 329 2232 28 4 v 34 w(ptr)-10 b(.hh:)30 b(template)25
b(class)f(r)m(ef)p 1268 2232 V 33 w(ptr)r Fe(:)30 b(Reference)25
b(counted)h(pointer)f(class.)p Black 136 2419 a Fb(\017)p
Black 46 w Fd(r)m(ef)p 329 2419 V 34 w(trie)o(.hh)p Fe(:)39
b(Implementation)31 b(of)d(a)g(trie)h(to)f(support)i(route)f(lookups.)
45 b(Based)28 b(on)h(trie.hh,)h(b)n(ut)f(with)f(reference-)227
2532 y(counted)e(storage)f(supporting)i(delayed)e(deletion.)p
Black 136 2720 a Fb(\017)p Black 46 w Fd(r)l(ound)p 443
2720 V 35 w(r)l(obin.hh)p Fe(:)31 b(Round-robin)26 b(queue)f
(implementation.)p Black 136 2907 a Fb(\017)p Black 46
w Fd(run)p 357 2907 V 34 w(command.hh:)31 b(class)24
b(RunCommand)r Fe(:)30 b(A)23 b(class)h(for)g(running)i(an)d(e)o
(xternal)i(command.)p Black 136 3095 a Fb(\017)p Black
46 w Fd(safe)p 377 3095 V 34 w(callbac)n(k)p 714 3095
V 36 w(obj.hh:)40 b(class)29 b(Callbac)n(kSafeObject)r
Fe(:)42 b(Implementation)31 b(of)d(a)g(base)g(class)h(for)g(objects)g
(that)g(are)227 3208 y(callback)d(safe.)p Black 136 3396
a Fb(\017)p Black 46 w Fd(selector)-10 b(.hh)p Fe(:)32
b(I/O)23 b(multiple)o(xing)j(interf)o(ace.)p Black 136
3583 a Fb(\017)p Black 46 w Fd(service)o(.hh)p Fe(:)31
b(Pro)o(vides)25 b(base)f(for)g(asynchronous)k(service)d(classes.)p
Black 136 3771 a Fb(\017)p Black 46 w Fd(status)p 442
3771 V 35 w(codes.h)p Fe(:)36 b(Process)28 b(states)f(status)h(codes)f
(used)h(by)e(processes)j(when)d(reporting)j(their)e(operational)j
(status)227 3884 y(to)24 b(the)g(router)g(manager)-5
b(.)p Black 136 4071 a Fb(\017)p Black 46 w Fd(task.hh:)31
b(class)24 b(XorpT)-8 b(ask)r Fe(:)30 b(Priority-based)c(task)f
(implementation.)p Black 136 4259 a Fb(\017)p Black 46
w Fd(time)p 388 4259 V 34 w(slice)o(.hh:)30 b(class)24
b(T)-5 b(imeSlice)p Fe(:)30 b(A)23 b(class)h(for)g(computing)i(whether)
e(some)g(processing)i(is)e(taking)h(too)f(long.)p Black
136 4447 a Fb(\017)p Black 46 w Fd(timer)-10 b(.hh:)30
b(class)25 b(XorpT)-5 b(imer)r Fe(:)29 b(XORP)21 b(timer)j(f)o(acility)
-6 b(.)p Black 136 4634 a Fb(\017)p Black 46 w Fd(timespent.hh:)44
b(class)30 b(T)-5 b(imeSpent)r Fe(:)42 b(A)29 b(class)h(used)h(for)f
(deb)n(ugging)i(purpose)g(to)d(\002nd)h(code)g(that)g(has)g(tak)o(en)h
(too)227 4747 y(long)25 b(to)e(e)o(x)o(ecute.)p Black
136 4935 a Fb(\017)p Black 46 w Fd(time)o(val.hh:)31
b(class)24 b(T)-5 b(imeV)-10 b(al)p Fe(:)29 b(A)22 b(class)j(for)e
(storing)j(time)d(v)n(alues)i(\(similar)f(to)g Fd(struct)g(time)o(val)p
Fe(\).)p Black 136 5122 a Fb(\017)p Black 46 w Fd(tlv)-7
b(.hh:)31 b(class)24 b(Tlv)p Fe(:)29 b(F)o(acility)24
b(for)g(reading)h(and)f(writing)g(TL)-9 b(V)22 b(\(T)-7
b(ype-Lenght-V)d(alue\))27 b(records.)p Black 1927 5400
a(2)p Black eop end
%%Page: 3 3
TeXDict begin 3 2 bop Black Black Black 136 91 a Fb(\017)p
Black 46 w Fd(tok)o(en.hh)p Fe(:)31 b(T)-7 b(ok)o(en)24
b(related)h(de\002nitions.)p Black 136 279 a Fb(\017)p
Black 46 w Fd(tr)o(ansactions.hh)p Fe(:)34 b(F)o(acility)24
b(for)f(transaction)k(operations.)p Black 136 467 a Fb(\017)p
Black 46 w Fd(trie)o(.hh)p Fe(:)j(Implementation)d(of)c(a)g(trie)h(to)g
(support)h(route)g(lookups.)p Black 136 654 a Fb(\017)p
Black 46 w Fd(utility)-5 b(.h)p Fe(:)31 b(Contains)25
b(v)n(arious)g(mini-utilities)i(\(mostly)d(compiler)n(-related)k
(helpers\).)p Black 136 842 a Fb(\017)p Black 46 w Fd(utils.hh)p
Fe(:)i(Contains)24 b(v)n(arious)f(utilities)h(\()p Fd(e)o(.g)o(.,)d
Fe(to)h(delete)i(a)d(list)i(or)f(array)h(of)f(pointers)i(and)e(the)h
(objects)g(pointed)h(to\).)p Black 136 1029 a Fb(\017)p
Black 46 w Fd(vif)o(.hh:)30 b(class)24 b(V)-7 b(if)o(,)23
b(class)i(V)-7 b(ifAddr)r Fe(:)30 b(V)-5 b(irtual)23
b(interf)o(ace)j(and)e(virtual)h(interf)o(ace)h(address)g(classes.)p
Black 136 1217 a Fb(\017)p Black 46 w Fd(win)p 363 1217
28 4 v 33 w(dispatc)o(her)-10 b(.hh,)27 b(win)p 1059
1217 V 33 w(io.hh)p Fe(:)j(W)l(indo)n(ws-speci\002c)c(header)f
(\002les.)p Black 136 1405 a Fb(\017)p Black 46 w Fd(xlo)o(g)o(.h)p
Fe(:)30 b(Pro)o(vides)25 b(f)o(acility)g(for)f(log)g(messages)h
(generation.)p Black 136 1592 a Fb(\017)p Black 46 w
Fd(xorp.h)p Fe(:)31 b(The)23 b(XORP)e(main)i(include)j(\002le)d(that)h
(should)h(be)e(included)j(by)e(all)g(XORP)d(C)h(and)i(C++)f(\002les.)p
Black 136 1780 a Fb(\017)p Black 46 w Fd(xorpfd.hh:)32
b(class)24 b(XorpFd)r Fe(:)30 b(Implementation)c(of)e(a)f(wrapper)i
(class)f(used)g(to)g(encapsulate)j(a)c(\002le)g(descriptor)-5
b(.)141 1993 y(Each)24 b(of)f(the)h(components)i(is)d(described)j(in)e
(Section)g(2.)0 2285 y Ff(2)119 b(Components)30 b(Description)0
2492 y Fe(This)21 b(section)j(contains)f(a)e(brief)i(description)h(of)e
(each)g(of)f(the)h(components)i(of)e(the)f Fd(libxorp)j
Fe(library)-6 b(.)29 b(This)22 b(description)i(is)0 2605
y(for)h(informati)n(v)o(e)i(purpose)g(only)-6 b(.)34
b(The)25 b(source)i(code)e(for)h(each)g(component)h(is)e(the)g
(ultimate)h(source)h(for)e(programming)0 2718 y(reference,)h(and)e
(implementation)i(details.)0 2967 y Fc(2.1)99 b(asnum.hh)0
3141 y Fe(This)23 b(\002le)f(contains)j Fd(class)g(AsNum)p
Fe(:)i(a)c(class)h(for)f(storing)i(an)e(AS)e(number)j(used)g(by)f
(protocols)j(such)e(as)f(BGP)-10 b(.)20 b(This)j(class)0
3254 y(can)f(be)g(used)h(to)f(store)h(an)f(AS)f(number)h(that)h(can)f
(be)g(either)i(16)e(or)g(32)g(bits.)29 b(Originally)-6
b(,)24 b(the)e(AS)e(numbers)k(were)d(de\002ned)0 3367
y(as)j(16-bit)i(unsigned)h(numbers.)32 b(Later)24 b(the)h(\223e)o
(xtended\224)i(AS)c(numbers)i(were)g(introduced,)i(which)e(are)f
(unsigned)j(32-bit)0 3480 y(numbers.)0 3729 y Fc(2.2)99
b(asyncio.hh)0 3904 y Fe(This)30 b(\002le)g(contains)j(asynchronous)h
(\002le)c(transfer)i(classes.)51 b(These)31 b(utilize)h(XORP)c(Ev)o
(entLoop)j(and)g(its)g(SelectorList)0 4017 y(to)c(read)g(or)f(write)h
(\002les)g(asynchronously)-6 b(.)43 b(The)26 b(user)h(creates)h(an)f
(AsyncFile)p Fb(f)p Fe(Reader)l(,Writer)p Fb(g)k Fe(and)c(adds)h(a)e(b)
n(uf)n(fer)i(for)0 4129 y(reading)d(or)f(writing)g(with)f(add)p
998 4129 V 34 w(b)n(uf)n(fer\(\).)31 b(A)22 b(callback)k(pro)o(vided)f
(with)f(each)g(b)n(uf)n(fer)h(is)e(called)i(e)n(v)o(ery)f(time)f(I/O)g
(happens)0 4242 y(on)j(the)h(b)n(uf)n(fer)-5 b(.)37 b(Reading)28
b(or)e(writing)h(only)f(be)o(gins)i(when)e(start\(\))h(is)f(called,)i
(and)f(normally)g(continues)i(until)e(there)g(are)0 4355
y(no)d(b)n(uf)n(fers)h(left.)141 4468 y(From)i(the)h(de)n(v)o(eloper')
-5 b(s)30 b(point)f(of)f(vie)n(w)-6 b(,)28 b(the)g(follo)n(wing)h
(classes)h(are)e(of)f(interest:)40 b Fd(class)29 b(AsyncF)l(ileReader)
-10 b(,)30 b(class)0 4581 y(AsyncF)l(ileWriter)p Fe(.)0
4830 y Fc(2.3)99 b(b)n(uffer)-10 b(.hh)0 5005 y Fe(This)23
b(\002le)f(contains)j Fd(class)f(Buf)n(fer)r Fe(:)30
b(a)23 b(class)h(for)f(con)l(v)o(eniently)k(storing)d(and)g(accessing)h
(b)n(uf)n(fered)g(data.)k(Currently)c(it)e(has)0 5117
y(limited)h(applicability)-6 b(.)p Black 1927 5400 a(3)p
Black eop end
%%Page: 4 4
TeXDict begin 4 3 bop Black Black 0 91 a Fc(2.4)99 b(b)n(uffer)n(ed)p
589 91 30 4 v 38 w(asyncio.hh)0 266 y Fe(This)31 b(\002le)f(contains)j
Fd(class)g(Buf)n(fer)m(edAsyncReader)r Fe(:)48 b(a)30
b(class)i(for)g(b)n(uf)n(fered)h(asynchronous)i(\002le)30
b(reading.)53 b(Unlik)o(e)32 b(the)0 379 y Fd(class)20
b(AsyncF)l(ileReader)k Fe(\(see)19 b(Section)h(2.2\))g(which)f(deli)n
(v)o(ers)i(data)e(whene)n(v)o(er)h(it)f(is)g(a)n(v)n(ailable,)j(the)e
Fd(class)g(Buf)n(fer)m(edAsyn-)0 491 y(cReader)27 b Fe(b)n(uf)n(fers)e
(the)f(data)g(and)g(deli)n(v)o(ers)h(it)e(whene)n(v)o(er)h(its)g(size)g
(has)g(reached)h(a)f(prede\002ned)h(threshold.)0 741
y Fc(2.5)99 b(c)p 274 741 V 36 w(f)n(ormat.hh)0 915 y
Fe(This)24 b(\002le)g(contains)j Fd(c)p 697 915 28 4
v 33 w(format\(\))p Fe(:)33 b(a)24 b(macro)h(that)g(creates)h(a)e(C++)g
(string)i(from)e(a)g(C-style)i(printf\(3\)-formatted)j(string.)k(It)0
1028 y(tak)o(es)25 b(the)e(same)h(ar)n(guments)i(as)d(printf\(3\),)j(b)
n(ut)e(\045n)f(is)g(ille)o(gal)h(and)g(will)f(cause)i(abort)g(to)e(be)h
(called.)141 1141 y(In)g(practice,)h Fd(c)p 618 1141
V 33 w(format\(\))g Fe(is)f(a)f(nasty)i(macro,)f(b)n(ut)g(by)g(doing)h
(this)f(we)f(can)h(check)h(the)f(compile)g(time)g(ar)n(guments)i(are)0
1254 y(sane)e(and)g(the)g(run)g(time)f(ar)n(guments.)0
1503 y Fc(2.6)99 b(callback.hh,)26 b(callback)p 1124
1503 30 4 v 36 w(deb)n(ug)o(.hh,)g(callback)p 1956 1503
V 36 w(nodeb)n(ug)o(.hh,)h(safe)p 2706 1503 V 36 w(callback)p
3096 1503 V 36 w(obj.hh)0 1677 y Fe(These)h(\002les)g(contain)i(an)e
(implementation)j(of)d(a)f(callback)j(mechanism.)44 b(XORP)25
b(is)j(an)g(asynchronous)k(programming)0 1790 y(en)l(vironment)40
b(and)d(as)g(a)f(result)i(there)f(are)g(man)o(y)g(places)h(where)f
(callbacks)i(are)e(useful.)69 b(Callbacks)39 b(are)e(typically)0
1903 y(in)l(v)n(ok)o(ed)26 b(to)e(signify)h(the)f(completion)i(or)d
(adv)n(ancement)j(of)e(an)f(asynchronous)28 b(operation.)141
2016 y(XORP)d(pro)o(vides)j(a)f(generic)h(and)f(\003e)o(xible)h
(callback)g(interf)o(ace)h(that)f(utilizes)g(o)o(v)o(erloaded)i
(templatized)f(functions)0 2129 y(for)d(generating)j(callbacks)f(in)e
(conjunction)j(with)d(man)o(y)f(small)h(templatized)i(classes.)37
b(Whilst)27 b(this)f(mak)o(es)h(the)f(syntax)0 2242 y(a)d(little)i
(unpleasant,)h(it)d(pro)o(vides)j(a)d(great)h(deal)g(of)g(\003e)o
(xibility)-6 b(.)141 2355 y(XorpCallback)25 b(objects)g(are)e(objects)i
(created)g(by)e(the)g(callback\(\))j(function)f(which)e(returns)i(a)d
(reference)k(pointer)e(to)0 2467 y(a)f(ne)n(wly)h(created)h(callback)h
(object.)k(The)23 b(callback)i(is)f(in)l(v)n(ok)o(ed)i(by)e(calling)h
(the)f(dispatch\(\))i(method)e(on)g(that)g(object.)141
2580 y(There)29 b(are)g(tw)o(o)f(v)o(ersions)i(of)f(the)f(callback)j
(mechanism:)41 b(deb)n(ug)30 b(and)f(non-deb)n(ug)i(v)o(ersion.)46
b(The)28 b(deb)n(ug)i(v)o(ersion)0 2693 y(includes)d(additional)g
(information)g(with)e(each)g(callback)h(\()p Fd(e)o(.g)o(.,)e
Fe(\002le)g(name)h(and)g(line)g(number)g(where)g(the)g(callback)i(w)o
(as)0 2806 y(in)l(v)n(ok)o(ed\),)37 b(records)c(callback)h(tracing)g(e)
n(v)o(ents,)g(etc,)g(b)n(ut)f(creates)g(additional)i(o)o(v)o(erhead)e
(to)f(the)g(system.)55 b(Non-deb)n(ug)0 2919 y(callbacks)28
b(are)d(used)h(by)f(def)o(ault;)j(the)d(deb)n(ug)i(callbacks)h(can)d
(be)g(enabled)i(by)f(de\002ning)g Fd(DEB)o(UG)p 3168
2919 28 4 v 31 w(CALLB)n(A)m(CK)g Fe(before)0 3032 y(including)g
Fd(callbac)n(k.hh)p Fe(,)g(or)e(by)g(running)h Fd(./con\002gur)m(e)h
(\226enable-callbac)n(k-d)q(eb)o(ug)j Fe(before)c(compiling)h(XORP)-10
b(.)141 3145 y(F)o(or)17 b(more)h(details)i(on)e(the)h(callback)h
(mechanism,)g(and)e(for)h(usage)g(e)o(xamples,)h(see)e(the)h(be)o
(ginning)h(of)e Fd(callbac)n(k)p 3675 3145 V 36 w(deb)n(ug)o(.hh)0
3258 y Fe(or)j Fd(callbac)n(k)p 404 3258 V 36 w(nodeb)n(ug)o(.hh)p
Fe(.)31 b(Note)21 b(that)h(these)h(\002les)e(are)g(auto-generated)26
b(by)c Fd(callbac)n(k-g)o(en.py)k Fe(\(a)21 b(Python)h(script\),)h
(there-)0 3371 y(fore)h(the)o(y)g(should)h(ne)n(v)o(er)f(be)g(edited.)0
3620 y Fc(2.7)99 b(clock.hh)0 3794 y Fe(This)35 b(\002le)f(contains)j
(the)f(implementation)i(of)d Fd(class)h(SystemCloc)n(k)i
Fe(that)e(pro)o(vides)g(the)g(interf)o(ace)h(for)e(obtaining)j(the)0
3907 y(system)24 b(clock.)0 4156 y Fc(2.8)99 b(con\002g)p
484 4156 30 4 v 37 w(param.hh)0 4331 y Fe(This)32 b(\002le)g(contains)j
(the)e(implementation)j(of)c Fd(template)i(class)f(Con\002gP)-7
b(ar)o(am)p Fe(:)48 b(a)32 b(class)i(for)f(storing)h(a)e
(con\002guration)0 4443 y(parameter)-5 b(.)141 4556 y(This)23
b(class)i(can)e(be)h(used)g(to)f(store)h(the)g(v)n(alue)g(of)f(a)g
(con\002guration)k(parameter)-5 b(.)30 b(Such)23 b(parameter)i(has)f(a)
f(current)i(and)0 4669 y(a)e(def)o(ault)j(v)n(alue.)k(The)23
b Fd(Con\002gP)-7 b(ar)o(am)24 b Fe(class)h(has)f(the)g(f)o(acility)i
(to)d(add)h(a)g(callback)h(that)g(is)e(in)l(v)n(ok)o(ed)k(whene)n(v)o
(er)d(the)g(v)n(alue)0 4782 y(of)f(the)h(con\002guration)j(parameter)e
(is)e(changed.)p Black 1927 5400 a(4)p Black eop end
%%Page: 5 5
TeXDict begin 5 4 bop Black Black 0 91 a Fc(2.9)99 b(deb)n(ug)o(.h)0
266 y Fe(This)24 b(\002le)f(pro)o(vides)j(f)o(acility)g(for)e(deb)n(ug)
i(messages)f(generation.)33 b(More)24 b(speci\002cally)-6
b(,)27 b(it)c(de\002nes)i(the)f Fa(debug_msg\(\))p Fe(,)0
379 y(the)19 b(macro)h(responsible)i(for)e(generating)i(deb)n(ug)e
(messages.)29 b(It)19 b(tak)o(es)h(the)g(same)f(ar)n(guments)i(as)e
(printf\(3\).)30 b(F)o(or)18 b(e)o(xample:)p Black Black
0 591 a Fa(debug_msg\("The)48 b(number)k(is)i(\045d\\n",)d(5\);)141
804 y Fe(F)o(or)23 b(more)g(details)i(see)f(the)g(comments)g(inside)h
(that)f(\002le.)0 1053 y Fc(2.10)99 b(ether)p 500 1053
30 4 v 37 w(compat.h)0 1227 y Fe(This)21 b(\002le)f(contains)k
(Ethernet-related)h(manipulation)f(compatibility)g(functions.)31
b(F)o(or)20 b(e)o(xample,)i(it)f(includes)i(the)f(appro-)0
1340 y(priate)h(system)g(\002les,)f(and)h(declares)h(functions)h
Fa(ether_aton\(\))16 b Fe(and)22 b Fa(ether_ntoa\(\))16
b Fe(\(implemented)24 b(locally)g(in)0 1453 y Fd(ether)p
190 1453 28 4 v 35 w(compat.c)p Fe(\))g(if)g(the)f(system)i(is)e
(missing)i(the)e(corresponding)28 b Fa(ether_aton\(3\))17
b Fe(and)24 b Fa(ether_ntoa\(3\))p Fe(.)0 1702 y Fc(2.11)99
b(e)o(v)o(entloop.hh)0 1876 y Fe(This)35 b(\002le)f(de\002nes)i
Fd(class)g(EventLoop)p Fe(.)65 b(It)35 b(is)g(used)h(to)f(co-ordinate)j
(interactions)h(between)d(a)f(T)m(imerList)g(and)g(a)g(Se-)0
1989 y(lectorList)c(for)f(XORP)d(processes.)49 b(All)29
b(XorpT)m(imer)h(and)g(select)h(operations)h(should)f(be)f
(co-ordinated)j(through)f(this)0 2102 y(interf)o(ace.)0
2351 y Fc(2.12)99 b(exceptions.hh)0 2526 y Fe(This)23
b(\002le)f(contains)j Fd(class)e(XorpException)p Fe(:)32
b(a)22 b(base)h(class)h(for)f(XORP)d(C++)i(e)o(xceptions.)31
b(It)23 b(contains)i(also)e(all)g(standard)0 2639 y(XORP)d(C++)h(e)o
(xceptions.)31 b(An)22 b(e)o(xample)h(of)f(such)h(e)o(xception)h(is)e
Fd(class)h(In)l(validF)-7 b(amily)25 b Fe(which)e(is)e(thro)n(wn)i(if)f
(the)g(address)0 2751 y(f)o(amily)i(is)g(in)l(v)n(alid)h(\(for)f(e)o
(xample,)g(by)g(an)f(IPvX)g(constructor)k(when)c(in)l(v)n(ok)o(ed)j
(with)e(an)f(in)l(v)n(alid)j(address)f(f)o(amily\).)0
3001 y Fc(2.13)99 b(heap.hh)0 3175 y Fe(This)22 b(\002le)f(contains)j
Fd(class)f(Heap)p Fe(.)29 b(The)21 b(Heap)h(class)h(is)f(used)h(by)f
(the)g(T)m(imerList)g(class)g(as)g(it')-5 b(s)23 b(priority)h(queue)f
(for)f(timers.)0 3288 y(This)i(implementation)i(supports)h(remo)o(v)n
(al)d(of)g(arbitrary)i(objects)f(from)f(the)g(heap,)h(e)n(v)o(en)f(if)f
(the)o(y)h(are)g(not)h(located)g(at)f(the)0 3401 y(top.)0
3650 y Fc(2.14)99 b(ioe)o(v)o(ents.hh)0 3824 y Fe(This)33
b(\002le)f(contains)j(the)e(enumerated)i Fd(IoEventT)-7
b(ype)35 b Fe(codes:)49 b(v)n(arious)35 b(e)n(v)o(ent)e(types)h
(supported)i(by)d(the)g(I/O)f(callback)0 3937 y(f)o(acade.)e(The)23
b(e)n(v)o(ent)h(types)h(are)f(used)g(by)g(clients)h(when)e(re)o
(gistering)k(interest)e(in)e(I/O)g(e)n(v)o(ents.)0 4186
y Fc(2.15)99 b(ipnet.hh,)26 b(ipv4net.hh,)g(ipv6net.hh,)g(ipvxnet.hh)0
4361 y Fe(These)k(\002les)f(contain)i(the)f(declaration)j(of)c(the)h
(follo)n(wing)h(classes:)42 b Fd(class)31 b(IPv4Net,)g(class)f
(IPv6Net,)h(class)f(IPvXNet)p Fe(,)0 4473 y(which)e(are)g(classes)h
(for)f(basic)h(subnet)h(addresses)g(\(for)e(IPv4,)h(IPv6)e(and)h(dual)h
(IPv4/6)f(address)i(f)o(amily)e(respecti)n(v)o(ely\).)0
4586 y(IPvXNet)23 b(can)h(be)f(used)i(to)e(store)i(a)e(subnet)i
(address)g(that)f(has)g(either)h(IPv4)e(or)h(IPv6)f(address)j(f)o
(amily)-6 b(.)141 4699 y(Most)30 b(of)g(the)h(implementation)i(is)c
(contained)k(in)d(\002le)f Fd(ipnet.hh)p Fe(,)k(which)e(contains)h(a)e
Fd(template)h(class)g(IPNet)p Fe(.)48 b(The)0 4812 y(IPv4Net,)23
b(IPv6Net,)h(and)g(IPvXNet)f(classes)i(are)f(deri)n(v)o(ed)g(from)g
(that)g(template.)p Black 1927 5400 a(5)p Black eop end
%%Page: 6 6
TeXDict begin 6 5 bop Black Black 0 91 a Fc(2.16)99 b(ipv4.hh,)25
b(ipv6.hh,)g(ipvx.hh)0 266 y Fe(These)i(\002les)g(contain)i(the)e
(declaration)k(for)c(the)g(follo)n(wing)i(classes:)38
b Fd(class)28 b(IPv4,)f(class)h(IPv6,)g(class)g(IPvX)p
Fe(,)e(which)h(are)0 379 y(classes)32 b(for)e(basic)i(IP)d(addresses)k
(\(for)d(IPv4,)i(IPv6)e(and)h(dual)g(IPv4/6)f(address)i(f)o(amily)f
(respecti)n(v)o(ely\).)52 b(IPvX)30 b(can)g(be)0 491
y(used)24 b(to)g(store)g(an)g(address)h(that)f(has)g(either)h(IPv4)e
(or)h(IPv6)f(address)j(f)o(amily)-6 b(.)0 741 y Fc(2.17)99
b(mac.hh)0 915 y Fe(This)22 b(\002le)g(declares)i(the)f(follo)n(wing)g
(classes:)31 b Fd(class)23 b(Mac,)f(class)h(EtherMac)p
Fe(.)29 b(The)22 b(\002rst)g(class)h(is)f(a)g(generic)i(container)h
(for)0 1028 y(an)o(y)f(type)g(of)f(MA)l(C.)f(The)h(second)j(class)e(is)
f(a)g(container)j(for)e(Ethernet)h(MA)l(C)d(address.)0
1277 y Fc(2.18)99 b(nexthop.hh)0 1451 y Fe(This)20 b(\002le)f(declares)
j(a)e(number)h(of)f(classes)h(that)g(can)f(be)g(used)h(to)f(contain)i
(routing)g(ne)o(xt-hop)g(information.)30 b(F)o(or)19
b(e)o(xample,)0 1564 y Fd(class)32 b(Ne)n(xtHop)f Fe(is)g(the)g
(generic)h(class)g(for)f(holding)h(information)h(about)f(routing)h(ne)o
(xt)e(hops.)51 b(Ne)o(xtHops)31 b(can)h(be)e(of)0 1677
y(man)o(y)23 b(types,)h(including)h(immediate)f(neighbors,)i(remote)e
(routers)g(\(with)f(IBGP\),)f(discard)j(or)d(unreachable)27
b(interf)o(aces,)0 1790 y(encapsulation)j(endpoints,)f(etc.)37
b(Ne)o(xtHop)26 b(itself)h(doesn')n(t)h(really)f(do)f(an)o(ything)i
(useful,)g(e)o(xcept)f(to)f(pro)o(vide)i(a)d(generic)0
1903 y(handle)g(for)f(the)g(specialized)i(subclasses.)32
b(The)23 b(specialized)k(subclasses)f(are:)p Black 136
2115 a Fb(\017)p Black 46 w Fe(IPPeerNe)o(xtHop)e(is)g(for)f(ne)o(xt)h
(hops)h(that)f(are)g(local)g(peers.)p Black 136 2303
a Fb(\017)p Black 46 w Fe(IPEncapsNe)o(xtHop)30 b(is)f(for)f(\223ne)o
(xt)i(hops\224)f(that)h(are)e(non-local,)k(and)d(require)i
(encapsulation)h(to)d(reach.)44 b(An)28 b(e)o(x-)227
2416 y(ample)c(is)g(the)f(PIM)g(Re)o(gister)h(Encapsulation.)p
Black 136 2604 a Fb(\017)p Black 46 w Fe(IPExternalNe)o(xtHop)i(An)d
(IP)f(ne)o(xthop)j(that)f(is)g(not)g(an)f(intermediate)j(neighbor)-5
b(.)p Black 136 2791 a Fb(\017)p Black 46 w Fe(DiscardNe)o(xtHop)26
b(is)d(a)g(discard)i(interf)o(ace.)p Black 136 2979 a
Fb(\017)p Black 46 w Fe(UnreachableNe)o(xtHop)i(is)d(an)f(unreachable)k
(interf)o(ace.)0 3228 y Fc(2.19)99 b(popen.hh)0 3402
y Fe(This)26 b(\002le)g(contains)i(the)f(interf)o(ace)i(for)d(the)h
(local)g(implementation)j(of)c Fd(popen\(2\))j Fe(and)d
Fd(pclose\(2\))p Fe(.)40 b(The)26 b(corresponding)0 3515
y(local)37 b(names)g(are)f Fd(popen2\(\))i Fe(and)f Fd(pclose2\(\))h
Fe(respecti)n(v)o(ely)-6 b(.)70 b(Unlik)o(e)36 b(the)h(system')-5
b(s)37 b Fd(popen\(2\))p Fe(,)k(the)c(local)g Fd(popen2\(\))0
3628 y Fe(implementation)29 b(allo)n(ws)d(the)h(user)f(to)g(specify)i
(the)e(streams)h(where)g(the)f Fd(stdout)j Fe(and)e Fd(stderr)i
Fe(of)d(the)h(command)f(will)g(be)0 3741 y(redirected)g(to.)0
3990 y Fc(2.20)99 b(pr)n(o\002le.hh)0 4164 y Fe(This)26
b(\002le)g(implements)i(the)f(mechanism)h(for)f(e)n(v)o(ent)g
(pro\002ling.)39 b(The)26 b(de)n(v)o(eloper)i(can)f(add)g(pro\002ling)h
(entries)g(at)f(v)n(arious)0 4277 y(places)32 b(of)e(the)h(program.)50
b(Each)30 b(pro\002ling)i(entry)f(has)g(a)f(name)g(and)h(it)f(can)g(be)
h(enabled)h(or)e(disabled.)51 b(In)31 b(addition,)j(a)0
4390 y(number)24 b(of)g(strings)h(can)f(be)g(added)g(to)g(each)g
(pro\002ling)h(entry)-6 b(,)24 b(and)g(those)h(strings)g(can)f(be)g
(read)g(at)f(some)h(later)g(stage.)0 4640 y Fc(2.21)99
b(random.hh)0 4814 y Fe(This)23 b(\002le)g(declares)j(the)e(API)e(for)i
(the)f(local)i(implementation)h(of)e(random\(3\).)p Black
1927 5400 a(6)p Black eop end
%%Page: 7 7
TeXDict begin 7 6 bop Black Black 0 91 a Fc(2.22)99 b(range.hh)0
266 y Fe(This)23 b(\002le)g(implements)i(the)f(follo)n(wing)h(classes:)
31 b Fd(class)25 b(U32Rang)o(e)o(,)f(class)h(IPv4Rang)o(e)o(,)f(class)h
(IPv4Rang)o(e)p Fe(.)141 379 y(Those)j(classes)i(implement)f(linear)g
(ranges)g(X..Y)d(\()p Fd(e)o(.g)o(.,)h Fe(for)h(inte)o(gers)i(or)e
(addresses\).)44 b(A)27 b(linear)i(range)g(is)e(de\002ned)0
491 y(by)f(its)f(lo)n(w)g(and)h(high)h(inclusi)n(v)o(e)g(boundaries.)38
b(It)26 b(is)f(the)h(user')-5 b(s)27 b(responisibility)j(to)c(ensure)h
(that)f(the)g(condition)i(\(lo)n(w)d Fb(\024)0 604 y
Fe(high\))g(al)o(w)o(ays)f(holds.)0 854 y Fc(2.23)99
b(r)n(ef)p 399 854 30 4 v 37 w(ptr)-10 b(.hh)0 1028 y
Fe(This)23 b(\002le)g(declares)j Fd(template)f(class)f(r)m(ef)p
1286 1028 28 4 v 34 w(ptr)r Fe(:)29 b(reference)d(counted)g(pointer)f
(class.)141 1141 y(The)c(ref)p 408 1141 V 33 w(ptr)h(class)g(is)e(a)h
(strong)h(reference)i(class.)29 b(It)20 b(maintains)j(a)e(count)h(of)f
(ho)n(w)f(man)o(y)h(references)j(to)d(an)g(object)h(e)o(x-)0
1254 y(ist)f(and)h(releases)h(the)f(memory)f(associated)j(with)d(the)g
(object)i(when)e(the)h(reference)h(count)g(reaches)g(zero.)28
b(The)21 b(reference)0 1367 y(pointer)k(can)f(be)g(dereferenced)j(lik)o
(e)d(an)g(ordinary)h(pointer)h(to)d(call)h(methods)h(on)e(the)h
(reference)i(counted)g(object.)141 1479 y(At)c(the)g(time)g(of)h
(writing)g(the)g(only)g(supported)i(memory)d(management)j(is)d(through)
i(the)f(ne)n(w)f(and)g(delete)i(operators.)0 1592 y(At)34
b(a)g(future)h(date,)j(this)d(class)h(should)g(support)g(the)f(STL)d
(allocator)37 b(classes)f(or)f(an)f(equi)n(v)n(alent)j(to)e(pro)o(vide)
h(greater)0 1705 y(\003e)o(xibility)-6 b(.)0 1954 y Fc(2.24)99
b(r)n(ef)p 399 1954 30 4 v 37 w(trie.hh)0 2129 y Fe(This)29
b(\002le)g(implements)i(a)f(trie)g(to)f(support)j(route)e(lookups.)49
b(The)29 b(implementation)k(is)c(template-based,)35 b(and)30
b(is)f(based)0 2242 y(on)24 b(the)f(code)i(in)e(trie.hh.)30
b(From)22 b(deleloper')-5 b(s)27 b(point)d(of)g(vie)n(w)-6
b(,)23 b(templates)i(RefT)m(rie,)e(RefT)m(rieNode,)g(RefT)m
(riePreOrderIt-)0 2355 y(erator)l(,)30 b(and)e(RefT)m
(riePostOrderIterator)k(are)c(the)g(most)f(important.)43
b(Those)28 b(templates)i(should)f(be)f(in)l(v)n(ok)o(ed)i(with)e(tw)o
(o)0 2467 y(classes,)d(the)f(basetype)i(\223)-7 b(A)d(\224)22
b(for)i(the)g(search)h(K)n(e)o(y)d(\(which)i(is)g(a)f(subnet,)i
Fa(IPNet)p Fe(\),)19 b(and)24 b(the)g(P)o(ayload.)141
2580 y(RefT)m(rie)f(dif)n(fers)i(from)e(T)m(rie)g(\(and)h(its)f
(associated)j(classes\))f(in)f(that)g(the)f(RefT)m(rieNode)h(includes)i
(a)c(reference)k(count)0 2693 y(of)i(ho)n(w)f(man)o(y)h(RefT)m
(rieIterators)i(are)e(pointing)i(at)e(it.)41 b(If)27
b(a)h(RefT)m(rieNode)g(is)g(deleted,)i(b)n(ut)e(has)h(a)e(non-zero)j
(reference)0 2806 y(count,)36 b(deletion)e(will)f(be)f(delayed)j(until)
e(the)g(reference)i(count)f(becomes)g(zero.)56 b(In)33
b(this)g(w)o(ay)-6 b(,)34 b(additions)h(and)e(dele-)0
2919 y(tions)23 b(to)e(the)h(RefT)m(rie)g(cannot)h(cause)f(a)g(RefT)m
(riePreOrderIterator)j(or)c(RefT)m(riePostOrderIterator)26
b(to)21 b(reference)j(in)l(v)n(alid)0 3032 y(memory)-6
b(,)28 b(although)h(a)e(deletion)i(and)f(subsequent)i(addition)f(can)e
(cause)h(the)g(payload)h(data)f(referenced)h(by)e(an)g(iterator)0
3145 y(to)c(change.)0 3394 y Fc(2.25)99 b(r)n(ound)p
537 3394 V 37 w(r)n(obin.hh)0 3568 y Fe(This)26 b(\002le)g(implements)i
(round-robin)i(queue)e(which)f(is)f(used)i(by)e(the)h(priority-based)k
(task)c(implementation)i(\(see)e(Sec-)0 3681 y(tion)d(2.31\).)29
b(It)24 b(is)f(used)h(internally)j(by)c(libxorp)j(and)e(shouldn')n(t)i
(be)e(used)g(by)g(the)g(rest)g(of)f(the)h(system.)0 3930
y Fc(2.26)99 b(run)p 434 3930 V 37 w(command.hh)0 4105
y Fe(This)23 b(\002le)f(implements)i Fd(class)g(RunCommand)i
Fe(which)d(pro)o(vides)i(the)e(mechanism)h(for)f(running)i(an)e(e)o
(xternal)i(command.)0 4218 y(In)e(addition)j(to)e(the)f(command)i(name)
e(and)h(its)g(ar)n(guments,)i(the)d(de)n(v)o(eloper)j(can)e(specify)h
(three)g(callbacks:)p Black 136 4430 a Fb(\017)p Black
46 w Fd(stdout)p 452 4430 28 4 v 35 w(cb)p Fe(:)30 b(the)23
b(callback)j(to)d(call)h(when)g(there)h(is)e(data)h(on)g(the)g
(standard)h(output.)p Black 136 4618 a Fb(\017)p Black
46 w Fd(stderr)p 447 4618 V 35 w(cb)p Fe(:)k(the)24 b(callback)i(to)d
(call)h(when)g(there)g(is)g(data)g(on)g(the)f(standard)j(error)-5
b(.)p Black 136 4805 a Fb(\017)p Black 46 w Fd(done)p
407 4805 V 35 w(cb)p Fe(:)29 b(the)24 b(callback)h(to)f(call)g(when)g
(the)f(command)i(is)e(completed.)p Black 1927 5400 a(7)p
Black eop end
%%Page: 8 8
TeXDict begin 8 7 bop Black Black 0 91 a Fc(2.27)99 b(safe)p
446 91 30 4 v 36 w(callback)p 836 91 V 36 w(obj.hh)0
266 y Fe(This)29 b(\002le)f(declares)i(class)g Fd(Callbac)n
(kSafeObject)p Fe(.)49 b(Objects)29 b(that)g(wish)g(to)g(be)f(callback)
j(safe)e(should)i(be)d(deri)n(v)o(ed)i(from)0 379 y(this)22
b(class.)30 b(When)22 b(a)f(CallbackSafeObject)26 b(is)21
b(destructed)k(it)d(informs)h(all)f(the)g(callbacks)i(that)f(refer)g
(to)e(it)h(that)h(this)f(is)g(the)0 491 y(case)i(and)g(in)l(v)n
(alidates)j(\(sets)d(to)g(null\))g(the)g(object)h(the)o(y)f(point)g
(to.)0 741 y Fc(2.28)99 b(selector)-10 b(.hh)0 915 y
Fe(This)23 b(\002le)g(contains)j(the)e(I/O)f(multiple)o(xing)j(interf)o
(ace.)31 b(The)23 b(particular)j(class)e(of)g(interest)h(is)f
Fd(class)g(SelectorList)p Fe(.)141 1028 y(A)f(SelectorList)i(pro)o
(vides)g(an)f(entity)h(where)f(callbacks)i(for)d(pending)j(I/O)d
(operations)k(on)c(\002le)g(descriptors)k(may)c(be)0
1141 y(re)o(gistered.)48 b(The)29 b(callbacks)i(are)f(in)l(v)n(ok)o(ed)
i(when)d(one)g(of)h(the)f(select)h(methods)h(is)e(called)h(and)g(I/O)e
(is)h(pending)j(on)d(the)0 1254 y(particular)d(descriptors.)0
1503 y Fc(2.29)99 b(ser)o(vice.hh)0 1677 y Fe(This)22
b(\002le)g(declares)i Fd(class)g(ServiceBase)p Fe(.)30
b(A)22 b(service)i(is)e(a)g(class)h(that)g(can)g(be)f(started)i(and)f
(stopped)h(and)f(w)o(ould)g(typically)0 1790 y(in)l(v)n(olv)o(e)30
b(some)d(asynchronous)32 b(processing)e(to)d(transition)j(between)f
(states.)42 b(The)27 b(base)h(class)g(pro)o(vides)h(a)e(state)i(model)0
1903 y(and)22 b(methods)i(for)e(transitioning)k(between)d(states.)29
b(Mandatory)24 b(transition)h(methods,)e(lik)o(e)f(start)h(and)f(stop,)
h(are)f(abstract)0 2016 y(in)h(the)h(base)h(class.)0
2265 y Fc(2.30)99 b(status)p 529 2265 V 36 w(codes.h)0
2439 y Fe(This)18 b(\002le)g(contains)i(the)e(enumerated)j
Fd(Pr)l(ocessStatus)g Fe(codes)f(that)f(a)e(XORP)f(process)k(should)g
(report)f(to)g(the)f(XORP)e(router)0 2552 y(manager)27
b(\()p Fd(rtrmgr)r Fe(\))h([1].)36 b(The)26 b(\002le)f(itself)i
(contains)i(a)c(detailed)j(e)o(xplanation)h(of)d(the)h(process)h
(states)f(\(v)n(alid)g(transaction)0 2665 y(between)e(states,)f
(triggering)i(e)n(v)o(ents,)e(actions,)h(etc\).)0 2914
y Fc(2.31)99 b(task.hh)0 3089 y Fe(This)31 b(\002le)g(declares)j(and)e
(implements)h(class)f Fd(class)g(XorpT)-8 b(ask)p Fe(.)53
b(Class)32 b Fd(XorpT)-8 b(ask)33 b Fe(is)f(used)g(for)g
(priority-based)j(tasks.)0 3201 y(Each)28 b(task)h(can)f(ha)n(v)o(e)h
(a)e(priority)j(between)f Fd(PRIORITY)p 1830 3201 28
4 v 31 w(HIGHEST)k Fe(and)28 b Fd(PRIORITY)p 2828 3201
V 31 w(LO)-5 b(WEST)p Fe(.)26 b(A)h(number)i(of)e(sug-)0
3314 y(gested)e(priorities)h(and)e(weights)h(are)e(declared)j(inside)f
(that)f(class:)p Black Black 0 3527 a Fa(class)52 b(XorpTask)f({)0
3640 y(public:)218 3753 y(...)218 3979 y(//)218 4091
y(//)j(Task/Timer)c(priorities.)f(Those)k(are)g(suggested)d(values.)218
4204 y(//)218 4317 y(static)i(const)g(int)h(PRIORITY_HIGHEST)48
b(=)54 b(0;)218 4430 y(static)e(const)g(int)h(PRIORITY_XRL_KEE)o(PA)o
(LI)o(VE)48 b(=)54 b(1;)218 4543 y(static)e(const)g(int)h
(PRIORITY_HIGH)c(=)54 b(2;)218 4656 y(static)e(const)g(int)h
(PRIORITY_DEFAULT)48 b(=)54 b(4;)218 4769 y(static)e(const)g(int)h
(PRIORITY_BACKGRO)o(UN)o(D)48 b(=)54 b(7;)218 4882 y(static)e(const)g
(int)h(PRIORITY_LOWEST)48 b(=)54 b(9;)218 4995 y(static)e(const)g(int)h
(PRIORITY_INFINIT)o(Y)48 b(=)54 b(255;)p Black 1927 5400
a Fe(8)p Black eop end
%%Page: 9 9
TeXDict begin 9 8 bop Black Black 218 91 a Fa(//)218
204 y(//)54 b(Task/Timer)c(weights.)h(Those)h(are)h(suggested)e
(values.)218 317 y(//)218 430 y(static)h(const)g(int)h(WEIGHT_DEFAULT)c
(=)54 b(1;)218 656 y(...)0 769 y(};)0 1124 y Fc(2.32)99
b(time)p 468 1124 30 4 v 36 w(slice.hh)0 1298 y Fe(This)23
b(\002le)g(declares)i Fd(class)f(T)-5 b(imeSlice)p Fe(.)30
b(This)23 b(class)h(can)g(be)f(used)h(to)f(compute)i(whether)f(some)g
(processing)i(is)d(taking)i(too)0 1411 y(long)f(time)f(to)f(complete.)
30 b(It)23 b(is)g(up)g(to)g(the)g(program)h(that)g(uses)f(T)m(imeSlice)
g(to)g(check)h(whether)g(the)f(processing)j(is)d(taking)0
1524 y(too)h(long,)g(and)g(suspend)i(processing)g(of)e(that)g(task)g
(if)f(necessary)-6 b(.)0 1766 y Fc(2.33)99 b(timer)-10
b(.hh)0 1940 y Fe(This)30 b(\002le)g(declares)i(the)f(XORP)d(timer)j(f)
o(acility)-6 b(.)51 b(The)30 b(only)h(class)h(of)e(interest)i(from)e(a)
g(de)n(v)o(eloper')-5 b(s)33 b(point)f(of)e(vie)n(w)g(is)0
2053 y Fd(class)25 b(XorpT)-5 b(imer)p Fe(.)0 2295 y
Fc(2.34)99 b(timespent.hh)0 2469 y Fe(This)22 b(\002les)g(declares)i
(and)f(implements)h Fd(class)f(T)-5 b(imeSpent)p Fe(.)29
b(This)22 b(class)h(used)g(for)g(deb)n(ugging)i(purpose)g(to)d(\002nd)g
(code)h(that)0 2582 y(has)h(tak)o(en)h(too)f(long)g(to)f(e)o(x)o
(ecute.)0 2824 y Fc(2.35)99 b(time)o(v)o(al.hh)0 2999
y Fe(This)18 b(\002le)g(contains)j(implementation)g(of)e
Fd(class)g(T)-5 b(imeV)-10 b(al)18 b Fe(for)h(storing)h(time)f(v)n
(alues)g(\(similar)h(to)e Fd(struct)i(time)o(val)p Fe(\).)28
b Fd(T)-5 b(imeV)-10 b(al)0 3112 y Fe(implements)25 b(the)f
(appropriate)i(constructors)h(and)d(numerous)h(helper)g(methods)g(\()p
Fd(e)o(.g)o(.,)d Fe(Less-Than)i(and)g(Addition)h(oper)n(-)0
3224 y(ators,)f(etc\).)0 3467 y Fc(2.36)99 b(tlv)-7 b(.hh)0
3641 y Fe(This)21 b(\002le)g(contains)j(the)e(implementation)i(of)e
Fd(class)h(Tlv)d Fe(for)i(reading)i(and)e(writing)g(TL)-9
b(V)20 b(\(T)-7 b(ype-Lenght-V)d(alue\))24 b(records)0
3754 y(from/to)g(a)g(\002le.)k(The)23 b(records)i(are)f(stored)h(in)e
(netw)o(ork)i(byte)f(order)h(format.)0 3996 y Fc(2.37)99
b(tok)o(en.hh)0 4170 y Fe(This)30 b(\002le)f(contains)j(v)n(arious)f
(tok)o(en-related)j(de\002nitions.)50 b(T)-7 b(ok)o(en)30
b(is)g(a)f(sequence)j(of)e(symbols)h(separated)h(from)e(other)0
4283 y(tok)o(ens)j(by)f(some)g(pre-de\002ned)h(symbols.)55
b(In)31 b(this)h(implementation,)37 b(the)31 b(separators)k(are)d(the)f
(is)p 3219 4283 28 4 v 34 w(space\(3\))i(and)g('\227')0
4396 y(characters.)48 b(The)28 b(f)o(acilities)k(in)d(that)g(\002le)g
(are)g(to)g(cop)o(y)h(tok)o(ens,)i(remo)o(ving)e(them)f(from)g(a)f(tok)
o(en)j(line,)f(etc.)46 b(Currently)-6 b(,)0 4509 y(this)24
b(\002le)f(is)g(used)i(only)f(by)g(the)g(CLI,)d(therefore)26
b(in)e(the)g(future)g(it)g(may)f(be)g(mo)o(v)o(ed)h(to)f(the)h(CLI)e
(itself.)0 4751 y Fc(2.38)99 b(transactions.hh)0 4925
y Fe(This)29 b(\002le)h(contains)h(f)o(acility)h(for)e(transactions.)50
b(A)29 b(transaction)k(consists)e(of)f(a)f(sequence)j(of)e(transaction)
j(operations,)0 5038 y(each)25 b(of)f(which)g(is)g(a)g(command.)31
b(The)23 b(T)m(ransactionManager)29 b(class)c(pro)o(vides)h(a)d
(front-end)k(for)d(creating,)i(dispatching,)0 5151 y(and)e(destro)o
(ying)j(transactions.)p Black 1927 5400 a(9)p Black eop
end
%%Page: 10 10
TeXDict begin 10 9 bop Black Black 0 91 a Fc(2.39)99
b(trie.hh)0 266 y Fe(This)18 b(\002le)f(implements)j(a)e(trie)g(to)g
(support)i(route)f(lookups.)29 b(The)18 b(implementation)j(is)d
(template-based.)30 b(From)17 b(deleloper')-5 b(s)0 379
y(point)31 b(of)e(vie)n(w)-6 b(,)30 b(templates)h(T)m(rie,)g(T)m
(rieNode,)g(T)m(riePreOrderIterator)l(,)j(and)c(T)m
(riePostOrderIterator)j(are)d(the)f(most)h(im-)0 491
y(portant.)h(Those)24 b(templates)h(should)g(be)f(in)l(v)n(ok)o(ed)i
(with)e(tw)o(o)f(classes,)i(the)f(basetype)i(\223)-7
b(A)d(\224)23 b(for)h(the)f(search)i(K)n(e)o(y)e(\(which)h(is)0
604 y(a)f(subnet,)i Fa(IPNet)p Fe(\),)19 b(and)24
b(the)g(P)o(ayload.)0 854 y Fc(2.40)99 b(utility)-7 b(.h)0
1028 y Fe(This)28 b(\002le)g(contains)i(v)n(arious)g(mini-utilities.)45
b(Those)29 b(utilities)h(are)e(mostly)h(compiler)n(-related)k(helpers;)
f Fd(e)o(.g)o(.,)c Fe(compile-)0 1141 y(time)23 b(assertion,)j
Fd(UNUSED\(var\))d Fe(macro)h(to)f(suppress)j(w)o(arnings)f(about)g
(unused)g(functions)h(ar)n(guments,)g(etc.)0 1390 y Fc(2.41)99
b(utils.hh)0 1564 y Fe(This)25 b(\002le)f(contains)j(v)n(arious)g
(helper)f(utilities.)35 b(Currently)-6 b(,)26 b(the)g(only)f(tw)o(o)g
(utilities)i(are)e(template)h(functions)i(to)c(delete)j(a)0
1677 y(list)d(or)f(array)i(of)e(pointers)j(and)e(the)g(objects)h
(pointed)g(to.)0 1926 y Fc(2.42)99 b(vif)o(.hh)0 2101
y Fe(This)23 b(\002le)g(declares)j(the)e(follo)n(wing)h(classes:)31
b Fd(class)24 b(V)-7 b(if)o(,)23 b(class)i(V)-7 b(ifAddr)p
Fe(.)141 2213 y(Class)26 b(V)-5 b(if)25 b(holds)i(information)i(about)e
(a)f(virtual)h(interf)o(ace.)39 b(A)25 b(V)-5 b(if)24
b(may)i(represent)j(a)c(physical)j(interf)o(ace,)h(or)c(may)0
2326 y(represent)36 b(more)d(abstract)i(entities)g(such)f(as)f(the)h
(Discard)g(or)f(Unreachable)j(interf)o(ace,)i(or)33 b(a)f(VLAN)f(on)j
(a)e(physical)0 2439 y(interf)o(ace.)44 b(V)-5 b(ifAddr)27
b(holds)i(information)h(about)f(an)f(address)i(of)e(a)f(virtual)i
(interf)o(ace.)44 b(A)27 b(virtual)i(interf)o(ace)h(may)e(ha)n(v)o(e)0
2552 y(more)c(than)g(one)g(V)-5 b(ifAddr)g(.)0 2801 y
Fc(2.43)99 b(win)p 435 2801 30 4 v 36 w(dispatcher)-10
b(.hh,)27 b(win)p 1250 2801 V 36 w(io.hh)0 2976 y Fe(Those)f(are)f(W)l
(indo)n(ws-speci\002c)j(header)f(\002les)e(which)h(are)g(used)g
(internally)i(by)d(libxorp)j(and)d(shouldn')n(t)k(be)c(used)h(by)g(the)
0 3089 y(rest)e(of)f(the)h(system.)0 3338 y Fc(2.44)99
b(xlog)o(.h)0 3512 y Fe(This)27 b(\002le)f(pro)o(vides)i(f)o(acility)h
(for)e(log)g(messages)h(generation,)j(similar)c(to)g(syslog.)40
b(The)26 b(log)h(messages)h(may)f(be)g(output)0 3625
y(to)c(multiple)i(output)g(streams)g(simultaneously)-6
b(.)32 b(Belo)n(w)23 b(is)h(a)f(description)j(of)e(ho)n(w)f(to)g(use)h
(the)g(log)g(utility)-6 b(.)p Black 136 3837 a Fb(\017)p
Black 46 w Fe(The)30 b(xlog)i(utility)g(assumes)g(that)f
Fa(XORP_MODULE_NAM)o(E)23 b Fe(is)31 b(de\002ned)g(\(per)h(module\).)51
b(T)-7 b(o)29 b(do)i(so,)h(you)f(must)227 3950 y(ha)n(v)o(e)24
b(in)g(your)g(directory)i(a)d(\002le)g(lik)o(e)h(\223foo)p
1577 3950 28 4 v 35 w(module.h\224,)g(and)g(inside)h(it)f(should)h
(contain)g(something)h(lik)o(e:)p Black Black 227 4200
a Fa(#define)52 b(XORP_MODULE_NA)o(ME)c("BGP")227 4450
y Fe(This)23 b(\002le)f(then)i(has)f(to)g(be)g(included)i(by)e(each)h
(*.c)e(and)i(*.cc)f(\002le,)f(and)h(MUST)e(be)h(the)i(\002rst)e(of)h
(the)g(included)i(local)227 4563 y(\002les.)p Black 136
4751 a Fb(\017)p Black 46 w Fe(Before)f(using)g(the)f(xlog)g(utility)-6
b(,)24 b(a)f(program)h(MUST)c(initialize)25 b(it)e(\002rst)f(\(think)i
(of)f(this)g(as)g(the)g(xlog)g(constructor\):)p Black
Black 227 5001 a Fa(int)53 b(xlog_init\(const)48 b(char)1591
5016 y(*)1646 5001 y(process_name,)g(const)k(char)3009
5016 y(*)3064 5001 y(preamble_messa)o(ge)o(\);)p Black
1905 5400 a Fe(10)p Black eop end
%%Page: 11 11
TeXDict begin 11 10 bop Black Black 227 91 a Fe(Further)l(,)25
b(if)e(a)g(program)i(tries)f(to)g(use)f(xlog)i(without)f(initializing)j
(it)c(\002rst,)g(the)h(program)h(will)e(e)o(xit.)p Black
136 276 a Fb(\017)p Black 46 w Fe(T)-7 b(o)23 b(add)h(output)h
(streams,)f(you)g(MUST)d(use)j(one)g(of)g(the)g(follo)n(wing)h(\(or)e
(both\):)p Black Black 227 516 a Fa(int)53 b(xlog_add_output\()o(FI)o
(LE)1542 532 y(*)1645 516 y(fp\);)227 629 y(int)g(xlog_add_default)o
(_o)o(ut)o(pu)o(t\(v)o(oi)o(d\))o(;)p Black 136 868 a
Fb(\017)p Black 46 w Fe(T)-7 b(o)23 b(change)i(the)f(v)o(erbosity)h(of)
f(all)g(xlog)g(messages,)h(use:)p Black Black 227 1108
a Fa(xlog_set_verbos)o(e\(x)o(lo)o(g_)o(ve)o(rb)o(ose)o(_t)48
b(verbose_level\))o(;)227 1347 y Fe(where)24 b(\223v)o(erbose)p
796 1347 28 4 v 36 w(le)n(v)o(el\224)g(is)f(one)h(of)g(the)f(follo)n
(wing)i(\()p Fa(XLOG_VERBOSE_MAX)16 b Fe(e)o(xcluded\):)p
Black Black 227 1587 a Fa(typedef)52 b(enum)g({)445 1700
y(XLOG_VERBOSE_LOW)c(=)54 b(0,)381 b(/)2028 1716 y(*)2136
1700 y(0)2245 1716 y(*)2300 1700 y(/)445 1813 y(XLOG_VERBOSE_MED)o(IU)o
(M,)430 b(/)2028 1829 y(*)2136 1813 y(1)2245 1829 y(*)2300
1813 y(/)445 1926 y(XLOG_VERBOSE_HIG)o(H,)539 b(/)2028
1942 y(*)2136 1926 y(2)2245 1942 y(*)2300 1926 y(/)445
2039 y(XLOG_VERBOSE_MAX)227 2152 y(})54 b(xlog_verbose_t;)227
2391 y Fe(Def)o(ault)30 b(v)n(alue)f(is)g Fa(XLOG_VERBOSE_LO)o(W)22
b Fe(\(least)30 b(details\).)46 b(Lar)n(ger)29 b(v)n(alue)h(for)f
(\223v)o(erbose)p 3247 2391 V 35 w(le)n(v)o(el\224)h(adds)f(more)227
2504 y(details)38 b(to)d(the)h(preamble)h(message)g(\(e.g.,)i(\002le)c
(name,)j(line)f(number)l(,)i(etc,)g(about)e(the)f(place)h(where)f(the)g
(log)227 2617 y(message)25 b(w)o(as)e(initiated\).)227
2766 y(Note)h(that)g(the)g(v)o(erbosity)i(le)n(v)o(el)e(of)g(message)h
(type)f Fa(XLOG_LEVEL_FATA)o(L)17 b Fe(\(see)24 b(belo)n(w\))g(cannot)h
(be)f(changed)227 2879 y(and)g(is)g(al)o(w)o(ays)g(set)g(to)f(the)h
(most)g(v)o(erbose)h(le)n(v)o(el)e(\()p Fa(XLOG_VERBOSE_HIG)o(H)p
Fe(\).)p Black 136 3063 a Fb(\017)p Black 46 w Fe(T)-7
b(o)23 b(change)i(the)f(v)o(erbosity)h(of)f(a)f(particular)j(message)f
(type,)f(use:)p Black Black 227 3303 a Fa(void)53 b(xlog_level_set_)o
(ve)o(rb)o(os)o(e\(x)o(lo)o(g_)o(le)o(ve)o(l_t)48 b(log_level,)227
3416 y(xlog_verbose_t)g(verbose_level\);)227 3656 y Fe(where)24
b(\223log)p 632 3656 V 34 w(le)n(v)o(el\224)h(is)e(one)h(of)f(the)h
(follo)n(wing)h(\()p Fa(XLOG_LEVEL_MIN)17 b Fe(and)24
b Fa(XLOG_LEVEL_MAX)16 b Fe(e)o(xcluded\):)p Black Black
227 3895 a Fa(typedef)52 b(enum)g({)445 4008 y(XLOG_LEVEL_MIN)d(=)54
b(0,)490 b(/)2028 4024 y(*)2136 4008 y(0)2245 4024 y(*)2300
4008 y(/)445 4121 y(XLOG_LEVEL_FATAL)48 b(=)54 b(0,)381
b(/)2028 4137 y(*)2136 4121 y(0)2245 4137 y(*)2300 4121
y(/)445 4234 y(XLOG_LEVEL_ERROR)o(,)594 b(/)2028 4250
y(*)2136 4234 y(1)2245 4250 y(*)2300 4234 y(/)445 4347
y(XLOG_LEVEL_WARNI)o(NG)o(,)485 b(/)2028 4363 y(*)2136
4347 y(2)2245 4363 y(*)2300 4347 y(/)445 4460 y(XLOG_LEVEL_INFO,)648
b(/)2028 4476 y(*)2136 4460 y(3)2245 4476 y(*)2300 4460
y(/)445 4573 y(XLOG_LEVEL_TRACE)o(,)594 b(/)2028 4588
y(*)2136 4573 y(4)2245 4588 y(*)2300 4573 y(/)445 4686
y(XLOG_LEVEL_MAX)227 4798 y(})54 b(xlog_level_t;)227
5038 y Fe(Note)19 b(that)g(the)g(v)o(erbosity)i(le)n(v)o(el)e(of)g
(message)h(type)g Fa(XLOG_LEVEL_FAT)o(AL)11 b Fe(cannot)21
b(be)e(changed)h(and)g(is)e(al)o(w)o(ays)227 5151 y(set)24
b(to)f(the)h(most)g(v)o(erbose)h(le)n(v)o(el)f(\()p Fa(XLOG_VERBOSE_HI)
o(GH)o Fe(\).)p Black 1905 5400 a(11)p Black eop end
%%Page: 12 12
TeXDict begin 12 11 bop Black Black Black 136 91 a Fb(\017)p
Black 46 w Fe(T)-7 b(o)23 b(start)h(the)g(xlog)g(utility)-6
b(,)25 b(you)f(MUST)d(use:)p Black Black 227 308 a Fa(int)53
b(xlog_start\(void\))o(;)p Black 136 526 a Fb(\017)p
Black 46 w Fe(T)-7 b(o)23 b(enable)i(or)e(disable)i(a)f(particular)i
(message)e(type,)g(use:)p Black Black 227 743 a Fa(int)53
b(xlog_enable\(xlog)o(_l)o(ev)o(el)o(_t)48 b(log_level\);)227
856 y(int)53 b(xlog_disable\(xlo)o(g_)o(le)o(ve)o(l_t)48
b(log_level\);)227 1073 y Fe(By)23 b(def)o(ault,)i(all)f(le)n(v)o(els)g
(are)g(enabled.)30 b(Note)24 b(that)g Fa(XLOG_LEVEL_FAT)o(AL)16
b Fe(cannot)25 b(be)f(disabled.)p Black 136 1251 a Fb(\017)p
Black 46 w Fe(T)-7 b(o)23 b(stop)h(the)g(logging,)h(use:)p
Black Black 227 1468 a Fa(int)53 b(xlog_stop\(void\);)227
1685 y Fe(Later)24 b(you)g(can)g(restart)h(it)e(again)h(by)g
Fa(xlog_start\(\))p Black 136 1864 a Fb(\017)p Black
46 w Fe(T)-7 b(o)23 b(gracefully)j(e)o(xit)e(the)g(xlog)g(utility)-6
b(,)25 b(use)p Black Black 227 2081 a Fa(int)272 b(xlog_exit\(void)o
(\);)227 2298 y Fe(\(think)25 b(of)f(this)g(as)f(the)h(xlog)g
(destructor\).)141 2482 y(Belo)n(w)f(is)g(an)h(e)o(xample)g(of)g(using)
g(the)g(XLOG)d(f)o(acility:)p Black Black 0 2667 a Fa(int)0
2780 y(main\(int)51 b(argc,)h(char)1091 2796 y(*)1146
2780 y(argv[]\))0 2893 y({)218 3006 y(//)218 3119 y(//)i(Initialize)c
(and)j(start)f(xlog)218 3231 y(//)218 3344 y(xlog_init\(argv[)o(0])o(,)
d(NULL\);)218 3457 y(xlog_set_verbos)o(e\()o(XLO)o(G_)o(VE)o(RB)o(OS)o
(E_L)o(OW)o(\);)f(//)53 b(Least)g(verbose)e(messages)218
3570 y(//)j(Increase)d(verbosity)f(of)k(the)f(error)f(messages)218
3683 y(xlog_level_set_)o(ve)o(rbo)o(se)o(\(X)o(LO)o(G_)o(LEV)o(EL)o(_E)
o(RR)o(OR)o(,)d(XLOG_VERBOSE_H)o(IG)o(H\))o(;)218 3796
y(xlog_add_defaul)o(t_)o(out)o(pu)o(t\()o(\);)218 3909
y(xlog_start\(\);)218 4135 y(//)54 b(Do)f(something)218
4361 y(//)218 4473 y(//)h(Gracefully)c(stop)j(and)g(exit)f(xlog)218
4586 y(//)218 4699 y(xlog_stop\(\);)218 4812 y(xlog_exit\(\);)218
5038 y(exit)h(\(0\);)0 5151 y(})p Black 1905 5400 a Fe(12)p
Black eop end
%%Page: 13 13
TeXDict begin 13 12 bop Black Black 141 91 a Fe(T)-7
b(ypically)h(,)22 b(a)d(de)n(v)o(eloper)j(w)o(ould)f(use)f(the)g
(macros)h(described)i(belo)n(w)d(to)f(print)i(a)f(message,)h(add)g(an)f
(assert)h(statement,)0 204 y(place)29 b(a)e(mark)o(er)l(,)i(etc.)41
b(If)28 b(a)f(macro)h(accepts)h(a)f(message)g(to)g(print,)h(the)f
(format)g(of)g(the)g(message)h(is)e(same)h(as)f(printf\(3\).)0
317 y(The)j(only)g(dif)n(ference)j(is)c(that)i(the)f(xlog)h(utility)g
(automatically)i(adds)e Fa('\\n')p Fe(,)e(\(i.e.)48 b(end-of-line\))33
b(at)d(the)g(end)h(of)e(each)0 430 y(string)c(speci\002ed)g(by)e
Fa(format)p Fe(:)p Black 136 643 a Fb(\017)p Black 46
w Fa(XLOG_FATAL\(cons)o(t)49 b(char)1427 658 y(*)1482
643 y(format,)i(...\))227 756 y Fe(Write)24 b(a)f(F)-7
b(A)d(T)i(AL)20 b(message)25 b(to)f(the)f(xlog)i(output)g(streams)f
(and)g(abort)h(the)f(program.)p Black 136 943 a Fb(\017)p
Black 46 w Fa(XLOG_ERROR\(cons)o(t)49 b(char)1427 959
y(*)1482 943 y(format,)i(...\))227 1056 y Fe(Write)24
b(an)g(ERR)l(OR)d(message)j(to)g(the)g(xlog)g(output)h(streams.)p
Black 136 1244 a Fb(\017)p Black 46 w Fa(XLOG_WARNING\(co)o(nst)48
b(char)1536 1260 y(*)1591 1244 y(format,)j(...\))227
1357 y Fe(Write)24 b(a)f(W)-11 b(ARNING)21 b(message)k(to)e(the)h(xlog)
h(output)g(streams.)p Black 136 1544 a Fb(\017)p Black
46 w Fa(XLOG_INFO\(const)48 b(char)1373 1560 y(*)1428
1544 y(format,)j(...\))227 1657 y Fe(Write)24 b(an)g(INFO)d(message)k
(to)f(the)f(xlog)i(output)g(streams.)p Black 136 1845
a Fb(\017)p Black 46 w Fa(XLOG_TRACE\(int)48 b(cond_boolean,)h(const)j
(char)2409 1861 y(*)2464 1845 y(format,)f(...\))227 1958
y Fe(Write)24 b(a)f(TRA)l(CE)e(message)k(to)e(the)h(xlog)h(output)g
(stream,)e(b)n(ut)i(only)f(if)f Fa(cond_boolean)17 b
Fe(is)24 b(not)g(0.)p Black 136 2145 a Fb(\017)p Black
46 w Fa(XLOG_ASSERT\(ass)o(ert)o(io)o(n\))227 2258 y
Fe(The)30 b(XORP)d(replacement)33 b(for)d(assert\(3\),)j(e)o(xcept)e
(that)g(it)f(cannot)h(be)f(conditionally)k(disabled)e(and)f(logs)f
(error)227 2371 y(messages)25 b(through)h(the)e(standard)h(xlog)g
(mechanism.)30 b(It)23 b(calls)h Fa(XLOG_FATAL\(\))18
b Fe(if)23 b(the)h(assertion)i(f)o(ails.)p Black 136
2559 a Fb(\017)p Black 46 w Fa(XLOG_UNREACHABL)o(E\(\))227
2672 y Fe(A)d(mark)o(er)h(that)g(can)g(be)f(used)i(to)e(indicate)j
(code)e(that)g(should)h(ne)n(v)o(er)f(be)g(e)o(x)o(ecuted.)p
Black 136 2859 a Fb(\017)p Black 46 w Fa(XLOG_UNFINISHED)o(\(\))227
2972 y Fe(A)f(mark)o(er)h(that)g(can)g(be)f(used)i(to)e(indicate)j
(code)e(that)g(is)g(not)g(yet)f(implemented)j(and)e(hence)h(should)g
(not)f(be)f(run.)0 3221 y Fc(2.45)99 b(xor)o(p.h)0 3396
y Fe(This)28 b(is)h(the)f(XORP)e(main)j(include)h(\002le)e(that)h
(should)h(be)e(included)j(by)d(all)h(XORP)d(C)h(and)i(C++)f(\002les.)43
b(This)28 b(\002le)g(itself)0 3509 y(includes)e(a)d(number)h(of)g
(frequently)i(used)e(system)h(header)g(\002les,)e(de\002nes)h(se)n(v)o
(eral)h(commonly)f(used)h(v)n(alues,)f(etc.)0 3758 y
Fc(2.46)99 b(xor)o(pfd.hh)0 3932 y Fe(This)23 b(\002le)g(contains)j
(the)e(implementation)i(of)e Fd(class)g(XorpFd)i Fe(used)f(to)e
(encapsulate)k(a)c(\002le)g(descriptor)-5 b(.)141 4045
y(It)36 b(e)o(xists)g(because)i(of)e(fundamental)i(dif)n(ferences)h
(between)e(UNIX)d(and)i(W)l(indo)n(ws)h(in)e(terms)h(of)g(ho)n(w)f(the)
i(tw)o(o)0 4158 y(f)o(amilies)31 b(of)f(operating)i(systems)f(deal)g
(with)e(\002le)h(descriptors;)36 b(in)30 b(most)g(\003a)n(v)n(ours)h
(of)f(UNIX,)e(all)i(\002le)f(descriptors)k(are)0 4271
y(created)k(equal,)i(and)d(may)f(be)h(represented)j(using)d(an)g('int')
g(type)g(which)g(is)f(usually)i(32)f(bits)g(wide.)64
b(In)36 b(W)l(indo)n(ws,)0 4384 y(sock)o(ets)27 b(are)d(of)h(type)g
(SOCKET)-7 b(,)22 b(which)j(is)f(a)h(typedef)h(alias)g(of)e(u)p
2130 4384 28 4 v 33 w(int;)i(whereas)g(all)f(other)g(system)h(objects)g
(are)f(of)f(type)0 4497 y(HANDLE,)c(which)k(in)f(turn)i(is)e(a)g
(typedef)i(alias)g(of)e(')-5 b(v)n(oid)26 b(*'.)0 4789
y Ff(A)120 b(Modi\002cation)31 b(History)p Black 136
4996 a Fb(\017)p Black 46 w Fe(December)25 b(11,)e(2002:)30
b(Initial)25 b(v)o(ersion)g(0.1)e(completed.)p Black
1905 5400 a(13)p Black eop end
%%Page: 14 14
TeXDict begin 14 13 bop Black Black Black 136 91 a Fb(\017)p
Black 46 w Fe(March)27 b(10,)g(2003:)36 b(Updated)28
b(to)e(match)h(XORP)d(release)k(0.2:)34 b(Added)27 b(information)i
(about)f(RefT)m(rie.)37 b(Miscella-)227 204 y(neous)25
b(cleanup.)p Black 136 392 a Fb(\017)p Black 46 w Fe(June)37
b(9,)i(2003:)56 b(Updated)38 b(to)e(match)g(XORP)e(release)k(0.3:)55
b(Added)37 b(information)h(for)f Fd(ether)p 3337 392
28 4 v 34 w(compat.h)p Fe(,)k Fd(sta-)227 505 y(tus)p
337 505 V 34 w(codes.h)p Fe(,)25 b Fd(utility)-5 b(.h)p
Fe(,)25 b(and)f Fd(xorp.h)p Fe(.)29 b(Updated)c(the)f(XLOG-related)g
(information.)p Black 136 692 a Fb(\017)p Black 46 w
Fe(August)h(28,)e(2003:)30 b(Updated)25 b(to)e(match)h(XORP)e(release)j
(0.4:)k(No)23 b(signi\002cant)i(changes.)p Black 136
880 a Fb(\017)p Black 46 w Fe(No)o(v)o(ember)f(6,)f(2003:)30
b(Updated)25 b(to)e(match)h(XORP)d(release)26 b(0.5:)j(Added)24
b(information)i(for)d Fd(service)o(.hh)p Fe(.)p Black
136 1068 a Fb(\017)p Black 46 w Fe(July)29 b(8,)f(2004:)39
b(Updated)29 b(to)f(match)g(XORP)d(release)30 b(1.0:)37
b(Added)29 b(information)h(for)e Fd(callbac)n(k)p 3319
1068 V 36 w(deb)n(ug)o(.hh)p Fe(,)i Fd(call-)227 1181
y(bac)n(k)p 400 1181 V 35 w(nodeb)n(ug)o(.hh)p Fe(,)c(and)e
Fd(timespent.hh)p Fe(.)p Black 136 1368 a Fb(\017)p Black
46 w Fe(April)32 b(13,)i(2005:)48 b(Updated)33 b(to)f(match)g(XORP)e
(release)k(1.1:)46 b(Added)32 b(information)j(for)d Fd(b)n(uf)n(fer)m
(ed)p 3455 1368 V 36 w(asyncio.hh)p Fe(,)227 1481 y Fd(cloc)n(k.hh)p
Fe(,)25 b Fd(popen.hh)p Fe(,)h Fd(pr)l(o\002le)o(.hh)p
Fe(,)f(and)f Fd(run)p 1633 1481 V 34 w(command.hh)p Fe(.)p
Black 136 1669 a Fb(\017)p Black 46 w Fe(March)33 b(8,)h(2006:)48
b(Updated)33 b(to)g(match)f(XORP)e(release)k(1.2:)47
b(Added)33 b(information)h(for)f Fd(r)o(ang)o(e)o(.hh)p
Fe(,)i Fd(tlv)-7 b(.hh)34 b Fe(and)227 1782 y Fd(xorpfd.hh)p
Fe(.)p Black 136 1969 a Fb(\017)p Black 46 w Fe(August)25
b(2,)e(2006:)30 b(Updated)25 b(to)e(match)h(XORP)d(release)k(1.3:)k(No)
23 b(signi\002cant)j(changes.)p Black 136 2157 a Fb(\017)p
Black 46 w Fe(March)d(20,)g(2007:)30 b(Updated)24 b(to)f(match)g(XORP)d
(release)k(1.4:)29 b(Added)23 b(information)j(for)d Fd(ioe)o(vents.hh)p
Fe(,)i Fd(r)o(andom.h)p Fe(,)227 2270 y Fd(r)l(ound)p
443 2270 V 35 w(r)l(obin.hh)p Fe(,)g Fd(task.hh)p Fe(,)g
Fd(win)p 1267 2270 V 33 w(dispatc)o(her)-10 b(.hh)p Fe(,)26
b(and)e Fd(win)p 2116 2270 V 33 w(io.hh)p Fe(.)p Black
136 2457 a Fb(\017)p Black 46 w Fe(July)h(22,)e(2008:)30
b(Updated)25 b(to)e(match)h(XORP)d(release)26 b(1.5:)j(No)22
b(signi\002cant)k(changes.)0 2750 y Ff(Refer)n(ences)p
Black 0 2957 a Fe([1])p Black 46 w(XORP)c(Router)i(Manager)h(Process)f
(\(rtrmgr\).)34 b(XORP)22 b(technical)j(document.)35
b(http://www)-6 b(.xorp.or)n(g/.)p Black 1905 5400 a(14)p
Black eop end
%%Trailer
userdict /end-hook known{end-hook}if
%%EOF