home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / misc / volume40 / netramet / part10 < prev    next >
Encoding:
Text File  |  1993-11-07  |  64.3 KB  |  1,583 lines

  1. Newsgroups: comp.sources.misc
  2. From: nevil@ccu1.aukuni.ac.nz (J Nevil Brownlee)
  3. Subject: REPOST: v40i098: netramet - Network Traffic Accounting Meter, Part10/25
  4. Message-ID: <1993Nov7.230103.15166@sparky.sterling.com>
  5. X-Md4-Signature: 3efe95a19215dd644fd51ed5b44673ea
  6. Sender: kent@sparky.sterling.com (Kent Landfield)
  7. Organization: Sterling Software
  8. Date: Sun, 7 Nov 1993 23:01:03 GMT
  9. Approved: kent@sparky.sterling.com
  10.  
  11. Submitted-by: nevil@ccu1.aukuni.ac.nz (J Nevil Brownlee)
  12. Posting-number: Volume 40, Issue 98
  13. Archive-name: netramet/part10
  14. Environment: INET, UNIX, DOS
  15.  
  16. #! /bin/sh
  17. # This is a shell archive.  Remove anything before this line, then feed it
  18. # into a shell via "sh file" or similar.  To overwrite existing files,
  19. # type "sh file -c".
  20. # Contents:  netramet/doc/NeTraMet/NeTraMet.man.ps.A
  21. #   netramet/sg/apps/snmpnetstat/Makefile
  22. #   netramet/src/meter/meter_ux.c
  23. # Wrapped by kent@sparky on Tue Nov  2 18:17:07 1993
  24. PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin:$PATH ; export PATH
  25. echo If this archive is complete, you will see the following message:
  26. echo '          "shar: End of archive 10 (of 25)."'
  27. if test -f 'netramet/doc/NeTraMet/NeTraMet.man.ps.A' -a "${1}" != "-c" ; then 
  28.   echo shar: Will not clobber existing file \"'netramet/doc/NeTraMet/NeTraMet.man.ps.A'\"
  29. else
  30.   echo shar: Extracting \"'netramet/doc/NeTraMet/NeTraMet.man.ps.A'\" \(47198 characters\)
  31.   sed "s/^X//" >'netramet/doc/NeTraMet/NeTraMet.man.ps.A' <<'END_OF_FILE'
  32. X%!PS-Adobe-3.0 EPSF-2.0
  33. X%%Creator: Windows PSCRIPT
  34. X%%Title: Microsoft Word - NETRAMET.DOC
  35. X%%BoundingBox: 13 10 577 832
  36. X%%DocumentNeededResources: (atend)
  37. X%%DocumentSuppliedResources: (atend)
  38. X%%Pages: 0
  39. X%%BeginResource: procset Win35Dict 3 1
  40. X/Win35Dict 290 dict def Win35Dict begin/bd{bind def}bind def/in{72
  41. Xmul}bd/ed{exch def}bd/ld{load def}bd/tr/translate ld/gs/gsave ld/gr
  42. X/grestore ld/M/moveto ld/L/lineto ld/rmt/rmoveto ld/rlt/rlineto ld
  43. X/rct/rcurveto ld/st/stroke ld/n/newpath ld/sm/setmatrix ld/cm/currentmatrix
  44. Xld/cp/closepath ld/ARC/arcn ld/TR{65536 div}bd/lj/setlinejoin ld/lc
  45. X/setlinecap ld/ml/setmiterlimit ld/sl/setlinewidth ld/scignore false
  46. Xdef/sc{scignore{pop pop pop}{0 index 2 index eq 2 index 4 index eq
  47. Xand{pop pop 255 div setgray}{3{255 div 3 1 roll}repeat setrgbcolor}ifelse}ifelse}bd
  48. X/FC{bR bG bB sc}bd/fC{/bB ed/bG ed/bR ed}bd/HC{hR hG hB sc}bd/hC{
  49. X/hB ed/hG ed/hR ed}bd/PC{pR pG pB sc}bd/pC{/pB ed/pG ed/pR ed}bd/sM
  50. Xmatrix def/PenW 1 def/iPen 5 def/mxF matrix def/mxE matrix def/mxUE
  51. Xmatrix def/mxUF matrix def/fBE false def/iDevRes 72 0 matrix defaultmatrix
  52. Xdtransform dup mul exch dup mul add sqrt def/fPP false def/SS{fPP{
  53. X/SV save def}{gs}ifelse}bd/RS{fPP{SV restore}{gr}ifelse}bd/EJ{gsave
  54. Xshowpage grestore}bd/#C{userdict begin/#copies ed end}bd/FEbuf 2 string
  55. Xdef/FEglyph(G  )def/FE{1 exch{dup 16 FEbuf cvrs FEglyph exch 1 exch
  56. Xputinterval 1 index exch FEglyph cvn put}for}bd/SM{/iRes ed/cyP ed
  57. X/cxPg ed/cyM ed/cxM ed 72 100 div dup scale dup 0 ne{90 eq{cyM exch
  58. X0 eq{cxM exch tr -90 rotate -1 1 scale}{cxM cxPg add exch tr +90 rotate}ifelse}{cyP
  59. XcyM sub exch 0 ne{cxM exch tr -90 rotate}{cxM cxPg add exch tr -90
  60. Xrotate 1 -1 scale}ifelse}ifelse}{pop cyP cyM sub exch 0 ne{cxM cxPg
  61. Xadd exch tr 180 rotate}{cxM exch tr 1 -1 scale}ifelse}ifelse 100 iRes
  62. Xdiv dup scale 0 0 transform .25 add round .25 sub exch .25 add round
  63. X.25 sub exch itransform translate}bd/SJ{1 index 0 eq{pop pop/fBE false
  64. Xdef}{1 index/Break ed div/dxBreak ed/fBE true def}ifelse}bd/ANSIVec[
  65. X16#0/grave 16#1/acute 16#2/circumflex 16#3/tilde 16#4/macron 16#5/breve
  66. X16#6/dotaccent 16#7/dieresis 16#8/ring 16#9/cedilla 16#A/hungarumlaut
  67. X16#B/ogonek 16#C/caron 16#D/dotlessi 16#27/quotesingle 16#60/grave
  68. X16#7C/bar 16#82/quotesinglbase 16#83/florin 16#84/quotedblbase 16#85
  69. X/ellipsis 16#86/dagger 16#87/daggerdbl 16#89/perthousand 16#8A/Scaron
  70. X16#8B/guilsinglleft 16#8C/OE 16#91/quoteleft 16#92/quoteright 16#93
  71. X/quotedblleft 16#94/quotedblright 16#95/bullet 16#96/endash 16#97
  72. X/emdash 16#99/trademark 16#9A/scaron 16#9B/guilsinglright 16#9C/oe
  73. X16#9F/Ydieresis 16#A0/space 16#A4/currency 16#A6/brokenbar 16#A7/section
  74. X16#A8/dieresis 16#A9/copyright 16#AA/ordfeminine 16#AB/guillemotleft
  75. X16#AC/logicalnot 16#AD/hyphen 16#AE/registered 16#AF/macron 16#B0/degree
  76. X16#B1/plusminus 16#B2/twosuperior 16#B3/threesuperior 16#B4/acute 16#B5
  77. X/mu 16#B6/paragraph 16#B7/periodcentered 16#B8/cedilla 16#B9/onesuperior
  78. X16#BA/ordmasculine 16#BB/guillemotright 16#BC/onequarter 16#BD/onehalf
  79. X16#BE/threequarters 16#BF/questiondown 16#C0/Agrave 16#C1/Aacute 16#C2
  80. X/Acircumflex 16#C3/Atilde 16#C4/Adieresis 16#C5/Aring 16#C6/AE 16#C7
  81. X/Ccedilla 16#C8/Egrave 16#C9/Eacute 16#CA/Ecircumflex 16#CB/Edieresis
  82. X16#CC/Igrave 16#CD/Iacute 16#CE/Icircumflex 16#CF/Idieresis 16#D0/Eth
  83. X16#D1/Ntilde 16#D2/Ograve 16#D3/Oacute 16#D4/Ocircumflex 16#D5/Otilde
  84. X16#D6/Odieresis 16#D7/multiply 16#D8/Oslash 16#D9/Ugrave 16#DA/Uacute
  85. X16#DB/Ucircumflex 16#DC/Udieresis 16#DD/Yacute 16#DE/Thorn 16#DF/germandbls
  86. X16#E0/agrave 16#E1/aacute 16#E2/acircumflex 16#E3/atilde 16#E4/adieresis
  87. X16#E5/aring 16#E6/ae 16#E7/ccedilla 16#E8/egrave 16#E9/eacute 16#EA
  88. X/ecircumflex 16#EB/edieresis 16#EC/igrave 16#ED/iacute 16#EE/icircumflex
  89. X16#EF/idieresis 16#F0/eth 16#F1/ntilde 16#F2/ograve 16#F3/oacute 16#F4
  90. X/ocircumflex 16#F5/otilde 16#F6/odieresis 16#F7/divide 16#F8/oslash
  91. X16#F9/ugrave 16#FA/uacute 16#FB/ucircumflex 16#FC/udieresis 16#FD/yacute
  92. X16#FE/thorn 16#FF/ydieresis ] def/reencdict 12 dict def/IsChar{basefontdict
  93. X/CharStrings get exch known}bd/MapCh{dup IsChar not{pop/bullet}if
  94. Xnewfont/Encoding get 3 1 roll put}bd/MapDegree{16#b0/degree IsChar{
  95. X/degree}{/ring}ifelse MapCh}bd/MapBB{16#a6/brokenbar IsChar{/brokenbar}{
  96. X/bar}ifelse MapCh}bd/ANSIFont{reencdict begin/newfontname ed/basefontname
  97. Xed FontDirectory newfontname known not{/basefontdict basefontname findfont
  98. Xdef/newfont basefontdict maxlength dict def basefontdict{exch dup/FID
  99. Xne{dup/Encoding eq{exch dup length array copy newfont 3 1 roll put}{exch
  100. Xnewfont 3 1 roll put}ifelse}{pop pop}ifelse}forall newfont/FontName
  101. Xnewfontname put 127 1 159{newfont/Encoding get exch/bullet put}for
  102. XANSIVec aload pop ANSIVec length 2 idiv{MapCh}repeat MapDegree MapBB
  103. Xnewfontname newfont definefont pop}if newfontname end}bd/SB{FC/ULlen
  104. Xed/str ed str length fBE not{dup 1 gt{1 sub}if}if/cbStr ed/dxGdi ed
  105. X/y0 ed/x0 ed str stringwidth dup 0 ne{/y1 ed/x1 ed y1 y1 mul x1 x1
  106. Xmul add sqrt dxGdi exch div 1 sub dup x1 mul cbStr div exch y1 mul
  107. XcbStr div}{exch abs neg dxGdi add cbStr div exch}ifelse/dyExtra ed
  108. X/dxExtra ed x0 y0 M fBE{dxBreak 0 BCh dxExtra dyExtra str awidthshow}{dxExtra
  109. XdyExtra str ashow}ifelse fUL{x0 y0 M dxUL dyUL rmt ULlen fBE{Break
  110. Xadd}if 0 mxUE transform gs rlt cyUL sl [] 0 setdash st gr}if fSO{x0
  111. Xy0 M dxSO dySO rmt ULlen fBE{Break add}if 0 mxUE transform gs rlt cyUL
  112. Xsl [] 0 setdash st gr}if n/fBE false def}bd/font{/name ed/Ascent ed
  113. X0 ne/fT3 ed 0 ne/fSO ed 0 ne/fUL ed/Sy ed/Sx ed 10.0 div/ori ed -10.0
  114. Xdiv/esc ed/BCh ed name findfont/xAscent 0 def/yAscent Ascent def/ULesc
  115. Xesc def ULesc mxUE rotate pop fT3{/esc 0 def xAscent yAscent mxUE transform
  116. X/yAscent ed/xAscent ed}if [Sx 0 0 Sy neg xAscent yAscent] esc mxE
  117. Xrotate mxF concatmatrix makefont setfont [Sx 0 0 Sy neg 0 Ascent] mxUE
  118. XmxUF concatmatrix pop fUL{currentfont dup/FontInfo get/UnderlinePosition
  119. Xknown not{pop/Courier findfont}if/FontInfo get/UnderlinePosition get
  120. X1000 div 0 exch mxUF transform/dyUL ed/dxUL ed}if fSO{0 .3 mxUF transform
  121. X/dySO ed/dxSO ed}if fUL fSO or{currentfont dup/FontInfo get/UnderlineThickness
  122. Xknown not{pop/Courier findfont}if/FontInfo get/UnderlineThickness get
  123. X1000 div Sy mul/cyUL ed}if}bd/min{2 copy gt{exch}if pop}bd/max{2 copy
  124. Xlt{exch}if pop}bd/CP{/ft ed{{ft 0 eq{clip}{eoclip}ifelse}stopped{currentflat
  125. X1 add setflat}{exit}ifelse}loop}bd/patfont 10 dict def patfont begin
  126. X/FontType 3 def/FontMatrix [1 0 0 -1 0 0] def/FontBBox [0 0 16 16]
  127. Xdef/Encoding StandardEncoding def/BuildChar{pop pop 16 0 0 0 16 16
  128. Xsetcachedevice 16 16 false [1 0 0 1 .25 .25]{pat}imagemask}bd end/p{
  129. X/pat 32 string def{}forall 0 1 7{dup 2 mul pat exch 3 index put dup
  130. X2 mul 1 add pat exch 3 index put dup 2 mul 16 add pat exch 3 index
  131. Xput 2 mul 17 add pat exch 2 index put pop}for}bd/pfill{/PatFont patfont
  132. Xdefinefont setfont/ch(AAAA)def X0 64 X1{Y1 -16 Y0{1 index exch M ch
  133. Xshow}for pop}for}bd/vert{X0 w X1{dup Y0 M Y1 L st}for}bd/horz{Y0 w
  134. XY1{dup X0 exch M X1 exch L st}for}bd/fdiag{X0 w X1{Y0 M X1 X0 sub dup
  135. Xrlt st}for Y0 w Y1{X0 exch M Y1 Y0 sub dup rlt st}for}bd/bdiag{X0 w
  136. XX1{Y1 M X1 X0 sub dup neg rlt st}for Y0 w Y1{X0 exch M Y1 Y0 sub dup
  137. Xneg rlt st}for}bd/AU{1 add cvi 15 or}bd/AD{1 sub cvi -16 and}bd/SHR{pathbbox
  138. XAU/Y1 ed AU/X1 ed AD/Y0 ed AD/X0 ed}bd/hfill{/w iRes 37.5 div round
  139. Xdef 0.1 sl [] 0 setdash n dup 0 eq{horz}if dup 1 eq{vert}if dup 2 eq{fdiag}if
  140. Xdup 3 eq{bdiag}if dup 4 eq{horz vert}if 5 eq{fdiag bdiag}if}bd/F{/ft
  141. Xed fm 256 and 0 ne{gs FC ft 0 eq{fill}{eofill}ifelse gr}if fm 1536
  142. Xand 0 ne{SHR gs HC ft CP fm 1024 and 0 ne{/Tmp save def pfill Tmp restore}{fm
  143. X15 and hfill}ifelse gr}if}bd/S{PenW sl PC st}bd/m matrix def/GW{iRes
  144. X12 div PenW add cvi}bd/DoW{iRes 50 div PenW add cvi}bd/DW{iRes 8 div
  145. XPenW add cvi}bd/SP{/PenW ed/iPen ed iPen 0 eq iPen 6 eq or{[] 0 setdash}if
  146. XiPen 1 eq{[DW GW] 0 setdash}if iPen 2 eq{[DoW GW] 0 setdash}if iPen
  147. X3 eq{[DW GW DoW GW] 0 setdash}if iPen 4 eq{[DW GW DoW GW DoW GW] 0
  148. Xsetdash}if}bd/E{m cm pop tr scale 1 0 moveto 0 0 1 0 360 arc cp m sm}bd
  149. X/AG{/sy ed/sx ed sx div 4 1 roll sy div 4 1 roll sx div 4 1 roll sy
  150. Xdiv 4 1 roll atan/a2 ed atan/a1 ed sx sy scale a1 a2 ARC}def/A{m cm
  151. Xpop tr AG m sm}def/P{m cm pop tr 0 0 M AG cp m sm}def/RRect{n 4 copy
  152. XM 3 1 roll exch L 4 2 roll L L cp}bd/RRCC{/r ed/y1 ed/x1 ed/y0 ed/x0
  153. Xed x0 x1 add 2 div y0 M x1 y0 x1 y1 r arcto 4{pop}repeat x1 y1 x0 y1
  154. Xr arcto 4{pop}repeat x0 y1 x0 y0 r arcto 4{pop}repeat x0 y0 x1 y0 r
  155. Xarcto 4{pop}repeat cp}bd/RR{2 copy 0 eq exch 0 eq or{pop pop RRect}{2
  156. Xcopy eq{pop RRCC}{m cm pop/y2 ed/x2 ed/ys y2 x2 div 1 max def/xs x2
  157. Xy2 div 1 max def/y1 exch ys div def/x1 exch xs div def/y0 exch ys div
  158. Xdef/x0 exch xs div def/r2 x2 y2 min def xs ys scale x0 x1 add 2 div
  159. Xy0 M x1 y0 x1 y1 r2 arcto 4{pop}repeat x1 y1 x0 y1 r2 arcto 4{pop}repeat
  160. Xx0 y1 x0 y0 r2 arcto 4{pop}repeat x0 y0 x1 y0 r2 arcto 4{pop}repeat
  161. Xm sm cp}ifelse}ifelse}bd/PP{{rlt}repeat}bd/OB{gs 0 ne{7 3 roll/y ed
  162. X/x ed x y translate ULesc rotate x neg y neg translate x y 7 -3 roll}if
  163. Xsc B fill gr}bd/B{M/dy ed/dx ed dx 0 rlt 0 dy rlt dx neg 0 rlt cp}bd
  164. X/CB{B clip n}bd/ErrHandler{errordict dup maxlength exch length gt
  165. Xdup{errordict begin}if/errhelpdict 12 dict def errhelpdict begin/stackunderflow(operand stack underflow)def
  166. X/undefined(this name is not defined in a dictionary)def/VMerror(you have used up all the printer's memory)def
  167. X/typecheck(operator was expecting a different type of operand)def
  168. X/ioerror(input/output error occured)def end{end}if errordict begin
  169. X/handleerror{$error begin newerror{/newerror false def showpage 72
  170. X72 scale/x .25 def/y 9.6 def/Helvetica findfont .2 scalefont setfont
  171. Xx y moveto(Offending Command = )show/command load{dup type/stringtype
  172. Xne{(max err string)cvs}if show}exec/y y .2 sub def x y moveto(Error = )show
  173. Xerrorname{dup type dup( max err string )cvs show( : )show/stringtype
  174. Xne{( max err string )cvs}if show}exec errordict begin errhelpdict errorname
  175. Xknown{x 1 add y .2 sub moveto errhelpdict errorname get show}if end
  176. X/y y .4 sub def x y moveto(Stack =)show ostack{/y y .2 sub def x 1
  177. Xadd y moveto dup type/stringtype ne{( max err string )cvs}if show}forall
  178. Xshowpage}if end}def end}bd end
  179. X%%EndResource
  180. X/SVDoc save def
  181. X%%EndProlog
  182. X%%BeginSetup
  183. XWin35Dict begin
  184. XErrHandler
  185. X%%EndSetup
  186. XSS
  187. X0 0 18 13 783 1169 300 SM
  188. X32 0 0 54 54 0 0 0 51 /Helvetica-Bold /font13 ANSIFont font
  189. X0 0 0 fC
  190. X728 523 945 (INTRODUCTORY  DOCUMENTATION) 945 SB
  191. X32 0 0 100 100 0 0 0 94 /Helvetica-Bold /font13 ANSIFont font
  192. X711 690 979 (NeTraMet  &  NeMaC) 979 SB
  193. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  194. X641 910 1120 (Network Traffic Meter  &  NeTraMet Manager/Collector) 1120 SB
  195. X32 0 0 75 75 0 0 0 71 /Helvetica-Oblique /font19 ANSIFont font
  196. X949 1152 503 (Nevil Brownlee) 503 SB
  197. X32 0 0 54 54 0 0 0 51 /Helvetica /font12 ANSIFont font
  198. X994 1347 414 (Computer Centre) 414 SB
  199. X880 1414 642 (The University of Auckland) 642 SB
  200. X916 1481 570 (Auckland, New Zealand) 570 SB
  201. X1037 1573 327 (October 1993) 327 SB
  202. X32 0 0 54 54 0 0 0 51 /Helvetica-Bold /font13 ANSIFont font
  203. X1057 2086 258 (PREFACE) 258 SB
  204. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  205. X448 2198 39 (It ) 48 SB
  206. X496 2198 46 (is ) 55 SB
  207. X551 2198 39 (a ) 48 SB
  208. X599 2198 191 (pleasure ) 200 SB
  209. X799 2198 52 (to ) 61 SB
  210. X860 2198 110 (write ) 119 SB
  211. X979 2198 85 (this ) 94 SB
  212. X1073 2198 168 (preface ) 177 SB
  213. X1250 2198 52 (to ) 61 SB
  214. X1311 2198 115 (Nevil ) 124 SB
  215. X1435 2198 238 (Brownlee's ) 248 SB
  216. X1683 2198 242 (introductory) 242 SB
  217. X448 2252 318 (documentation ) 322 SB
  218. X770 2252 67 (for ) 71 SB
  219. X841 2252 218 (NeTraMet ) 222 SB
  220. X1063 2252 91 (and ) 95 SB
  221. X1158 2252 182 (NeMaC. ) 186 SB
  222. X1344 2252 13 ( ) 17 SB
  223. X1361 2252 93 (The ) 97 SB
  224. X1458 2252 172 (system, ) 177 SB
  225. X1635 2252 131 (which ) 136 SB
  226. X1771 2252 154 (collects) 154 SB
  227. X448 2306 238 (accounting ) 245 SB
  228. X693 2306 104 (data ) 112 SB
  229. X805 2306 67 (for ) 75 SB
  230. X880 2306 175 (network ) 183 SB
  231. X1063 2306 139 (traffic, ) 147 SB
  232. X1210 2306 88 (has ) 96 SB
  233. X1306 2306 165 (already ) 173 SB
  234. X1479 2306 155 (proved ) 163 SB
  235. X1642 2306 52 (to ) 60 SB
  236. X1702 2306 65 (be ) 73 SB
  237. X1775 2306 39 (a ) 47 SB
  238. X1822 2306 103 (gold-) 103 SB
  239. X448 2360 113 (mine ) 128 SB
  240. X576 2360 64 (\(in ) 79 SB
  241. X655 2360 78 (the ) 93 SB
  242. X748 2360 201 (figurative ) 216 SB
  243. X964 2360 165 (sense\), ) 180 SB
  244. X1144 2360 201 (providing ) 216 SB
  245. X1360 2360 242 (information ) 257 SB
  246. X1617 2360 130 (about ) 146 SB
  247. X1763 2360 162 (network) 162 SB
  248. X448 2414 126 (traffic ) 136 SB
  249. X584 2414 118 (flows ) 128 SB
  250. X712 2414 91 (and ) 102 SB
  251. X814 2414 154 (activity ) 165 SB
  252. X979 2414 181 (patterns ) 192 SB
  253. X1171 2414 131 (which ) 142 SB
  254. X1313 2414 80 (are ) 91 SB
  255. X1404 2414 222 (invaluable ) 233 SB
  256. X1637 2414 49 (in ) 60 SB
  257. X1697 2414 191 (reaching ) 202 SB
  258. X1899 2414 26 (a) 26 SB
  259. X448 2468 807 (better understanding of network usage.) 807 SB
  260. X1393 2705 409 (Dr John C. B. White) 409 SB
  261. X1393 2759 542 (Director, Computer Centre) 542 SB
  262. X1393 2813 458 (University of Auckland) 458 SB
  263. X32 0 0 46 46 1 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  264. X271 3186 416 (                                ) 416 SB
  265. X687 3186 416 (                                ) 416 SB
  266. X1103 3186 78 (      ) 78 SB
  267. X1171 3186 416 (                                ) 416 SB
  268. X1587 3186 416 (                                ) 416 SB
  269. X2003 3186 78 (      ) 78 SB
  270. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  271. X271 3265 182 (10/15/93) 182 SB
  272. X1116 3265 43 (-- ) 43 SB
  273. X1159 3265 10 (i) 10 SB
  274. X1169 3265 56 (  --) 56 SB
  275. X1866 3265 205 (NeTraMet) 205 SB
  276. XEJ RS
  277. X%%PageTrailer
  278. XSS
  279. X0 0 18 13 783 1169 300 SM
  280. X32 0 0 63 63 0 0 0 59 /Helvetica-Bold /font13 ANSIFont font
  281. X0 0 0 fC
  282. X1021 263 45 (C) 47 SB
  283. X1068 263 49 (O) 51 SB
  284. X1119 263 45 (N) 47 SB
  285. X1166 263 38 (T) 40 SB
  286. X1206 263 42 (E) 44 SB
  287. X1250 263 45 (N) 47 SB
  288. X1297 263 38 (T) 40 SB
  289. X1337 263 42 (S) 44 SB
  290. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  291. Xgs 1936 158 233 336 CB
  292. X330 440 39 (1.) 39 SB
  293. Xgr
  294. Xgs 1936 158 233 336 CB
  295. X405 440 243 (Introduction) 243 SB
  296. Xgr
  297. Xgs 1936 158 233 336 CB
  298. X1899 440 26 (1) 26 SB
  299. Xgr
  300. X419 504 78 (1.1.) 78 SB
  301. X531 504 500 (Operating Environments) 500 SB
  302. X1899 504 26 (1) 26 SB
  303. X419 568 78 (1.2.) 78 SB
  304. X531 568 261 (Traffic Flows) 261 SB
  305. X1899 568 26 (1) 26 SB
  306. X419 632 78 (1.3.) 78 SB
  307. X531 632 910 (The Internet Accounting Meter Services MIB) 910 SB
  308. X1899 632 26 (2) 26 SB
  309. Xgs 1907 79 233 686 CB
  310. X330 711 39 (2.) 39 SB
  311. Xgr
  312. Xgs 1907 79 233 686 CB
  313. X405 711 471 (Implementation Details) 471 SB
  314. Xgr
  315. Xgs 1907 79 233 686 CB
  316. X1899 711 26 (2) 26 SB
  317. Xgr
  318. X419 775 78 (2.1.) 78 SB
  319. X531 775 736 (Program Development Environment) 736 SB
  320. X1899 775 26 (2) 26 SB
  321. X419 839 78 (2.2.) 78 SB
  322. X531 839 951 (Data Structures: Flow, Rule and Action Tables) 951 SB
  323. X1899 839 26 (2) 26 SB
  324. X419 903 78 (2.3.) 78 SB
  325. X531 903 581 (Meter Memory Management) 581 SB
  326. X1899 903 26 (3) 26 SB
  327. X419 967 78 (2.4.) 78 SB
  328. X531 967 533 (Optimising the Rule Table) 533 SB
  329. X1899 967 26 (3) 26 SB
  330. X419 1031 78 (2.5.) 78 SB
  331. X531 1031 498 (The Meter's Outer Block) 498 SB
  332. X1899 1031 26 (3) 26 SB
  333. X419 1095 78 (2.6.) 78 SB
  334. X531 1095 397 (Matching the Rules) 397 SB
  335. X1899 1095 26 (4) 26 SB
  336. X419 1159 78 (2.7.) 78 SB
  337. X531 1159 764 (SNMP: Getting and Setting Variables) 764 SB
  338. X1899 1159 26 (4) 26 SB
  339. X419 1223 78 (2.8.) 78 SB
  340. X531 1223 577 (Creation and Activity Tables) 577 SB
  341. X1899 1223 26 (4) 26 SB
  342. X419 1287 78 (2.9.) 78 SB
  343. X531 1287 872 (Column Blobs: Recovering Bulk Flow Data) 872 SB
  344. X1899 1287 26 (4) 26 SB
  345. Xgs 1907 79 233 1341 CB
  346. X330 1366 39 (3.) 39 SB
  347. Xgr
  348. Xgs 1907 79 233 1341 CB
  349. X405 1366 306 (Flow Attributes) 306 SB
  350. Xgr
  351. Xgs 1907 79 233 1341 CB
  352. X1899 1366 26 (5) 26 SB
  353. Xgr
  354. X419 1430 78 (3.1.) 78 SB
  355. X531 1430 243 (Introduction) 243 SB
  356. X1899 1430 26 (5) 26 SB
  357. X419 1494 78 (3.2.) 78 SB
  358. X531 1494 380 (Ethernet attributes) 380 SB
  359. X1899 1494 26 (5) 26 SB
  360. X419 1558 78 (3.2.) 78 SB
  361. X531 1558 248 (IP attributes) 248 SB
  362. X1899 1558 26 (6) 26 SB
  363. X419 1622 78 (3.3.) 78 SB
  364. X531 1622 366 (DECnet attributes) 366 SB
  365. X1899 1622 26 (6) 26 SB
  366. X419 1686 78 (3.4.) 78 SB
  367. X531 1686 420 (Novell IPX attributes) 420 SB
  368. X1899 1686 26 (7) 26 SB
  369. X419 1750 78 (3.5.) 78 SB
  370. X531 1750 402 (EtherTalk attributes) 402 SB
  371. X1899 1750 26 (7) 26 SB
  372. X419 1814 78 (3.6.) 78 SB
  373. X531 1814 369 (General attributes) 369 SB
  374. X1899 1814 26 (8) 26 SB
  375. Xgs 1907 79 233 1868 CB
  376. X330 1893 39 (4.) 39 SB
  377. Xgr
  378. Xgs 1907 79 233 1868 CB
  379. X405 1893 318 (Flow Data Files) 318 SB
  380. Xgr
  381. Xgs 1907 79 233 1868 CB
  382. X1899 1893 26 (8) 26 SB
  383. Xgr
  384. X419 1957 78 (4.1.) 78 SB
  385. X531 1957 417 (Information Records) 417 SB
  386. X1899 1957 26 (8) 26 SB
  387. X419 2021 78 (4.2.) 78 SB
  388. X531 2021 465 (Sample Flow Data File) 465 SB
  389. X1899 2021 26 (9) 26 SB
  390. X419 2085 78 (4.3.) 78 SB
  391. X531 2085 404 (Flow Data Features) 404 SB
  392. X1873 2085 52 (10) 52 SB
  393. Xgs 1907 79 233 2139 CB
  394. X330 2164 39 (5.) 39 SB
  395. Xgr
  396. Xgs 1907 79 233 2139 CB
  397. X405 2164 361 (Writing Rule Files) 361 SB
  398. Xgr
  399. Xgs 1907 79 233 2139 CB
  400. X1873 2164 52 (10) 52 SB
  401. Xgr
  402. X419 2228 78 (5.1.) 78 SB
  403. X531 2228 243 (Introduction) 243 SB
  404. X1873 2228 52 (10) 52 SB
  405. X419 2292 78 (5.2.) 78 SB
  406. X531 2292 322 (Rule file Syntax) 322 SB
  407. X1873 2292 52 (11) 52 SB
  408. X537 2346 117 (5.2.1.) 117 SB
  409. X687 2346 390 (RuleSet Statement) 390 SB
  410. X1873 2346 52 (11) 52 SB
  411. X537 2400 117 (5.2.2.) 117 SB
  412. X687 2400 286 (Rules Section) 286 SB
  413. X1873 2400 52 (11) 52 SB
  414. X537 2454 117 (5.2.3.) 117 SB
  415. X687 2454 320 (Actions Section) 320 SB
  416. X1873 2454 52 (12) 52 SB
  417. X537 2508 117 (5.2.4.) 117 SB
  418. X687 2508 371 (Format Statement) 371 SB
  419. X1873 2508 52 (13) 52 SB
  420. X537 2562 117 (5.2.5.) 117 SB
  421. X687 2562 410 (Statistics Statement) 410 SB
  422. X1873 2562 52 (13) 52 SB
  423. X419 2626 78 (5.3.) 78 SB
  424. X531 2626 218 ( Rule Files) 218 SB
  425. X1873 2626 52 (13) 52 SB
  426. X537 2680 117 (5.3.1.) 117 SB
  427. X687 2680 253 (rules.default) 253 SB
  428. X1873 2680 52 (13) 52 SB
  429. X537 2734 117 (5.3.2.) 117 SB
  430. X687 2734 262 (rules.sample) 262 SB
  431. X1873 2734 52 (14) 52 SB
  432. X537 2788 117 (5.3.3.) 117 SB
  433. X687 2788 286 (rules.gateway) 286 SB
  434. X1873 2788 52 (16) 52 SB
  435. X537 2842 117 (5.3.4.) 117 SB
  436. X687 2842 216 (rules.UofA) 216 SB
  437. X1873 2842 52 (16) 52 SB
  438. X537 2896 117 (5.3.5.) 117 SB
  439. X687 2896 175 (rules.lan) 175 SB
  440. X1873 2896 52 (18) 52 SB
  441. X32 0 0 46 46 1 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  442. X271 3186 416 (                                ) 416 SB
  443. X687 3186 416 (                                ) 416 SB
  444. X1103 3186 78 (      ) 78 SB
  445. X1171 3186 416 (                                ) 416 SB
  446. X1587 3186 416 (                                ) 416 SB
  447. X2003 3186 78 (      ) 78 SB
  448. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  449. X271 3265 182 (10/15/93) 182 SB
  450. X1111 3265 43 (-- ) 43 SB
  451. X1154 3265 20 (ii) 20 SB
  452. X1174 3265 56 (  --) 56 SB
  453. X1866 3265 205 (NeTraMet) 205 SB
  454. XEJ RS
  455. X%%PageTrailer
  456. XSS
  457. X0 0 18 13 783 1169 300 SM
  458. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  459. X0 0 0 fC
  460. Xgs 1907 79 233 389 CB
  461. X330 414 39 (6.) 39 SB
  462. Xgr
  463. Xgs 1907 79 233 389 CB
  464. X405 414 463 (NeMaC Users' Manual) 463 SB
  465. Xgr
  466. Xgs 1907 79 233 389 CB
  467. X1873 414 52 (19) 52 SB
  468. Xgr
  469. X419 478 78 (6.1.) 78 SB
  470. X531 478 462 (Overview of NeTraMet) 462 SB
  471. X1873 478 52 (19) 52 SB
  472. X419 542 78 (6.2.) 78 SB
  473. X531 542 487 (Command Line Options) 487 SB
  474. X1873 542 52 (19) 52 SB
  475. X419 606 78 (6.3.) 78 SB
  476. X531 606 522 (Configuration File Format) 522 SB
  477. X1873 606 52 (20) 52 SB
  478. Xgs 1907 79 233 660 CB
  479. X330 685 39 (7.) 39 SB
  480. Xgr
  481. Xgs 1907 79 233 660 CB
  482. X405 685 512 (NeTraMet Users' Manual) 512 SB
  483. Xgr
  484. Xgs 1907 79 233 660 CB
  485. X1873 685 52 (20) 52 SB
  486. Xgr
  487. X419 749 78 (7.1.) 78 SB
  488. X531 749 487 (Command Line Options) 487 SB
  489. X1873 749 52 (20) 52 SB
  490. X419 813 78 (7.2.) 78 SB
  491. X531 813 388 (PC Screen Display) 388 SB
  492. X1873 813 52 (21) 52 SB
  493. X419 877 78 (7.3.) 78 SB
  494. X531 877 448 (Keyboard Commands) 448 SB
  495. X1873 877 52 (21) 52 SB
  496. X419 941 78 (7.4.) 78 SB
  497. X531 941 426 (PC Statistics Display) 426 SB
  498. X1873 941 52 (22) 52 SB
  499. X419 1005 78 (7.5.) 78 SB
  500. X531 1005 825 (Configuring Waterloo TCP for NeTraMet) 825 SB
  501. X1873 1005 52 (23) 52 SB
  502. X419 1069 78 (7.6.) 78 SB
  503. X531 1069 599 (Sample AUTOEXEC.BAT file) 599 SB
  504. X1873 1069 52 (23) 52 SB
  505. X419 1133 78 (7.7.) 78 SB
  506. X531 1133 1209 (Differences between PC and SunOS versions of NeTraMet) 1209 SB
  507. X1873 1133 52 (23) 52 SB
  508. Xgs 1907 79 233 1187 CB
  509. X330 1212 39 (8.) 39 SB
  510. Xgr
  511. Xgs 1907 79 233 1187 CB
  512. X405 1212 449 (NeTraMet Distribution) 449 SB
  513. Xgr
  514. Xgs 1907 79 233 1187 CB
  515. X1873 1212 52 (24) 52 SB
  516. Xgr
  517. X419 1276 78 (8.1.) 78 SB
  518. X531 1276 441 (CopyRight Statement) 441 SB
  519. X1873 1276 52 (24) 52 SB
  520. X419 1340 78 (8.2.) 78 SB
  521. X531 1340 344 (DIstribution Files) 344 SB
  522. X1873 1340 52 (24) 52 SB
  523. Xgs 1936 316 233 1394 CB
  524. X330 1419 39 (9.) 39 SB
  525. Xgr
  526. Xgs 1936 316 233 1394 CB
  527. X405 1419 222 (Installation) 222 SB
  528. Xgr
  529. Xgs 1936 316 233 1394 CB
  530. X1873 1419 52 (24) 52 SB
  531. Xgr
  532. Xgs 1936 316 233 1394 CB
  533. X330 1498 65 (10.) 65 SB
  534. Xgr
  535. Xgs 1936 316 233 1394 CB
  536. X419 1498 384 (NeTraMet's Future) 384 SB
  537. Xgr
  538. Xgs 1936 316 233 1394 CB
  539. X1873 1498 52 (25) 52 SB
  540. Xgr
  541. Xgs 1936 316 233 1394 CB
  542. X330 1577 65 (11.) 65 SB
  543. Xgr
  544. Xgs 1936 316 233 1394 CB
  545. X419 1577 376 (Acknowledgments) 376 SB
  546. Xgr
  547. Xgs 1936 316 233 1394 CB
  548. X1873 1577 52 (26) 52 SB
  549. Xgr
  550. Xgs 1936 316 233 1394 CB
  551. X330 1656 65 (11.) 65 SB
  552. Xgr
  553. Xgs 1936 316 233 1394 CB
  554. X419 1656 237 (References) 237 SB
  555. Xgr
  556. Xgs 1936 316 233 1394 CB
  557. X1873 1656 52 (26) 52 SB
  558. Xgr
  559. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  560. X271 2683 1839 (Nevil Brownlee is the Deputy Director of the University of Auckland Computer Centre, and) 1839 SB
  561. X271 2737 1847 (is responsible for support and development of the University's campus network, which has) 1847 SB
  562. X271 2791 1820 (about 2,500 connected hosts.  He is closely involved with Tuia, New Zealand's Research) 1820 SB
  563. X271 2845 1747 (and Education network, co-ordinates Kawaihiko, the New Zealand Universities' group) 1747 SB
  564. X271 2899 1795 (within Tuia, and is active within the IETF, especially on the Internet Accounting Working) 1795 SB
  565. X271 2953 1181 (Group.  He holds a Ph.D. degree in Atmospheric Physics.) 1181 SB
  566. X32 0 0 46 46 1 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  567. X271 3186 416 (                                ) 416 SB
  568. X687 3186 416 (                                ) 416 SB
  569. X1103 3186 78 (      ) 78 SB
  570. X1171 3186 416 (                                ) 416 SB
  571. X1587 3186 416 (                                ) 416 SB
  572. X2003 3186 78 (      ) 78 SB
  573. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  574. X271 3265 182 (10/15/93) 182 SB
  575. X1106 3265 43 (-- ) 43 SB
  576. X1149 3265 30 (iii) 30 SB
  577. X1179 3265 56 (  --) 56 SB
  578. X1866 3265 205 (NeTraMet) 205 SB
  579. XEJ RS
  580. X%%PageTrailer
  581. XSS
  582. X0 0 18 13 783 1169 300 SM
  583. X32 0 0 58 58 0 0 0 54 /Helvetica-Bold /font13 ANSIFont font
  584. X0 0 0 fC
  585. Xgs 323 3426 0 0 CB
  586. X271 339 48 (1.) 48 SB
  587. Xgr
  588. X360 339 16 (I) 18 SB
  589. X378 339 35 (n) 37 SB
  590. X415 339 19 (t) 21 SB
  591. X436 339 23 (r) 25 SB
  592. X461 339 35 (o) 37 SB
  593. X498 339 35 (d) 37 SB
  594. X535 339 35 (u) 37 SB
  595. X572 339 32 (c) 34 SB
  596. X606 339 19 (t) 21 SB
  597. X627 339 16 (i) 18 SB
  598. X645 339 35 (o) 37 SB
  599. X682 339 35 (n) 37 SB
  600. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  601. X271 431 1763 (NeTraMet is a meter for network traffic flows \(see below for definitions\), and is the first) 1763 SB
  602. X271 485 1628 (implementation of the Internet Accounting Working Group's Internet Accounting) 1628 SB
  603. X271 539 1780 (Architecture.  This is outlined in RFC 1272, "Internet Accounting Background," and has) 1780 SB
  604. X271 593 385 (three components:) 385 SB
  605. X32 0 0 46 46 0 0 0 46 /Symbol font
  606. Xgs 351 3426 0 0 CB
  607. X330 669 21 (\267) 21 SB
  608. Xgr
  609. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  610. X389 672 1424 (meters, i.e, small hosts which are attached to a network segment and) 1424 SB
  611. X389 726 823 (measure traffic flowing on that segment;) 823 SB
  612. X32 0 0 46 46 0 0 0 46 /Symbol font
  613. Xgs 351 3426 0 0 CB
  614. X330 802 21 (\267) 21 SB
  615. Xgr
  616. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  617. X389 805 1020 (collectors, which retrieve information from meters;) 1020 SB
  618. X32 0 0 46 46 0 0 0 46 /Symbol font
  619. Xgs 351 3426 0 0 CB
  620. X330 881 21 (\267) 21 SB
  621. Xgr
  622. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  623. X389 884 1564 (managers, which instruct meters as to which flows they should measure and) 1564 SB
  624. X389 938 1468 (collectors as to which meters they should collect from, at what intervals.) 1468 SB
  625. X271 1017 1758 (A collector can collect flow data from many meters, and each meter may have its data) 1758 SB
  626. X271 1071 1821 (retrieved by several collectors.  Traffic flows of interest are defined by user-specified sets) 1821 SB
  627. X271 1125 165 (of rules.) 165 SB
  628. X32 0 0 50 50 0 0 0 47 /Helvetica-Bold /font13 ANSIFont font
  629. X271 1212 84 (1.1.) 84 SB
  630. X413 1212 587 (Operating Environments) 587 SB
  631. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  632. X271 1295 1781 (This release of NeTraMet runs on a SunOS host, using NIT to observe ethernet packet) 1781 SB
  633. X271 1349 1783 (headers, or on a PC using a CRYNWYR packet driver.  The PC implementation can be) 1783 SB
  634. X271 1403 1794 (used with a 10 MHz 286 machine, on which it can handle a steady packet load of about) 1794 SB
  635. X271 1457 1724 (750 packets per second.  On a 25 MHz 386SX it will handle about 1250 packets per) 1724 SB
  636. X271 1511 1839 (second.  NeTraMet can cope with peak traffic bursts of up to 2250 packets per second for) 1839 SB
  637. X271 1565 539 (several seconds at a time.) 539 SB
  638. X271 1644 1803 (This release also includes NeMaC \(NeTraMet Manager/Collector\), a combined manager) 1803 SB
  639. X271 1698 1802 (and collector program.  It  runs on Unix systems, and Make files are included for SunOS) 1802 SB
  640. X271 1752 347 (and Irix systems.) 347 SB
  641. X32 0 0 50 50 0 0 0 47 /Helvetica-Bold /font13 ANSIFont font
  642. X271 1839 84 (1.2.) 84 SB
  643. X413 1839 311 (Traffic Flows) 311 SB
  644. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  645. X271 1922 1854 (A traffic flow is a stream of packets exchanged between two network hosts, which we refer) 1854 SB
  646. X271 1976 1829 (to as the flow's source and destination.  Flows are bi-directional in that packets and bytes) 1829 SB
  647. X271 2030 1674 (can be counted in the 'to' \(source to destination\) and 'from' \(destination to source\)) 1674 SB
  648. X271 2084 211 (directions.) 211 SB
  649. X271 2163 1808 (The 'identity' of a flow is determined by the address attributes of its two hosts, and these) 1808 SB
  650. X271 2217 649 (attributes can be of three kinds:) 649 SB
  651. X389 2296 176 (adjacent) 176 SB
  652. X626 2296 212 (\(link layer\)) 212 SB
  653. X389 2350 93 (peer) 93 SB
  654. X626 2350 305 (\(network layer\)) 305 SB
  655. X389 2404 111 (detail) 111 SB
  656. X626 2404 326 (\(transport layer\)) 326 SB
  657. X271 2483 1190 (Since NeTraMet is \(so far\) only implemented on ethernet, ) 1190 SB
  658. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  659. X1461 2483 403 (adjacent addresses) 403 SB
  660. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  661. X1864 2483 251 ( can only be) 251 SB
  662. X271 2537 411 (ethernet addresses.) 411 SB
  663. X271 2616 44 (A ) 44 SB
  664. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  665. X315 2616 271 (peer address) 271 SB
  666. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  667. X586 2616 1423 ( can be an IP address, a DECnet phase IV address, a Novell network) 1423 SB
  668. X271 2670 1802 (number or an EtherTalk address, these being the four protocols currently understood by) 1802 SB
  669. X271 2724 218 (NeTraMet.) 218 SB
  670. X271 2803 44 (A ) 44 SB
  671. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  672. X315 2803 289 (detail address) 289 SB
  673. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  674. X604 2803 1476 ( contains specifications for details within the peer protocol.  For IP these) 1476 SB
  675. X271 2857 1828 (are the protocol type and source and destination port numbers, and similar kinds of detail) 1828 SB
  676. X271 2911 711 (are defined for the other protocols.) 711 SB
  677. X271 2990 1811 (Within the meter a flow is implemented as a data structure containing the attributes of its) 1811 SB
  678. X271 3044 1681 (source and destination, its packet and byte counters, the times it was first and last) 1681 SB
  679. X271 3098 1206 (observed, and other information used for control purposes.) 1206 SB
  680. X32 0 0 46 46 1 0 0 43 /Helvetica /font12 ANSIFont font
  681. X271 3186 416 (                                ) 416 SB
  682. X687 3186 416 (                                ) 416 SB
  683. X1103 3186 78 (      ) 78 SB
  684. X1171 3186 416 (                                ) 416 SB
  685. X1587 3186 416 (                                ) 416 SB
  686. X2003 3186 78 (      ) 78 SB
  687. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  688. X271 3265 182 (10/15/93) 182 SB
  689. X1115 3265 43 (-- ) 43 SB
  690. X1158 3265 26 (1) 26 SB
  691. X1184 3265 43 ( --) 43 SB
  692. X1866 3265 205 (NeTraMet) 205 SB
  693. XEJ RS
  694. X%%PageTrailer
  695. XSS
  696. X0 0 18 13 783 1169 300 SM
  697. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  698. X0 0 0 fC
  699. X271 256 1672 (The meter could simply create flows for every possible combination of source and) 1672 SB
  700. X271 310 1814 (destination attributes it observes, but this would quickly exhaust its memory.  Instead the) 1814 SB
  701. X271 364 1732 (meter uses a set of rules to decide which flows are of interest, and other packets are) 1732 SB
  702. X271 418 168 (ignored.) 168 SB
  703. X271 497 1799 (Each rule tests one attribute of a flow, using a mask to specify which bits are of interest.) 1799 SB
  704. X271 551 1792 (In this way a tree of rules can be built up to classify packets into flows; each packet can) 1792 SB
  705. X271 605 1723 (then be 'counted' in its appropriate flow.  If this is all that the rules specify, no further) 1723 SB
  706. X271 659 1030 (information about the flow is retained in the meter.) 1030 SB
  707. X271 738 1783 (If more detail is required, the rules can instruct the meter to 'tally' the packet, i.e, create) 1783 SB
  708. X271 792 1826 (many sub-flows instead of a single flow.  For example they might determine that a packet) 1826 SB
  709. X271 846 1840 (has come from a class B IP source, then tally it into flows for each of the source network's) 1840 SB
  710. X271 900 1859 (class C subnets.  Sub-flow details are specified by a set of attribute masks, which make up) 1859 SB
  711. X271 954 39 (a ) 39 SB
  712. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  713. X310 954 232 (tally action.) 232 SB
  714. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  715. X271 1033 1825 (It is also possible to combine several flows together in the meter.  Each of the flows to be) 1825 SB
  716. X271 1087 573 (combined will then have an ) 573 SB
  717. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  718. X844 1087 347 (aggregate action) 347 SB
  719. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  720. X1191 1087 934 ( which specifies all the attribute values for the) 934 SB
  721. X271 1141 318 (aggregate flow.) 318 SB
  722. X32 0 0 50 50 0 0 0 47 /Helvetica-Bold /font13 ANSIFont font
  723. X271 1228 84 (1.3.) 84 SB
  724. X413 1228 1055 (The Internet Accounting Meter Services MIB) 1055 SB
  725. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  726. X271 1311 1682 (The Internet Accounting Group produced an Internet Draft describing its proposed) 1682 SB
  727. X271 1365 1693 (Accounting Meter Services MIB, which was assigned the number Experimental.99.) 1693 SB
  728. X271 1444 1757 (The draft was discussed over several IETF meetings until the Working Group became) 1757 SB
  729. X271 1498 1808 (dormant in March 1993, and informally at meetings and via the Group's mailing list since) 1808 SB
  730. X271 1552 1787 (then.  A copy of the current version - which NeTraMet implements - is included with this) 1787 SB
  731. X271 1606 1557 (release.  It defines all of the MIB variables mentioned in this documentation.) 1557 SB
  732. X32 0 0 58 58 0 0 0 54 /Helvetica-Bold /font13 ANSIFont font
  733. Xgs 323 3426 0 0 CB
  734. X271 1743 48 (2.) 48 SB
  735. Xgr
  736. X360 1743 16 (I) 18 SB
  737. X378 1743 52 (m) 54 SB
  738. X432 1743 35 (p) 37 SB
  739. X469 1743 16 (l) 18 SB
  740. X487 1743 32 (e) 34 SB
  741. X521 1743 52 (m) 54 SB
  742. X575 1743 32 (e) 34 SB
  743. X609 1743 35 (n) 37 SB
  744. X646 1743 19 (t) 21 SB
  745. X667 1743 32 (a) 34 SB
  746. X701 1743 19 (t) 21 SB
  747. X722 1743 16 (i) 18 SB
  748. X740 1743 35 (o) 37 SB
  749. X777 1743 35 (n) 37 SB
  750. X814 1743 16 ( ) 18 SB
  751. X832 1743 42 (D) 44 SB
  752. X876 1743 32 (e) 34 SB
  753. X910 1743 19 (t) 21 SB
  754. X931 1743 32 (a) 34 SB
  755. X965 1743 16 (i) 18 SB
  756. X983 1743 16 (l) 18 SB
  757. X1001 1743 32 (s) 34 SB
  758. X32 0 0 50 50 0 0 0 47 /Helvetica-Bold /font13 ANSIFont font
  759. Xgs 355 3426 0 0 CB
  760. X271 1843 84 (2.1.) 84 SB
  761. Xgr
  762. X413 1843 856 (Program Development Environment) 856 SB
  763. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  764. X271 1926 1687 (NeTraMet was developed on a PC using Borland's Turbo C, Turbo Assembler and) 1687 SB
  765. X271 1980 1841 (interactive development environment.  Turbo Make was used to organise the system, with) 1841 SB
  766. X271 2034 1451 (Make files specifying how the various system components are created.) 1451 SB
  767. X271 2113 1836 (Waterloo C provided a good PC implementation of TCP/IP, and was used to provide UDP) 1836 SB
  768. X271 2167 1812 (transport for SNMP packets.  Waterloo C interfaces with ethernet via a CRYNWR packet) 1812 SB
  769. X271 2221 1835 (driver.  I extended the packet interface to support monitoring by running the ethernet card) 1835 SB
  770. X271 2275 1475 (in promiscuous mode and copying packet headers into a rotating buffer.) 1475 SB
  771. X271 2354 1745 (An early version of CMU SNMP was used for communication between NeTraMet and) 1745 SB
  772. X271 2408 1656 (NeMaC.  This was ported to the PC, and extended to support SET operations on) 1656 SB
  773. X271 2462 809 (character and \(16-bit\) integer variables.) 809 SB
  774. X32 0 0 50 50 0 0 0 47 /Helvetica-Bold /font13 ANSIFont font
  775. Xgs 355 3426 0 0 CB
  776. X271 2549 84 (2.2.) 84 SB
  777. Xgr
  778. X413 2549 1106 (Data Structures: Flow, Rule and Action Tables) 1106 SB
  779. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  780. X271 2632 1850 (Host addresses \(adjacent, peer and detail\) and their masks are held in a structure called a) 1850 SB
  781. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  782. X271 2686 85 (key.) 85 SB
  783. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  784. X356 2686 1599 (  A flow is a larger structure which contains two keys, one each for source and) 1599 SB
  785. X271 2740 1789 (destination host.  General attributes are stored as variables within a flow, and there is a) 1789 SB
  786. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  787. X271 2794 69 (link) 69 SB
  788. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  789. X340 2794 1711 ( field to enable flows to be linked together.  Space for flows is allocated dynamically) 1711 SB
  790. X271 2848 1751 (from a pool of flows.  The flow table is implemented as an array of pointers to flows; a) 1751 SB
  791. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  792. X271 2902 211 (FlowIndex) 211 SB
  793. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  794. X482 2902 539 ( is an index into this array.) 539 SB
  795. X271 2981 1745 (Rules are implemented in a smaller structure.  Space for a rule table is allocated as a) 1745 SB
  796. X271 3035 486 (single block of memory.) 486 SB
  797. X32 0 0 46 46 1 0 0 43 /Helvetica /font12 ANSIFont font
  798. X271 3186 416 (                                ) 416 SB
  799. X687 3186 416 (                                ) 416 SB
  800. X1103 3186 78 (      ) 78 SB
  801. X1171 3186 416 (                                ) 416 SB
  802. X1587 3186 416 (                                ) 416 SB
  803. X2003 3186 78 (      ) 78 SB
  804. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  805. X271 3265 182 (10/15/93) 182 SB
  806. X1115 3265 43 (-- ) 43 SB
  807. X1158 3265 26 (2) 26 SB
  808. X1184 3265 43 ( --) 43 SB
  809. X1866 3265 205 (NeTraMet) 205 SB
  810. XEJ RS
  811. X%%PageTrailer
  812. XSS
  813. X0 0 18 13 783 1169 300 SM
  814. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  815. X0 0 0 fC
  816. X271 256 1853 (Actions are stored in a flow structure, since they have exactly the same set of components) 1853 SB
  817. X271 310 1227 (as a flow.  An action  table is an array of pointers to actions.) 1227 SB
  818. X271 389 1632 (The first time a flow is observed the meter allocates space for it and assigns it a) 1632 SB
  819. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  820. X271 443 250 (FlowIndex.  ) 250 SB
  821. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  822. X521 443 1566 (The addresses of count and tally flows are held in the rule and action tables.) 1566 SB
  823. X271 497 1800 (Tallies are implemented as hash tables; a hash table's address is held in its action table) 1800 SB
  824. X271 551 116 (entry.) 116 SB
  825. X32 0 0 50 50 0 0 0 47 /Helvetica-Bold /font13 ANSIFont font
  826. Xgs 355 3426 0 0 CB
  827. X271 638 84 (2.3.) 84 SB
  828. Xgr
  829. X413 638 662 (Meter Memory Management) 662 SB
  830. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  831. X271 721 1829 (Once a flow has been created it could continue to exist indefinitely.  In time, however, the) 1829 SB
  832. X271 775 1772 (meter will run out of space for new flows.  To deal with this problem NeTraMet uses an) 1772 SB
  833. X271 829 621 (incremental garbage collector.) 621 SB
  834. X271 908 735 (At regular intervals specified by the ) 735 SB
  835. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  836. X1006 908 510 (GarbagecCollectInterval ) 510 SB
  837. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  838. X1516 908 609 (variable the garbage collector) 609 SB
  839. X271 962 1815 (procedure is invoked.  This searches through the flow table looking for flows which might) 1815 SB
  840. X271 1016 1805 (be recovered.  To control the resources consumed by garbage collection there are limits) 1805 SB
  841. X271 1070 1858 (on the number of in-use and idle flows which the garbage collector may inspect - these are) 1858 SB
  842. X271 1124 1410 (the parameters described in the 'PC Statistics display' section below.) 1410 SB
  843. X271 1203 1794 (To decide whether a flow can be recovered, the garbage collector considers how long it) 1794 SB
  844. X271 1257 1828 (has been inactive \(no packets in either direction\), and when its data was last collected.  If) 1828 SB
  845. X271 1311 894 (it has been collected at least once since its ) 894 SB
  846. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  847. X1165 1311 203 (LastTime,) 203 SB
  848. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  849. X1368 1311 749 ( it may be recovered.  This alogrithm) 749 SB
  850. X271 1365 796 (is implemented using a variable called ) 796 SB
  851. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  852. X1067 1365 437 (GarbageCollectTime,) 437 SB
  853. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  854. X1504 1365 582 ( which normally contains the) 582 SB
  855. X271 1419 163 (meter's ) 163 SB
  856. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  857. X434 1419 161 (UpTime) 161 SB
  858. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  859. X595 1419 901 ( when the collection before last was started.) 901 SB
  860. X271 1498 1740 (Should flows not be collected often enough the meter could run out of space.  This is) 1740 SB
  861. X271 1552 1801 (prevented by having a low-priority background process check the percentage of flows in) 1801 SB
  862. X271 1606 581 (use and compare it with the ) 581 SB
  863. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  864. X852 1606 320 (HighWaterMark) 320 SB
  865. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  866. X1172 1606 917 ( variable.  If the percentage of flows in use is) 917 SB
  867. X271 1660 699 (greater than the high-water mark, ) 699 SB
  868. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  869. X970 1660 424 (GarbageCollectTime) 424 SB
  870. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  871. X1394 1660 735 ( is incremented by the current value) 735 SB
  872. X271 1714 130 (of the ) 130 SB
  873. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  874. X401 1714 347 (InactivityTimeout) 347 SB
  875. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  876. X748 1714 1344 ( variable.  The effect of this is that if a collector fails NeTraMet will) 1344 SB
  877. X271 1768 599 (continue to create flows until ) 599 SB
  878. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  879. X870 1768 320 (HighWaterMark) 320 SB
  880. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  881. X1190 1768 930 ( is exceeded, then recover the oldest flows to) 930 SB
  882. X271 1822 656 (maintain sufficient free memory.) 656 SB
  883. X271 1901 1832 (The MIB specifies that a meter should generate an SNMP trap if flow data is lost; this has) 1832 SB
  884. X271 1955 1822 (not yet been implemented.  The values of the memory management variables mentioned) 1822 SB
  885. X271 2009 1750 (above can be set by NeMaC - it should be possible to tune them to work effectively in) 1750 SB
  886. X271 2063 332 (nearly all cases.) 332 SB
  887. X32 0 0 50 50 0 0 0 47 /Helvetica-Bold /font13 ANSIFont font
  888. Xgs 355 3426 0 0 CB
  889. X271 2150 84 (2.4.) 84 SB
  890. Xgr
  891. X413 2150 622 (Optimising the Rule Table) 622 SB
  892. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  893. X271 2233 1836 (Rules are commonly tested in sequence until a successful match selects a new index into) 1836 SB
  894. X271 2287 1711 (the rule table.  Testing a packet against a long list of addresses is thus a sequential) 1711 SB
  895. X271 2341 1783 (search, which would be slow.  To improve rule testing performance NeTraMet performs) 1783 SB
  896. X271 2395 1819 (flow analysis of a new rule table, looking for groups of rules which test the same attribute) 1819 SB
  897. X271 2449 1807 (using the same mask.  Groups which have more than four rules are organised into small) 1807 SB
  898. X271 2503 1683 (hash tables - these can effectively be tested with a hash computation and a single) 1683 SB
  899. X271 2557 193 (compare.) 193 SB
  900. X32 0 0 50 50 0 0 0 47 /Helvetica-Bold /font13 ANSIFont font
  901. Xgs 355 3426 0 0 CB
  902. X271 2644 84 (2.5.) 84 SB
  903. Xgr
  904. X413 2644 577 (The Meter's Outer Block) 577 SB
  905. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  906. X271 2727 1814 (MeTraMet's outer block is a single loop which implements four asynchronous processes.) 1814 SB
  907. X271 2781 826 (These are - in decreasing priority order -) 826 SB
  908. X32 0 0 42 42 0 0 0 42 /Symbol font
  909. Xgs 290 3426 0 0 CB
  910. X271 2861 19 (\267) 19 SB
  911. Xgr
  912. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  913. X345 2860 484 (Handle SNMP requests) 484 SB
  914. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  915. X829 2860 924 (.  Process these and send SNMP responses.) 924 SB
  916. X32 0 0 42 42 0 0 0 42 /Symbol font
  917. Xgs 290 3426 0 0 CB
  918. X271 2940 19 (\267) 19 SB
  919. Xgr
  920. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  921. X345 2939 511 (Monitor ethernet packets) 511 SB
  922. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  923. X856 2939 1112 ( \(including NeTraMet SNMP requests and responses\).) 1112 SB
  924. X345 2993 1243 (Test each against the current rule set and count as required.) 1243 SB
  925. X32 0 0 46 46 1 0 0 43 /Helvetica /font12 ANSIFont font
  926. X271 3186 416 (                                ) 416 SB
  927. X687 3186 416 (                                ) 416 SB
  928. X1103 3186 78 (      ) 78 SB
  929. X1171 3186 416 (                                ) 416 SB
  930. X1587 3186 416 (                                ) 416 SB
  931. X2003 3186 78 (      ) 78 SB
  932. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  933. X271 3265 182 (10/15/93) 182 SB
  934. X1115 3265 43 (-- ) 43 SB
  935. X1158 3265 26 (3) 26 SB
  936. X1184 3265 43 ( --) 43 SB
  937. X1866 3265 205 (NeTraMet) 205 SB
  938. XEJ RS
  939. X%%PageTrailer
  940. XSS
  941. X0 0 18 13 783 1169 300 SM
  942. X32 0 0 42 42 0 0 0 42 /Symbol font
  943. X0 0 0 fC
  944. Xgs 290 3426 0 0 CB
  945. X271 257 19 (\267) 19 SB
  946. Xgr
  947. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  948. X345 256 603 (Handle keyboard commands.) 603 SB
  949. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  950. X948 256 893 (  Test the keyboard once each second, and) 893 SB
  951. X345 310 695 (process any incoming keystrokes.) 695 SB
  952. X32 0 0 42 42 0 0 0 42 /Symbol font
  953. Xgs 290 3426 0 0 CB
  954. X271 390 19 (\267) 19 SB
  955. Xgr
  956. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  957. X345 389 450 (Memory Management) 450 SB
  958. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  959. X795 389 1039 (.  Attempt to recover memory, as described above.) 1039 SB
  960. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  961. X345 443 474 (GarbageCollectInterval) 474 SB
  962. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  963. X819 443 730 ( is set to 5 seconds by default, and ) 730 SB
  964. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  965. X1549 443 320 (HighWaterMark) 320 SB
  966. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  967. X1869 443 46 ( is) 46 SB
  968. X345 497 517 (tested every 30 seconds.) 517 SB
  969. X32 0 0 50 50 0 0 0 47 /Helvetica-Bold /font13 ANSIFont font
  970. Xgs 355 3426 0 0 CB
  971. X271 584 84 (2.6.) 84 SB
  972. Xgr
  973. X413 584 463 (Matching the Rules) 463 SB
  974. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  975. X271 667 1772 (When a packet arrives at the meter two key data structures are built, one for its source) 1772 SB
  976. X271 721 1789 (and one for its destination.  An attempt is made to match the packet against the current) 1789 SB
  977. X271 775 1858 (rule set with the keys in source-to-destination order; if this succeeds the packet is counted.) 1858 SB
  978. X271 854 1758 (If the match fails, the keys are interchanged and the packet is tested against the rules) 1758 SB
  979. X271 908 804 (again.  If it fails this time it is discarded.) 804 SB
  980. X271 987 1837 (A third possibility is that the packet matched a tally rule, but its flow was not yet present in) 1837 SB
  981. X271 1041 1767 (the tally.  Since it might already have been seen travelling in the opposite direction the) 1767 SB
  982. X271 1095 1842 (match is retried with the keys interchanged.  If this fails the flow is added into the tally with) 1842 SB
  983. X271 1149 783 (its keys in source-to-destination order.) 783 SB
  984. X271 1228 1738 (This algorithm means that you can use symmetrical tallies, i.e. tallies having identical) 1738 SB
  985. X271 1282 1852 (masks in both directions, if you don't care about flow direction.  Alternatively you may write) 1852 SB
  986. X271 1336 1833 (rules which enforce a particular source-to-destination order.  Examples of these are given) 1833 SB
  987. X271 1390 817 (in the section on writing rule files below.) 817 SB
  988. X32 0 0 50 50 0 0 0 47 /Helvetica-Bold /font13 ANSIFont font
  989. Xgs 355 3426 0 0 CB
  990. X271 1477 84 (2.7.) 84 SB
  991. Xgr
  992. X413 1477 878 (SNMP: Getting and Setting Variables) 878 SB
  993. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  994. X271 1560 1589 (The code for getting and setting SNMP variables was developed from CMU's ) 1589 SB
  995. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  996. X1860 1560 236 (snmpvars.c) 236 SB
  997. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  998. X271 1614 1714 (file.  I have modified this to use a binary search to find object identifiers as required,) 1714 SB
  999. X271 1668 719 (replacing the original linear search.) 719 SB
  1000. X271 1747 1765 (Simple procedures for setting character, \(16-bit\) integer and \(32-bit\) long variables are) 1765 SB
  1001. X271 1801 1460 (used when no special action is required.  Special actions, e.g. updating) 1460 SB
  1002. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  1003. X271 1855 424 (GarbageCollectTime) 424 SB
  1004. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  1005. X695 1855 215 ( when the ) 215 SB
  1006. X32 0 0 46 46 0 0 0 43 /Helvetica-Oblique /font19 ANSIFont font
  1007. X910 1855 331 (LastCollectTime) 331 SB
  1008. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  1009. X1241 1855 729 ( variable is set, are implemented as) 729 SB
  1010. X271 1909 451 (individual procedures.) 451 SB
  1011. X32 0 0 50 50 0 0 0 47 /Helvetica-Bold /font13 ANSIFont font
  1012. Xgs 355 3426 0 0 CB
  1013. X271 1996 84 (2.8.) 84 SB
  1014. Xgr
  1015. X413 1996 678 (Creation and Activity Tables) 678 SB
  1016. X32 0 0 46 46 0 0 0 43 /Helvetica /font12 ANSIFont font
  1017. X271 2079 1590 (A rather unusual requirement for the accounting meter is the ability to support) 1590 SB
  1018. X271 2133 1842 (asynchronous collection of flow data by many meters simultaneously.  This is described in) 1842 SB
  1019. X271 2187 1859 (the MIB by the Creation and Activity tables, which provide a collector with windows into the) 1859 SB
  1020. X271 2241 1805 (flow table, allowing it to inspect only those flows created or active since a specified time.) 1805 SB
  1021. X271 2295 1789 (This time is passed to the meter as one component of an object identifier; you can view) 1789 SB
  1022. X271 2349 1837 (this as a parameter being passed to the GET procedure which implements the creation or) 1837 SB
  1023. X271 2403 268 (activity table.) 268 SB
  1024. X271 2482 1808 (Another aspect of having multiple collectors is that one of them may collect performance) 1808 SB
  1025. X271 2536 1700 (statistics.  One possibility would be to have one meter collecting flow data every 15) 1700 SB
  1026. X271 2590 1739 (minutes, a second collecting flow data every hour, and a third collecting performance) 1739 SB
  1027. X271 2644 853 (statistics \(but not flow data\) every minute.) 853 SB
  1028. X32 0 0 50 50 0 0 0 47 /Helvetica-Bold /font13 ANSIFont font
  1029. Xgs 355 3426 0 0 CB
  1030. X271 2731 84 (2.9.) 84 SB
  1031. Xgr
  1032. END_OF_FILE
  1033.   if test 47198 -ne `wc -c <'netramet/doc/NeTraMet/NeTraMet.man.ps.A'`; then
  1034.     echo shar: \"'netramet/doc/NeTraMet/NeTraMet.man.ps.A'\" unpacked with wrong size!
  1035.   else  
  1036.     PARTS="" 
  1037.     for I in A B C D ; do 
  1038.       if test -f netramet/doc/NeTraMet/NeTraMet.man.ps.$I ; then
  1039.         PARTS="${PARTS}${I}"  
  1040.       fi  
  1041.       if test "${PARTS}" = "ABCD" ; then  
  1042.         echo shar: Combining  \"'netramet/doc/NeTraMet/NeTraMet.man.ps'\" \(188008 characters\)
  1043.         cat netramet/doc/NeTraMet/NeTraMet.man.ps.[A-D] > 'netramet/doc/NeTraMet/NeTraMet.man.ps'
  1044.         if test 188008 -ne `wc -c <'netramet/doc/NeTraMet/NeTraMet.man.ps'`; then 
  1045.           echo shar: \"'netramet/doc/NeTraMet/NeTraMet.man.ps'\" combined with wrong size!  
  1046.         else  
  1047.           rm netramet/doc/NeTraMet/NeTraMet.man.ps.[A-D]  
  1048.         fi    
  1049.       fi    
  1050.     done  
  1051.   fi
  1052.   # end of 'netramet/doc/NeTraMet/NeTraMet.man.ps.A'
  1053. fi
  1054. if test -f 'netramet/sg/apps/snmpnetstat/Makefile' -a "${1}" != "-c" ; then 
  1055.   echo shar: Will not clobber existing file \"'netramet/sg/apps/snmpnetstat/Makefile'\"
  1056. else
  1057.   echo shar: Extracting \"'netramet/sg/apps/snmpnetstat/Makefile'\" \(1593 characters\)
  1058.   sed "s/^X//" >'netramet/sg/apps/snmpnetstat/Makefile' <<'END_OF_FILE'
  1059. X# Modified by Nevil Brownlee, Auckland University
  1060. X#    Silicon Graphics version
  1061. X#
  1062. X#
  1063. X# Copyright (c) 1987 Regents of the University of California.
  1064. X# All rights reserved.
  1065. X#
  1066. X# Redistribution and use in source and binary forms are permitted
  1067. X# provided that the above copyright notice and this paragraph are
  1068. X# duplicated in all such forms and that any documentation,
  1069. X# advertising materials, and other materials related to such
  1070. X# distribution and use acknowledge that the software was developed
  1071. X# by the University of California, Berkeley.  The name of the
  1072. X# University may not be used to endorse or promote products derived
  1073. X# from this software without specific prior written permission.
  1074. X# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  1075. X# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  1076. X# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  1077. X#
  1078. X#    @(#)Makefile    5.10 (Berkeley) 9/20/88
  1079. X#
  1080. XSINCLUDE= ../../../src/snmplib/include
  1081. X
  1082. X#CFLAGS=    -g -I$(SINCLUDE) -cckr -D_BSD_SIGNALS -D_BSD_COMPAT
  1083. XCFLAGS=     -g -I$(SINCLUDE) -D_BSD_SIGNALS -D_BSD_COMPAT
  1084. X
  1085. XLIBS=    ../../snmplib/libsnmp.a
  1086. X
  1087. XSRC=    ../../../src/apps/snmpnetstat
  1088. X
  1089. XSRCS=    ${SRC}/inet.c ${SRC}/if.c ${SRC}/main.c ${SRC}/route.c 
  1090. XOBJS=    ${SRC}/inet.o ${SRC}/if.o ${SRC}/main.o ${SRC}/route.o
  1091. X
  1092. Xall: snmpnetstat
  1093. X
  1094. Xsnmpnetstat: ${SRCS} ${LIBS}
  1095. X    ${CC} -o $@ ${CFLAGS} ${SRCS} ${LIBS}
  1096. X
  1097. Xclean:
  1098. X    rm -f ${OBJS} core snmpnetstat
  1099. X
  1100. Xcleandir: clean
  1101. X    rm -f ${MAN} tags .depend
  1102. X
  1103. Xdepend: ${SRCS}
  1104. X    mkdep ${CFLAGS} ${SRCS}
  1105. X
  1106. Xlint: ${SRCS}
  1107. X    lint ${CFLAGS} ${SRCS}
  1108. X
  1109. Xtags: ${SRCS}
  1110. X    ctags ${SRCS}
  1111. X
  1112. Xinstall:
  1113. X    cp snmpnetstat ../../bin
  1114. X
  1115. END_OF_FILE
  1116.   if test 1593 -ne `wc -c <'netramet/sg/apps/snmpnetstat/Makefile'`; then
  1117.     echo shar: \"'netramet/sg/apps/snmpnetstat/Makefile'\" unpacked with wrong size!
  1118.   fi
  1119.   # end of 'netramet/sg/apps/snmpnetstat/Makefile'
  1120. fi
  1121. if test -f 'netramet/src/meter/meter_ux.c' -a "${1}" != "-c" ; then 
  1122.   echo shar: Will not clobber existing file \"'netramet/src/meter/meter_ux.c'\"
  1123. else
  1124.   echo shar: Extracting \"'netramet/src/meter/meter_ux.c'\" \(11571 characters\)
  1125.   sed "s/^X//" >'netramet/src/meter/meter_ux.c' <<'END_OF_FILE'
  1126. X/* 1712, Wed 5 Oct 93
  1127. X
  1128. X   SNMPD.C:  The AU Internet Accouting Meter mainline;
  1129. X        based on CMU's snmpd,
  1130. X        PCIP's packet monitoring
  1131. X        and Waterloo's TCP/IP.
  1132. X
  1133. X   Copyright (C) 1992,1993 by Nevil Brownlee,
  1134. X   Computer Centre,  University of Auckland */
  1135. X
  1136. X/*
  1137. X * snmpd.c - send snmp GET requests to a network entity.
  1138. X *
  1139. X */
  1140. X/***********************************************************
  1141. X    Copyright 1988, 1989 by Carnegie Mellon University
  1142. X
  1143. X                      All Rights Reserved
  1144. X
  1145. XPermission to use, copy, modify, and distribute this software and its 
  1146. Xdocumentation for any purpose and without fee is hereby granted, 
  1147. Xprovided that the above copyright notice appear in all copies and that
  1148. Xboth that copyright notice and this permission notice appear in 
  1149. Xsupporting documentation, and that the name of CMU not be
  1150. Xused in advertising or publicity pertaining to distribution of the
  1151. Xsoftware without specific, written prior permission.  
  1152. X
  1153. XCMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
  1154. XALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
  1155. XCMU BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
  1156. XANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  1157. XWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
  1158. XARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  1159. XSOFTWARE.
  1160. X******************************************************************/
  1161. X
  1162. X#define noUX_TESTING
  1163. X
  1164. X#include <sys/types.h>
  1165. X#include <netinet/in.h>
  1166. X#include <sys/socket.h>
  1167. X#include <arpa/inet.h>
  1168. X
  1169. X#include <stdio.h>
  1170. X#include <errno.h>
  1171. X#include <string.h>
  1172. X
  1173. X#include <sys/types.h>
  1174. X#include <sys/time.h>
  1175. X#include <sys/timeb.h>
  1176. X
  1177. X#include "ausnmp.h"
  1178. X#include "snmp.h"
  1179. X#include "snmpimpl.h"
  1180. X#include "asn1.h"
  1181. X
  1182. X#define PKTSNAP
  1183. X#include "pktsnap.h"
  1184. X#include "flowhash.h"
  1185. X
  1186. X#define APPLETALK
  1187. X
  1188. Xextern char version_descr[];  /* In met_vars.c */
  1189. Xextern char *communities[];  /* In snmp/snmpagnt.c */
  1190. X
  1191. X#include <sys/time.h>
  1192. X#include <stropts.h>
  1193. X#include <fcntl.h>
  1194. X
  1195. X#include <net/if.h>
  1196. X#include <net/nit_if.h>
  1197. X#include <net/nit_pf.h>
  1198. X#include <net/nit_buf.h>
  1199. X
  1200. X#define NIT_DEV "/dev/nit"
  1201. Xchar *device = "le0";
  1202. X
  1203. Xint initdevice(if_flags, snaplen, chunksize)
  1204. Xu_long if_flags,
  1205. X   snaplen,
  1206. X   chunksize;
  1207. X{
  1208. X   int nit_fd;
  1209. X   struct strioctl     si;
  1210. X   struct ifreq   ifr;
  1211. X   struct timeval timeout;
  1212. X
  1213. X   nit_fd = open(NIT_DEV, O_RDONLY);
  1214. X
  1215. X   /* Arrange to get discrete messages from the stream. */
  1216. X   ioctl(nit_fd, I_SRDOPT, (char *)RMSGD);
  1217. X
  1218. X   si.ic_timout = INFTIM;
  1219. X
  1220. X   /* and configure the buffering module. */
  1221. X   ioctl(nit_fd, I_PUSH, "nbuf");
  1222. X
  1223. X   timeout.tv_sec = 0;
  1224. X   timeout.tv_usec = 250000L;  /* 0.25 sec */
  1225. X   si.ic_cmd = NIOCSTIME;
  1226. X   si.ic_len = sizeof timeout;
  1227. X   si.ic_dp = (char *)&timeout;
  1228. X   ioctl(nit_fd, I_STR, (char *)&si);
  1229. X
  1230. X   si.ic_cmd = NIOCSCHUNK;
  1231. X   si.ic_len = sizeof chunksize;
  1232. X   si.ic_dp = (char *)&chunksize;
  1233. X
  1234. X   ioctl(nit_fd, I_STR, (char *)&si);
  1235. X
  1236. X   /* Configure the nit device, binding it to the proper
  1237. X      underlying interface, setting the snapshot length,
  1238. X      and setting nit_if-level flags. */
  1239. X
  1240. X   strcpy(ifr.ifr_name, device);
  1241. X   si.ic_cmd = NIOCBIND;
  1242. X   si.ic_len = sizeof ifr;
  1243. X   si.ic_dp = (char *)𝔦
  1244. X   ioctl(nit_fd, I_STR, (char *)&si);
  1245. X
  1246. X   if (snaplen > 0) {
  1247. X      si.ic_cmd = NIOCSSNAP;
  1248. X      si.ic_len = sizeof snaplen;
  1249. X      si.ic_dp = (char *)&snaplen;
  1250. X      ioctl(nit_fd, I_STR, (char *)&si);
  1251. X      }
  1252. X
  1253. X   if (if_flags != 0) {
  1254. X      si.ic_cmd = NIOCSFLAGS;
  1255. X      si.ic_len = sizeof if_flags;
  1256. X      si.ic_dp = (char *)&if_flags;
  1257. X      ioctl(nit_fd, I_STR, (char *)&si);
  1258. X      }
  1259. X
  1260. X   /* Flush the read queue, to get rid of anything that accumulated
  1261. X      before the device reached its final configuration. */
  1262. X
  1263. X   if (ioctl(nit_fd, I_FLUSH, (char *)FLUSHR) < 0) {
  1264. X      close(nit_fd);
  1265. X      printf("FLUSH failed\n");
  1266. X      exit(1);
  1267. X      }
  1268. X   return nit_fd;
  1269. X   }
  1270. X
  1271. X#define CHUNKSIZE  70000
  1272. X
  1273. Xint init_nit()
  1274. X{
  1275. X    return initdevice(NI_PROMISC | NI_LEN | NI_DROPS, SNAPTO+1, CHUNKSIZE);
  1276. X    }
  1277. X
  1278. Xunsigned char buf[CHUNKSIZE];
  1279. X
  1280. Xvoid nit_read(nit_fd)
  1281. Xint nit_fd;
  1282. X{
  1283. X    int cc;
  1284. X    u_char *bp,*bufstop;
  1285. X    register struct pt_entry *ptep;
  1286. X
  1287. X    cc = read(nit_fd, buf, CHUNKSIZE);
  1288. X    bp = buf;
  1289. X    bufstop = buf+cc;
  1290. X    while (bp < bufstop) {
  1291. X    register u_char *cp = bp;
  1292. X    struct nit_bufhdr *hdrp;
  1293. X    struct nit_iflen *nlp;
  1294. X    struct nit_ifdrops *drp;
  1295. X        unsigned char pkt_type;
  1296. X        unsigned int pktlen, b12_13;
  1297. X
  1298. X        ++npackets;
  1299. X    hdrp = (struct nit_bufhdr *)cp;  cp += sizeof *hdrp;
  1300. X    drp = (struct nit_ifdrops *)cp;  cp += sizeof *drp;
  1301. X        lostpackets += drp->nh_drops;
  1302. X    nlp = (struct nit_iflen *)cp;  cp += sizeof *nlp;
  1303. X        pktlen = nlp->nh_pktlen;
  1304. X    bp += hdrp->nhb_totlen;
  1305. X
  1306. X         /* Process the packet */
  1307. X
  1308. X     b12_13 = cp[12]<<8 | cp[13];
  1309. X         if (b12_13 == 0x0800) pkt_type = AT_IP;
  1310. X         else if (b12_13 <= MAXPKTLEN) {  /* 802.2 packet */
  1311. X        if (cp[14] == 0xFF && cp[15] == 0xFF) pkt_type = AT_NOVELL;
  1312. X#ifdef APPLETALK
  1313. X        else if (cp[14] == 0xAA && cp[15] == 0xAA) {  /* SNAP */
  1314. X           if (cp[20] == 0x80 && cp[21] == 0x9B) pkt_type = AT_ETHERTALK;
  1315. X           else continue;  /* Ignore other SNAP packets */
  1316. X           }
  1317. X#endif
  1318. X        else continue;  /* Ignore other 802.2 packets */
  1319. X        }
  1320. X         else if (b12_13 == 0x6003) pkt_type = AT_DECNET;
  1321. X         else continue;  /* Ignore other Blue Book packets */
  1322. X
  1323. X     pkt_monitor(&cp[SNAPFROM], pktlen, pkt_type);
  1324. X        }
  1325. X   }
  1326. X
  1327. Xtime_t accounting_start_time;  /* Seconds since start of Unix epoch */
  1328. X
  1329. Xunsigned long uptime(void)  /* SNMP time */
  1330. X{
  1331. X   return (time(NULL)-accounting_start_time)*100;  /* centiseconds */
  1332. X   }
  1333. X
  1334. Xvoid show_meter_time()
  1335. X{
  1336. X   char msg[60], *ts;
  1337. X   ts = ctime(&accounting_start_time);
  1338. X   sprintf(msg,"%lu seconds since %c%c%c%c:%c%c",
  1339. X      time(NULL)-accounting_start_time,
  1340. X      ts[11],ts[12],ts[14],ts[15], ts[17],ts[18]);
  1341. X   display_msg(0,msg);
  1342. X   }
  1343. X
  1344. Xextern int  errno;
  1345. Xint    snmp_dump_packet = 0;
  1346. X
  1347. Xvoid main(argc, argv)
  1348. X    int        argc;
  1349. X    char    *argv[];
  1350. X{
  1351. X   int arg,c, sd;
  1352. X   char *ap;
  1353. X   struct sockaddr_in me;
  1354. X   int nit_fd;
  1355. X
  1356. X   printf("%s\n",version_descr);
  1357. X   display_enabled = kb_enabled = 1;  /* Enabled by default */
  1358. X   mxflowsp1 = DFMXFLOWS+1;
  1359. X   accounting_start_time = time(NULL) - 2;  /* So flows have CreateTime > 1 */
  1360. X   /* Default (CMU) communities are:  0 = "public", 1 = "proxy",
  1361. X     2 = "private", 3 = "regional", 4 = "core"
  1362. X      We only allow "public" and "private" by default */
  1363. X   communities[1] = communities[3] = communities[4] = "";
  1364. X   for (c = 0, arg = 1; arg < argc; ++arg) {
  1365. X      if (argv[arg][0] == '-') {
  1366. X     switch (argv[arg][1]) {
  1367. X     case 'd':
  1368. X        snmp_dump_packet++;
  1369. X        break;
  1370. X     case 'f':
  1371. X        ap = argv[arg]+2;
  1372. X        if (*ap == NULL) ap = argv[++arg];
  1373. X        mxflowsp1 = atoi(ap)+1;
  1374. X        break;
  1375. X     case 'k':
  1376. X        kb_enabled = 0;  /* -k to disable keyboard */
  1377. X        break;
  1378. X     case 'r':
  1379. X        for (;;) {
  1380. X           if (c == 5) {
  1381. X                  printf("Max of 4 read communities allowed\n");
  1382. X                  exit(0);
  1383. X                  }
  1384. X           communities[c++] = argv[++arg];
  1385. X           if (c == 2) ++c;  /* 2 -> "private" */
  1386. X           if (arg == argc-1 || argv[arg+1][0] == '-') break;
  1387. X               }
  1388. X        break;
  1389. X     case 's':
  1390. X        display_enabled = 0;  /* -s to disable screen */
  1391. X        break;
  1392. X     case 'w':
  1393. X        communities[2] = argv[++arg];  /* -w to set write community */
  1394. X        break;
  1395. X     default:
  1396. X        printf("Invalid option: -%c\n", argv[arg][1]);
  1397. X        exit(0);
  1398. X        }
  1399. X     }
  1400. X      }
  1401. X    /* Set up connections */
  1402. X    sd = socket(AF_INET, SOCK_DGRAM, 0);
  1403. X    if (sd < 0){
  1404. X    perror("socket");
  1405. X    exit(1);
  1406. X    }
  1407. X    me.sin_family = AF_INET;
  1408. X    me.sin_addr.s_addr = INADDR_ANY;
  1409. X    me.sin_port = htons(SNMP_PORT);
  1410. X    if (bind(sd, (struct sockaddr *)&me, sizeof(me)) != 0){
  1411. X    perror("bind");
  1412. X    exit(2);
  1413. X    }
  1414. X    init_monitor();
  1415. X    init_snmp();
  1416. X    nit_fd = init_nit();
  1417. X    receive(sd,nit_fd);
  1418. X}
  1419. X
  1420. X#define TICKS_PER_S    4  /* 0.25s timeout on NIT -> 4 ticks per second */
  1421. X#define BKG_INTERVAL  30  /* Seconds */
  1422. X
  1423. Xvoid zero_pkt_stats()
  1424. X{
  1425. X   kilodummypackets = npackets = lostpackets = stats_time = spackets = 0L;
  1426. X   max_pkt_rate = 0;
  1427. X   clear_pkt_stats = 0;
  1428. X   }
  1429. X
  1430. Xreceive(sd,nit_fd)
  1431. X    int sd,nit_fd;
  1432. X{
  1433. X   fd_set fdset;
  1434. X   char kb_buf[25];
  1435. X   int ch, count, onesi, gci;
  1436. X        /* initdevice() sets the nit timeout to 0.25 seconds */
  1437. X        /* If the ethernet is very busy, we'll garbage collect more often */
  1438. X   unsigned char p;
  1439. X   unsigned long pd;
  1440. X
  1441. X   onesi = TICKS_PER_S;  bkgi = BKG_INTERVAL*TICKS_PER_S;
  1442. X   zero_pkt_stats();
  1443. X   for (;;) {
  1444. X      FD_ZERO(&fdset);
  1445. X      FD_SET(sd, &fdset);
  1446. X      FD_SET(nit_fd, &fdset);
  1447. X      if (kb_enabled) FD_SET(0, &fdset);  /* stdin */
  1448. X      count = select(FD_SETSIZE, &fdset, 0, 0, 0); 
  1449. X      if (count > 0) {
  1450. X         if (FD_ISSET(sd, &fdset))
  1451. X        snmp_read(sd);
  1452. X     if (FD_ISSET(nit_fd, &fdset)) {
  1453. X        s_uptime = uptime();  /* Don't do this too often! */
  1454. X        nit_read(nit_fd);
  1455. X            if (--onesi == 0) {  /* One-second process .. */
  1456. X               if (clear_pkt_stats) zero_pkt_stats();
  1457. X               else {
  1458. X                  ++stats_time;
  1459. X                  pd = npackets-spackets;
  1460. X                  if (pd > max_pkt_rate) max_pkt_rate = pd;
  1461. X                  spackets = npackets;
  1462. X          }
  1463. X               if (--gci == 0) {
  1464. X              garbage_collect();
  1465. X                  gci = gc_interval;
  1466. X                  }
  1467. X               if (--bkgi == 0) {
  1468. X              p = (unsigned long)nflows*100/(mxflowsp1-1);
  1469. X              if (p > HighWaterMark) {  /* % flows in use */
  1470. X             pd = s_uptime-InactivityTimeout;
  1471. X             GarbageCollectTime += InactivityTimeout;
  1472. X             if (GarbageCollectTime > pd) GarbageCollectTime = pd;
  1473. X             }
  1474. X                  bkgi = BKG_INTERVAL*TICKS_PER_S;
  1475. X                  }
  1476. X               onesi = TICKS_PER_S;
  1477. X           }
  1478. X        }
  1479. X         if (FD_ISSET(0, &fdset)) {  /* stdin */
  1480. X            fgets(kb_buf, sizeof kb_buf, stdin);
  1481. X        if ((ch = kb_buf[0]) == 27) {  /* ESC */
  1482. X           display_msg(1,"Shutting down");
  1483. X               exit(0);
  1484. X               }
  1485. X        switch (tolower(ch)) {
  1486. X        case 'v':
  1487. X           printf("\n%s\n",version_descr);
  1488. X           break;
  1489. X        default:
  1490. X           handle_kb(ch);
  1491. X           break;
  1492. X           }
  1493. X        }
  1494. X     } 
  1495. X      else switch (count) {
  1496. X      case 0:
  1497. X     break;
  1498. X      case -1:
  1499. X     if (errno == EINTR) continue;
  1500. X     else perror("select");
  1501. X     return -1;
  1502. X      default:
  1503. X     printf("select returned %d\n", count);
  1504. X     return -1;
  1505. X     }
  1506. X      }
  1507. X   }
  1508. X
  1509. Xunsigned long snmp_peer_addr;
  1510. X
  1511. Xsnmp_read(sd)
  1512. X    int sd;
  1513. X{
  1514. X    struct sockaddr_in    from;
  1515. X    int length, out_length, fromlength;
  1516. X    u_char  packet[1500], outpacket[1500];
  1517. X    char snmp_peer_name[50];  /* Name of host which sent the snmp request */
  1518. X
  1519. X    fromlength = sizeof from;
  1520. X    length = recvfrom(sd, packet, 1500, 0, (struct sockaddr *)&from, &fromlength);
  1521. X    snmp_peer_addr = from.sin_addr.s_addr;
  1522. X    strcpy(snmp_peer_name,inet_ntoa(from.sin_addr));
  1523. X    if (length == -1)
  1524. X    perror("recvfrom");
  1525. X    if (snmp_dump_packet){
  1526. X    int count;
  1527. X
  1528. X    printf("recieved %d bytes from %s:\n", length, snmp_peer_name);
  1529. X    for(count = 0; count < length; count++){
  1530. X        printf("%02X ", packet[count]);
  1531. X        if ((count % 16) == 15)
  1532. X        printf("\n");
  1533. X    }
  1534. X    printf("\n\n");
  1535. X    }
  1536. X    out_length = 1500;
  1537. X    if (snmp_agent_parse(packet, length, outpacket, &out_length, from.sin_addr)){
  1538. X    if (snmp_dump_packet){
  1539. X        int count;
  1540. X
  1541. X        printf("sent %d bytes to %s:\n", out_length, snmp_peer_name);
  1542. X        for(count = 0; count < out_length; count++){
  1543. X        printf("%02X ", outpacket[count]);
  1544. X        if ((count % 16) == 15)
  1545. X            printf("\n");
  1546. X        }
  1547. X        printf("\n\n");
  1548. X    }
  1549. X    if (sendto(sd, (char *)outpacket, out_length, 0, (struct sockaddr *)&from,
  1550. X        sizeof(from)) < 0){
  1551. X        perror("sendto");
  1552. X        return 0;
  1553. X    }
  1554. X
  1555. X    }
  1556. X    
  1557. X}
  1558. X
  1559. END_OF_FILE
  1560.   if test 11571 -ne `wc -c <'netramet/src/meter/meter_ux.c'`; then
  1561.     echo shar: \"'netramet/src/meter/meter_ux.c'\" unpacked with wrong size!
  1562.   fi
  1563.   # end of 'netramet/src/meter/meter_ux.c'
  1564. fi
  1565. echo shar: End of archive 10 \(of 25\).
  1566. cp /dev/null ark10isdone
  1567. MISSING=""
  1568. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ; do
  1569.     if test ! -f ark${I}isdone ; then
  1570.     MISSING="${MISSING} ${I}"
  1571.     fi
  1572. done
  1573. if test "${MISSING}" = "" ; then
  1574.     echo You have unpacked all 25 archives.
  1575.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1576. else
  1577.     echo You still must unpack the following archives:
  1578.     echo "        " ${MISSING}
  1579. fi
  1580. exit 0
  1581. exit 0 # Just in case...
  1582. exit 0 # Just in case...
  1583.