%!PS-Adobe-2.0
%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software
%%Title: libxorp_overview.dvi
%%Pages: 12
%%PageOrder: Ascend
%%BoundingBox: 0 0 596 842
%%DocumentFonts: Times-Roman Times-Italic Times-Bold CMSY10 Courier
%%EndComments
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips libxorp_overview.dvi -o libxorp_overview.ps
%DVIPSParameters: dpi=600, compressed
%DVIPSSource: TeX output 2006.08.02:1553
%%BeginProcSet: texc.pro
%!
/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/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/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]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
forall N/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
% File 8r.enc as of 2002-03-12 for PSNFSS 9
%
% 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
%
% Authors: S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry, W. Schmidt
%
% 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 + extra characters from Lucida + Euro.
%
% 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.
%
% (4) Remaining positions left undefined are for use in (hopefully)
% upward-compatible revisions, if someday more characters are generally
% available.
%
% (5) hyphen appears twice for compatibility with both ASCII and Windows.
%
% (6) /Euro is assigned to 128, as in Windows ANSI
%
/TeXBase1Encoding [
% 0x00 (encoded characters from Adobe Standard not in Windows 3.1)
/.notdef /dotaccent /fi /fl
/fraction /hungarumlaut /Lslash /lslash
/ogonek /ring /.notdef
/breve /minus /.notdef
% These are the only two remaining unencoded characters, so may as
% well include them.
/Zcaron /zcaron
% 0x10
/caron /dotlessi
% (unusual TeX characters available in, e.g., Lucida Bright)
/dotlessj /ff /ffi /ffl
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
% very contentious; it's so painful not having quoteleft and quoteright
% at 96 and 145 that we move the things normally found there down to here.
/grave /quotesingle
% 0x20 (ASCII begins)
/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 % rubout; ASCII ends
% 0x80
/Euro /.notdef /quotesinglbase /florin
/quotedblbase /ellipsis /dagger /daggerdbl
/circumflex /perthousand /Scaron /guilsinglleft
/OE /.notdef /.notdef /.notdef
% 0x90
/.notdef /.notdef /.notdef /quotedblleft
/quotedblright /bullet /endash /emdash
/tilde /trademark /scaron /guilsinglright
/oe /.notdef /.notdef /Ydieresis
% 0xA0
/.notdef % nobreakspace
/exclamdown /cent /sterling
/currency /yen /brokenbar /section
/dieresis /copyright /ordfeminine /guillemotleft
/logicalnot
/hyphen % Y&Y (also at 45); Windows' softhyphen
/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: bbad153f.enc
% Thomas Esser, Dec 2002. public domain
%
% Encoding for:
% cmsy10 cmsy5 cmsy6 cmsy7 cmsy8 cmsy9
%
/TeXbbad153fEncoding [
/minus /periodcentered /multiply /asteriskmath /divide /diamondmath
/plusminus /minusplus /circleplus /circleminus /circlemultiply
/circledivide /circledot /circlecopyrt /openbullet /bullet
/equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal
/greaterequal /precedesequal /followsequal /similar /approxequal
/propersubset /propersuperset /lessmuch /greatermuch /precedes /follows
/arrowleft /arrowright /arrowup /arrowdown /arrowboth /arrownortheast
/arrowsoutheast /similarequal /arrowdblleft /arrowdblright /arrowdblup
/arrowdbldown /arrowdblboth /arrownorthwest /arrowsouthwest /proportional
/prime /infinity /element /owner /triangle /triangleinv /negationslash
/mapsto /universal /existential /logicalnot /emptyset /Rfractur /Ifractur
/latticetop /perpendicular /aleph /A /B /C /D /E /F /G /H /I /J /K
/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /union /intersection
/unionmulti /logicaland /logicalor /turnstileleft /turnstileright
/floorleft /floorright /ceilingleft /ceilingright /braceleft /braceright
/angbracketleft /angbracketright /bar /bardbl /arrowbothv /arrowdblbothv
/backslash /wreathproduct /radical /coproduct /nabla /integral
/unionsq /intersectionsq /subsetsqequal /supersetsqequal /section
/dagger /daggerdbl /paragraph /club /diamond /heart /spade /arrowleft
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/minus /periodcentered /multiply /asteriskmath /divide /diamondmath
/plusminus /minusplus /circleplus /circleminus /.notdef /.notdef
/circlemultiply /circledivide /circledot /circlecopyrt /openbullet
/bullet /equivasymptotic /equivalence /reflexsubset /reflexsuperset
/lessequal /greaterequal /precedesequal /followsequal /similar
/approxequal /propersubset /propersuperset /lessmuch /greatermuch
/precedes /follows /arrowleft /spade /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
] def
%%EndProcSet
%%BeginProcSet: texps.pro
%!
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
%!
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
%!
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 0 /.notdef put
readonly def
/FontBBox{-29 -960 1116 775}readonly def
/UniqueID 5000820 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 39158280 55380996 1000 600 600 (libxorp_overview.dvi)
@start /Fa 130[55 1[55 55 55 55 1[55 55 55 55 55 1[55
55 55 55 55 2[55 55 55 55 55 55 55 55 55 1[55 1[55 55
55 2[55 55 55 55 55 55 55 1[55 55 55 55 55 2[55 55 55
55 55 55 55 55 55 2[55 55 55 55 5[55 55 55 55 55 55 55
55 1[55 1[55 55 55 55 1[55 1[55 55 34[{ TeXBase1Encoding ReEncodeFont }
69 90.9091 /Courier rf /Fb 152[45 45 81[71 4[45 15[{
TeXbbad153fEncoding ReEncodeFont }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 1[40 45 25
35 35 1[45 45 45 66 25 40 25 25 45 45 25 40 45 40 45
45 8[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 }58
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 28 39 33 1[50 50 50 78 28 50 28 28
1[50 1[44 1[44 1[44 8[72 2[72 1[55 66 1[55 72 5[33 5[66
66 72 7[50 1[50 50 1[50 1[50 1[50 3[25 44[{
TeXBase1Encoding ReEncodeFont }34 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 24[72 1[72 2[36
46[{ TeXBase1Encoding ReEncodeFont }22 143.462 /Times-Roman
rf end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi
TeXDict begin
%%PaperSize: A4
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.3)1664 956 y Fh(XORP)25 b(Project)1141
1072 y(International)f(Computer)g(Science)i(Institute)1419
1188 y(Berk)o(ele)o(y)-6 b(,)25 b(CA)g(94704,)f(USA)1535
1304 y Fg(http://www)-7 b(.xorp.or)l(g/)1557 1421 y(feedbac)n
(k@xorp.or)l(g)1644 1623 y Fh(August)24 b(2,)h(2006)0
2015 y Ff(1)119 b(Intr)n(oduction)0 2222 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 2335 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
2448 y(simplify)25 b(the)f(implementation)i(of)e(those)g(components.)0
2697 y Fc(1.1)99 b(Ov)o(er)o(view)0 2871 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 3084 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 3271 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 3459 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 3646 a
Fb(\017)p Black 46 w Fd(b)n(uf)n(fer)m(ed)p 525 3646
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 3834 a Fb(\017)p Black 46 w Fd(c)p 272 3834
V 33 w(format.hh:)31 b(c)p 760 3834 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
4022 a Fb(\017)p Black 46 w Fd(callbac)n(k.hh,)f(callbac)n(k)p
1001 4022 V 35 w(deb)n(ug)o(.hh,)f(callbac)n(k)p 1718
4022 V 35 w(nodeb)n(ug)o(.hh,)g(safe)p 2367 4022 V 35
w(callbac)n(k)p 2705 4022 V 36 w(obj.hh)p Fe(:)k(Callback)25
b(mechanism.)p Black 136 4209 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 4397 a Fb(\017)p
Black 46 w Fd(con\002g)p 452 4397 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 4585 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 4772 a Fb(\017)p Black 46 w Fd(ether)p
417 4772 V 35 w(compat.h)p Fe(:)30 b(Ethernet)25 b(manipulation)h
(compatibility)h(functions.)p Black 136 4960 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)g(and)f(I/O)227 5073 y(operations)g(on)c(\002le)g
(descriptors.)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(e)n(xceptions.hh)p Fe(:)33 b(Standard)25
b(XORP)c(C++)i(e)o(xceptions.)p Black 136 279 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 136 467 a Fb(\017)p
Black 46 w Fd(ipnet.hh,)f(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 579 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 692 y(ti)n(v)o(ely\).)p
Black 136 880 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
993 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 1181
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 1368 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 1556 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 1743 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 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(run)p 357 2720
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 2907 a Fb(\017)p Black 46 w Fd(safe)p 377 2907
V 34 w(callbac)n(k)p 714 2907 V 36 w(obj.hh,)32 b(class)e(Callbac)n
(kSafeObject)r Fe(:)45 b(Implementation)33 b(of)c(a)g(base)h(class)g
(for)g(objects)h(that)f(are)227 3020 y(callback)c(safe.)p
Black 136 3208 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 3396 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 3583 a Fb(\017)p Black 46 w Fd(status)p
442 3583 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 3696 y(to)24 b(the)g(router)g(manager)-5
b(.)p Black 136 3884 a Fb(\017)p Black 46 w Fd(time)p
388 3884 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 4071 a Fb(\017)p
Black 46 w Fd(timer)-10 b(.hh,)24 b(class)h(XorpT)-5
b(imer)r Fe(:)29 b(XORP)21 b(timer)j(f)o(acility)-6 b(.)p
Black 136 4259 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 4372 y(long)25 b(to)e(e)o(x)o(ecute.)p Black
136 4560 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 4747 a Fb(\017)p Black 46 w Fd(tlv)-7
b(.hh,)25 b(class)f(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 136 4935 a Fb(\017)p Black 46 w Fd(tok)o(en.hh)p
Fe(:)k(T)-7 b(ok)o(en)24 b(related)h(de\002nitions.)p
Black 136 5122 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 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(trie)o(.hh)p Fe(:)30 b(Implementation)d(of)c(a)g(trie)h
(to)g(support)h(route)g(lookups.)p Black 136 274 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 457 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 640 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 823 a Fb(\017)p Black 46 w Fd(xlo)o(g)o(.h)p
Fe(:)k(Pro)o(vides)25 b(f)o(acility)g(for)f(log)g(messages)h
(generation.)p Black 136 1006 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 1189 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 1388 y(Each)24 b(of)f(the)h(components)i(is)d(described)j(in)e
(Section)g(2.)0 1678 y Ff(2)119 b(Components)30 b(Description)0
1885 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 1998
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 2111 y(reference,)h(and)e
(implementation)i(details.)0 2358 y Fc(2.1)99 b(asnum.hh)0
2532 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
2645 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 2758
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 2871 y(numbers.)0 3118 y Fc(2.2)99
b(asyncio.hh)0 3292 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 3405 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 3518 y(reading)d(or)f(writing)g(with)f(add)p
998 3518 28 4 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 3631 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
3744 y(no)d(b)n(uf)n(fers)h(left.)141 3857 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 3970 y(AsyncF)l(ileWriter)p
Fe(.)0 4217 y Fc(2.3)99 b(b)n(uffer)-10 b(.hh)0 4391
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
4504 y(limited)h(applicability)-6 b(.)0 4751 y Fc(2.4)99
b(b)n(uffer)n(ed)p 589 4751 30 4 v 38 w(asyncio.hh)0
4925 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 5038 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
5151 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.)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.5)99 b(c)p
274 91 30 4 v 36 w(f)n(ormat.hh)0 266 y Fe(This)24 b(\002le)g(contains)
j Fd(c)p 697 266 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 379 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
491 y(In)g(practice,)h Fd(c)p 618 491 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
604 y(sane)e(and)g(the)g(run)g(time)f(ar)n(guments.)0
854 y Fc(2.6)99 b(callback.hh,)26 b(callback)p 1124 854
30 4 v 36 w(deb)n(ug)o(.hh,)g(callback)p 1956 854 V 36
w(nodeb)n(ug)o(.hh,)h(safe)p 2706 854 V 36 w(callback)p
3096 854 V 36 w(obj.hh)0 1028 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 1141 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
1254 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
1367 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 1479 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 1592 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 1705 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 1818 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
1931 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 2044 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 2157 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 2270 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
2270 28 4 v 31 w(CALLB)n(A)m(CK)g Fe(before)0 2383 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 2496 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 2496 V 36 w(deb)n(ug)o(.hh)0
2609 y Fe(or)j Fd(callbac)n(k)p 404 2609 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 2721 y(fore)h(the)o(y)g(should)h(ne)n(v)o(er)f(be)g(edited.)0
2971 y Fc(2.7)99 b(clock.hh)0 3145 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
3258 y(system)24 b(clock.)0 3507 y Fc(2.8)99 b(con\002g)p
484 3507 30 4 v 37 w(param.hh)0 3681 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 3794 y(parameter)-5 b(.)141 3907 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 4020 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 4133 y(of)f(the)h(con\002guration)j(parameter)e
(is)e(changed.)0 4382 y Fc(2.9)99 b(deb)n(ug)o(.h)0 4556
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
4669 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 4882 a Fa(debug_msg\("The)48 b(number)k(is)i(\045d\\n",)d(5\);)141
5094 y Fe(F)o(or)23 b(more)g(details)i(see)f(the)g(comments)g(inside)h
(that)f(\002le.)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.10)99 b(ether)p
500 91 30 4 v 37 w(compat.h)0 266 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
379 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 491 y Fd(ether)p
190 491 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 741 y Fc(2.11)99
b(e)o(v)o(entloop.hh)0 915 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
1028 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 1141 y(interf)o(ace.)0
1390 y Fc(2.12)99 b(exceptions.hh)0 1564 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 1677 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 1790 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
2039 y Fc(2.13)99 b(heap.hh)0 2213 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 2326 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 2439 y(top.)0
2688 y Fc(2.14)99 b(ipnet.hh,)26 b(ipv4net.hh,)g(ipv6net.hh,)g
(ipvxnet.hh)0 2863 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
2976 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 3089 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 3201 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 3314 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.)0
3564 y Fc(2.15)99 b(ipv4.hh,)25 b(ipv6.hh,)g(ipvx.hh)0
3738 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 3851 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 3964 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 4213 y Fc(2.16)99 b(mac.hh)0 4387 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
4500 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 4749
y Fc(2.17)99 b(nexthop.hh)0 4923 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 5036 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 5149
y(man)o(y)c(types,)i(including)h(immediate)e(neighbors,)i(remote)e
(routers)h(\(with)e(IBGP\),)f(discard)j(interf)o(aces,)h(encapsulation)
p Black 1927 5400 a(5)p Black eop end
%%Page: 6 6
TeXDict begin 6 5 bop Black Black 0 91 a Fe(endpoints,)28
b(etc.)35 b(Ne)o(xtHop)26 b(itself)g(doesn')n(t)i(really)f(do)e(an)o
(ything)j(useful,)f(e)o(xcept)f(to)g(pro)o(vide)h(a)e(generic)i(handle)
g(for)f(the)0 204 y(specialized)h(subclasses.)k(The)23
b(specialized)k(subclasses)f(are:)p Black 136 417 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 604 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 717 y(ample)c(is)g(the)f(PIM)g(Re)o(gister)h
(Encapsulation.)p Black 136 905 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 1093
a Fb(\017)p Black 46 w Fe(DiscardNe)o(xtHop)26 b(is)d(a)g(discard)i
(interf)o(ace.)0 1342 y Fc(2.18)99 b(popen.hh)0 1516
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 1629
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
1742 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 1855 y(redirected)g(to.)0
2104 y Fc(2.19)99 b(pr)n(o\002le.hh)0 2278 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 2391 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
2504 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 2753 y Fc(2.20)99
b(range.hh)0 2927 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 3040 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 3153 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 3266 y Fe(high\))g(al)o(w)o(ays)f(holds.)0
3515 y Fc(2.21)99 b(r)n(ef)p 399 3515 30 4 v 37 w(ptr)-10
b(.hh)0 3690 y Fe(This)23 b(\002le)g(declares)j Fd(template)f(class)f
(r)m(ef)p 1286 3690 28 4 v 34 w(ptr)r Fe(:)29 b(reference)d(counted)g
(pointer)f(class.)141 3803 y(The)c(ref)p 408 3803 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 3916 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 4028
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 4141 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 4254 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
4367 y(\003e)o(xibility)-6 b(.)0 4616 y Fc(2.22)99 b(r)n(ef)p
399 4616 30 4 v 37 w(trie.hh)0 4791 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
4904 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
5016 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 5129 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.)p
Black 1927 5400 a(6)p Black eop end
%%Page: 7 7
TeXDict begin 7 6 bop Black Black 141 91 a Fe(RefT)m(rie)23
b(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
204 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 317 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
430 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 543 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
656 y(to)c(change.)0 899 y Fc(2.23)99 b(run)p 434 899
30 4 v 37 w(command.hh)0 1073 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 1186 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 1360 a Fb(\017)p Black 46 w Fd(stdout)p 452 1360
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 1535 a Fb(\017)p Black 46 w Fd(stderr)p 447
1535 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 1710 a Fb(\017)p Black 46 w Fd(done)p 407 1710 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.)0 1953 y Fc(2.24)99 b(safe)p
446 1953 30 4 v 36 w(callback)p 836 1953 V 36 w(obj.hh)0
2127 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 2240 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 2353 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 2596 y Fc(2.25)99 b(selector)-10 b(.hh)0 2770
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 2883 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
2996 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 3109 y(particular)d(descriptors.)0
3352 y Fc(2.26)99 b(ser)o(vice.hh)0 3526 y Fe(This)30
b(declares)h Fd(class)g(ServiceBase)p Fe(.)50 b(A)29
b(service)i(is)f(a)f(class)i(that)f(can)g(be)g(started)h(and)f(stopped)
i(and)e(w)o(ould)h(typically)0 3639 y(in)l(v)n(olv)o(e)f(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
3752 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 3865 y(in)h(the)h(base)h(class.)0
4108 y Fc(2.27)99 b(status)p 529 4108 V 36 w(codes.h)0
4282 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 4395 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 4508 y(between)e(states,)f
(triggering)i(e)n(v)o(ents,)e(actions,)h(etc\).)0 4751
y Fc(2.28)99 b(time)p 468 4751 V 36 w(slice.hh)0 4925
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 5038 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
5151 y(too)h(long,)g(and)g(suspend)i(processing)g(of)e(that)g(task)g
(if)f(necessary)-6 b(.)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.29)99 b(timer)-10
b(.hh)0 266 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
379 y Fd(class)25 b(XorpT)-5 b(imer)p Fe(.)0 628 y Fc(2.30)99
b(timespent.hh)0 802 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 915 y(has)h(tak)o(en)h(too)f(long)g(to)f(e)o(x)o(ecute.)0
1164 y Fc(2.31)99 b(time)o(v)o(al.hh)0 1338 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 1451 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 1564 y(ators,)f(etc\).)0
1813 y Fc(2.32)99 b(tlv)-7 b(.hh)0 1988 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 2101 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 2350 y Fc(2.33)99 b(tok)o(en.hh)0 2524 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 2637 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 2637 28 4 v 34 w(space\(3\))i(and)
g('\227')0 2750 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
2863 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 3112 y Fc(2.34)99 b(transactions.hh)0
3286 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 3399 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
3512 y(and)e(destro)o(ying)j(transactions.)0 3761 y Fc(2.35)99
b(trie.hh)0 3935 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 4048
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 4161
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
4274 y(a)f(subnet,)i Fa(IPNet)p Fe(\),)19 b(and)24
b(the)g(P)o(ayload.)0 4523 y Fc(2.36)99 b(utility)-7
b(.h)0 4698 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
4811 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.)p Black 1927 5400 a(8)p Black eop end
%%Page: 9 9
TeXDict begin 9 8 bop Black Black 0 91 a Fc(2.37)99 b(utils.hh)0
266 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 379
y(list)d(or)f(array)i(of)e(pointers)j(and)e(the)g(objects)h(pointed)g
(to.)0 623 y Fc(2.38)99 b(vif)o(.hh)0 797 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 910 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
1023 y(represent)j(more)e(abstract)i(entities)g(such)f(as)f(the)g
(Discard)h(interf)o(ace,)i(or)d(a)f(VLAN)f(on)i(a)f(physical)j(interf)o
(ace.)38 b(V)-5 b(ifAddr)0 1136 y(holds)38 b(information)g(about)g(an)e
(address)j(of)d(a)g(virtual)i(interf)o(ace.)69 b(A)35
b(virtual)j(interf)o(ace)h(may)d(ha)n(v)o(e)h(more)g(than)g(one)0
1249 y(V)-5 b(ifAddr)g(.)0 1493 y Fc(2.39)99 b(xlog)o(.h)0
1667 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 1780 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 1962 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 2075 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 2075 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 2290
a Fa(#define)52 b(XORP_MODULE_NA)o(ME)c("BGP")227 2504
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 2617 y(\002les.)p Black 136
2795 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 3009 a Fa(int)53 b(xlog_init\(const)48 b(char)53
b(*process_name,)48 b(const)k(char)h(*preamble_messa)o(ge)o(\);)227
3223 y 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 3401 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 3616
a Fa(int)53 b(xlog_add_output\()o(FI)o(LE)o(*)48 b(fp\);)227
3728 y(int)53 b(xlog_add_default)o(_o)o(ut)o(pu)o(t\(v)o(oi)o(d\))o(;)p
Black 136 3943 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 4157 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 4372 y Fe(where)24
b(\223v)o(erbose)p 796 4372 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 4586 a Fa(typedef)52 b(enum)g({)445 4699
y(XLOG_VERBOSE_LOW)c(=)54 b(0,)381 b(/*)53 b(0)h(*/)445
4812 y(XLOG_VERBOSE_MED)o(IU)o(M,)430 b(/*)53 b(1)h(*/)445
4925 y(XLOG_VERBOSE_HIG)o(H,)539 b(/*)53 b(2)h(*/)445
5038 y(XLOG_VERBOSE_MAX)227 5151 y(})g(xlog_verbose_t;)p
Black 1927 5400 a Fe(9)p Black eop end
%%Page: 10 10
TeXDict begin 10 9 bop Black Black 227 91 a 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 91 28 4 v 35 w(le)n(v)o(el\224)h(adds)f(more)227
204 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 317 y(message)25 b(w)o(as)e(initiated\).)227
467 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 580 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 766 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 1011 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
1124 y(xlog_verbose_t)g(verbose_level\);)227 1369 y Fe(where)24
b(\223log)p 632 1369 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_MAX)17 b Fe(e)o(xcluded\):)p
Black Black 227 1614 a Fa(typedef)52 b(enum)g({)445 1727
y(XLOG_LEVEL_FATAL)c(=)54 b(0,)381 b(/*)53 b(0)h(*/)445
1840 y(XLOG_LEVEL_ERROR)o(,)594 b(/*)53 b(1)h(*/)445
1953 y(XLOG_LEVEL_WARNI)o(NG)o(,)485 b(/*)53 b(2)h(*/)445
2066 y(XLOG_LEVEL_INFO,)648 b(/*)53 b(3)h(*/)445 2179
y(XLOG_LEVEL_TRACE)o(,)594 b(/*)53 b(4)h(*/)445 2292
y(XLOG_LEVEL_MAX)227 2405 y(})g(xlog_level_t;)227 2650
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 2763 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 136 2949 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 3194 a Fa(int)53 b(xlog_start\(void\))o(;)p
Black 136 3440 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 3685 a Fa(int)53 b(xlog_enable\(xlog)o(_l)o(ev)o(el)o
(_t)48 b(log_level\);)227 3798 y(int)53 b(xlog_disable\(xlo)o(g_)o(le)o
(ve)o(l_t)48 b(log_level\);)227 4043 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 4229 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 4474
a Fa(int)53 b(xlog_stop\(void\);)227 4719 y Fe(Later)24
b(you)g(can)g(restart)h(it)e(again)h(by)g Fa(xlog_start\(\))p
Black 136 4906 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 5151 a Fa(int)272 b(xlog_exit\(void)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(\(think)25
b(of)f(this)g(as)f(the)h(xlog)g(destructor\).)141 304
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 516 a Fa(int)0 629 y(main\(int)51
b(argc,)h(char)h(*argv[]\))0 742 y({)218 855 y(//)218
968 y(//)h(Initialize)c(and)j(start)f(xlog)218 1081 y(//)218
1194 y(xlog_init\(argv[)o(0])o(,)d(NULL\);)218 1307 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 1420 y(//)j(Increase)d(verbosity)f(of)
k(the)f(error)f(messages)218 1533 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 1645 y(xlog_add_defaul)o(t_)o(out)o(pu)o(t\()o(\);)218
1758 y(xlog_start\(\);)218 1984 y(//)54 b(Do)f(something)218
2210 y(//)218 2323 y(//)h(Gracefully)c(stop)j(and)g(exit)f(xlog)218
2436 y(//)218 2549 y(xlog_stop\(\);)218 2662 y(xlog_exit\(\);)218
2888 y(exit)h(\(0\);)0 3000 y(})141 3213 y 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 3326 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 3439
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 3552 y(string)c(speci\002ed)g(by)e
Fa(format)p Fe(:)p Black 136 3764 a Fb(\017)p Black 46
w Fa(XLOG_FATAL\(cons)o(t)49 b(char)j(*format,)f(...\))227
3877 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 4065 a Fb(\017)p Black 46 w Fa(XLOG_ERROR\(cons)o(t)49
b(char)j(*format,)f(...\))227 4178 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 4365 a Fb(\017)p Black 46 w Fa(XLOG_WARNING\(co)o(nst)48
b(char)k(*format,)f(...\))227 4478 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 4666 a Fb(\017)p Black 46 w Fa(XLOG_INFO\(const)48
b(char)53 b(*format,)e(...\))227 4779 y Fe(Write)24 b(an)g(INFO)d
(message)k(to)f(the)f(xlog)i(output)g(streams.)p Black
136 4966 a Fb(\017)p Black 46 w Fa(XLOG_TRACE\(int)48
b(cond_boolean,)h(const)j(char)h(*format,)e(...\))227
5079 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 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 Fa(XLOG_ASSERT\(ass)o(ert)o(io)o(n\))227 204
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 317 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
496 a Fb(\017)p Black 46 w Fa(XLOG_UNREACHABL)o(E\(\))227
609 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 787 a Fb(\017)p Black 46 w Fa(XLOG_UNFINISHED)o(\(\))227
900 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 1145 y Fc(2.40)99 b(xor)o(p.h)0 1319 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 1432 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 1676 y
Fc(2.41)99 b(xor)o(pfd.hh)0 1851 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 1964
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 2077 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 2189
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 2302 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 2302 28 4 v 33 w(int;)i(whereas)g(all)f(other)g(system)h(objects)g
(are)f(of)f(type)0 2415 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 2703
y Ff(A)120 b(Modi\002cation)31 b(History)p Black 136
2910 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
136 3089 a Fb(\017)p Black 46 w Fe(March)h(10,)g(2003:)30
b(Updated)25 b(to)e(match)h(XORP)d(release)k(0.2:)k(added)c
(information)h(about)f(RefT)m(rie;)e(cleanup.)p Black
136 3267 a Fb(\017)p Black 46 w Fe(June)i(9,)e(2003:)30
b(Updated)25 b(to)e(match)h(XORP)d(release)k(0.3.)p Black
136 3446 a Fb(\017)p Black 46 w Fe(August)g(28,)e(2003:)30
b(Updated)25 b(to)e(match)h(XORP)e(release)j(0.4.)p Black
136 3624 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.)p
Black 136 3803 a Fb(\017)p Black 46 w Fe(July)f(8,)d(2004:)31
b(Updated)24 b(to)g(match)g(XORP)d(release)k(1.0.)p Black
136 3981 a Fb(\017)p Black 46 w Fe(April)34 b(13,)i(2005:)51
b(Updated)35 b(to)f(match)g(XORP)e(release)j(1.1:)50
b(added)35 b(information)h(for)e Fd(b)n(uf)n(fer)m(ed)p
3455 3981 V 36 w(asyncio.hh)p Fe(,)227 4094 y Fd(cloc)n(k.hh)p
Fe(,)25 b Fd(popen.hh)p Fe(,)h Fd(pr)l(o\002le)o(.hh)f
Fe(and)f Fd(run)p 1610 4094 V 34 w(command.hh)p Fe(.)p
Black 136 4273 a Fb(\017)p Black 46 w Fe(March)35 b(8,)g(2006:)51
b(Updated)35 b(to)f(match)g(XORP)e(release)j(1.2:)50
b(added)35 b(information)h(for)e Fd(r)o(ang)o(e)o(.hh)p
Fe(,)k Fd(tlv)-7 b(.hh)35 b Fe(and)227 4386 y Fd(xorpfd.hh)p
Fe(.)p Black 136 4564 a Fb(\017)p Black 46 w Fe(August)25
b(2,)e(2006:)30 b(Updated)25 b(the)e(v)o(ersion)i(to)f(1.3,)f(and)h
(the)g(date.)0 4852 y Ff(Refer)n(ences)p Black 0 5059
a Fe([1])p Black 46 w(XORP)e(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(12)p Black eop end
%%Trailer
userdict /end-hook known{end-hook}if
%%EOF