3ad40ed2e1cd13361e8af8d0bb0ab2ac14b265b6
[mono.git] / mcs / class / System / System.Net.NetworkInformation / IcmpV4Statistics.cs
1 //
2 // System.Net.NetworkInformation.IcmpV4Statistics
3 //
4 // Authors:
5 //      Gonzalo Paniagua Javier (gonzalo@novell.com)
6 //      Atsushi Enomoto (atsushi@ximian.com)
7 //
8 // Copyright (c) 2006-2007 Novell, Inc. (http://www.novell.com)
9 //
10 // Permission is hereby granted, free of charge, to any person obtaining
11 // a copy of this software and associated documentation files (the
12 // "Software"), to deal in the Software without restriction, including
13 // without limitation the rights to use, copy, modify, merge, publish,
14 // distribute, sublicense, and/or sell copies of the Software, and to
15 // permit persons to whom the Software is furnished to do so, subject to
16 // the following conditions:
17 // 
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
20 // 
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28 //
29 using System.Collections.Specialized;
30 using System.Globalization;
31
32 namespace System.Net.NetworkInformation {
33         public abstract class IcmpV4Statistics {
34                 protected IcmpV4Statistics ()
35                 {
36                 }
37
38                 public abstract long AddressMaskRepliesReceived { get; }
39                 public abstract long AddressMaskRepliesSent { get; }
40                 public abstract long AddressMaskRequestsReceived { get; }
41                 public abstract long AddressMaskRequestsSent { get; }
42                 public abstract long DestinationUnreachableMessagesReceived { get; }
43                 public abstract long DestinationUnreachableMessagesSent { get; }
44                 public abstract long EchoRepliesReceived { get; }
45                 public abstract long EchoRepliesSent { get; }
46                 public abstract long EchoRequestsReceived { get; }
47                 public abstract long EchoRequestsSent { get; }
48                 public abstract long ErrorsReceived { get; }
49                 public abstract long ErrorsSent { get; }
50                 public abstract long MessagesReceived { get; }
51                 public abstract long MessagesSent { get; }
52                 public abstract long ParameterProblemsReceived { get; }
53                 public abstract long ParameterProblemsSent { get; }
54                 public abstract long RedirectsReceived { get; }
55                 public abstract long RedirectsSent { get; }
56                 public abstract long SourceQuenchesReceived { get; }
57                 public abstract long SourceQuenchesSent { get; }
58                 public abstract long TimeExceededMessagesReceived { get; }
59                 public abstract long TimeExceededMessagesSent { get; }
60                 public abstract long TimestampRepliesReceived { get; }
61                 public abstract long TimestampRepliesSent { get; }
62                 public abstract long TimestampRequestsReceived { get; }
63                 public abstract long TimestampRequestsSent { get; }
64         }
65
66         class MibIcmpV4Statistics : IcmpV4Statistics
67         {
68                 StringDictionary dic;
69
70                 public MibIcmpV4Statistics (StringDictionary dic)
71                 {
72                         this.dic = dic;
73                 }
74
75                 long Get (string name)
76                 {
77                         return dic [name] != null ? long.Parse (dic [name], NumberFormatInfo.InvariantInfo) : 0;
78                 }
79
80                 public override long AddressMaskRepliesReceived {
81                         get { return Get ("InAddrMaskReps"); }
82                 }
83                 public override long AddressMaskRepliesSent {
84                         get { return Get ("OutAddrMaskReps"); }
85                 }
86                 public override long AddressMaskRequestsReceived {
87                         get { return Get ("InAddrMasks"); }
88                 }
89                 public override long AddressMaskRequestsSent {
90                         get { return Get ("OutAddrMasks"); }
91                 }
92                 public override long DestinationUnreachableMessagesReceived {
93                         get { return Get ("InDestUnreachs"); }
94                 }
95                 public override long DestinationUnreachableMessagesSent {
96                         get { return Get ("OutDestUnreachs"); }
97                 }
98                 public override long EchoRepliesReceived {
99                         get { return Get ("InEchoReps"); }
100                 }
101                 public override long EchoRepliesSent {
102                         get { return Get ("OutEchoReps"); }
103                 }
104                 public override long EchoRequestsReceived {
105                         get { return Get ("InEchos"); }
106                 }
107                 public override long EchoRequestsSent {
108                         get { return Get ("OutEchos"); }
109                 }
110                 public override long ErrorsReceived {
111                         get { return Get ("InErrors"); }
112                 }
113                 public override long ErrorsSent {
114                         get { return Get ("OutErrors"); }
115                 }
116                 public override long MessagesReceived {
117                         get { return Get ("InMsgs"); }
118                 }
119                 public override long MessagesSent {
120                         get { return Get ("OutMsgs"); }
121                 }
122                 public override long ParameterProblemsReceived {
123                         get { return Get ("InParmProbs"); }
124                 }
125                 public override long ParameterProblemsSent {
126                         get { return Get ("OutParmProbs"); }
127                 }
128                 public override long RedirectsReceived {
129                         get { return Get ("InRedirects"); }
130                 }
131                 public override long RedirectsSent {
132                         get { return Get ("OutRedirects"); }
133                 }
134                 public override long SourceQuenchesReceived {
135                         get { return Get ("InSrcQuenchs"); }
136                 }
137                 public override long SourceQuenchesSent {
138                         get { return Get ("OutSrcQuenchs"); }
139                 }
140                 public override long TimeExceededMessagesReceived {
141                         get { return Get ("InTimeExcds"); }
142                 }
143                 public override long TimeExceededMessagesSent {
144                         get { return Get ("OutTimeExcds"); }
145                 }
146                 public override long TimestampRepliesReceived {
147                         get { return Get ("InTimestampReps"); }
148                 }
149                 public override long TimestampRepliesSent {
150                         get { return Get ("OutTimestampReps"); }
151                 }
152                 public override long TimestampRequestsReceived {
153                         get { return Get ("InTimestamps"); }
154                 }
155                 public override long TimestampRequestsSent {
156                         get { return Get ("OutTimestamps"); }
157                 }
158         }
159
160 #if !MOBILE
161         class Win32IcmpV4Statistics : IcmpV4Statistics
162         {
163                 Win32_MIBICMPSTATS iin, iout;
164
165                 public Win32IcmpV4Statistics (Win32_MIBICMPINFO info)
166                 {
167                         iin = info.InStats;
168                         iout = info.OutStats;
169                 }
170
171                 public override long AddressMaskRepliesReceived {
172                         get { return iin.AddrMaskReps; }
173                 }
174                 public override long AddressMaskRepliesSent {
175                         get { return iout.AddrMaskReps; }
176                 }
177                 public override long AddressMaskRequestsReceived {
178                         get { return iin.AddrMasks; }
179                 }
180                 public override long AddressMaskRequestsSent {
181                         get { return iout.AddrMasks; }
182                 }
183                 public override long DestinationUnreachableMessagesReceived {
184                         get { return iin.DestUnreachs; }
185                 }
186                 public override long DestinationUnreachableMessagesSent {
187                         get { return iout.DestUnreachs; }
188                 }
189                 public override long EchoRepliesReceived {
190                         get { return iin.EchoReps; }
191                 }
192                 public override long EchoRepliesSent {
193                         get { return iout.EchoReps; }
194                 }
195                 public override long EchoRequestsReceived {
196                         get { return iin.Echos; }
197                 }
198                 public override long EchoRequestsSent {
199                         get { return iout.Echos; }
200                 }
201                 public override long ErrorsReceived {
202                         get { return iin.Errors; }
203                 }
204                 public override long ErrorsSent {
205                         get { return iout.Errors; }
206                 }
207                 public override long MessagesReceived {
208                         get { return iin.Msgs; }
209                 }
210                 public override long MessagesSent {
211                         get { return iout.Msgs; }
212                 }
213                 public override long ParameterProblemsReceived {
214                         get { return iin.ParmProbs; }
215                 }
216                 public override long ParameterProblemsSent {
217                         get { return iout.ParmProbs; }
218                 }
219                 public override long RedirectsReceived {
220                         get { return iin.Redirects; }
221                 }
222                 public override long RedirectsSent {
223                         get { return iout.Redirects; }
224                 }
225                 public override long SourceQuenchesReceived {
226                         get { return iin.SrcQuenchs; }
227                 }
228                 public override long SourceQuenchesSent {
229                         get { return iout.SrcQuenchs; }
230                 }
231                 public override long TimeExceededMessagesReceived {
232                         get { return iin.TimeExcds; }
233                 }
234                 public override long TimeExceededMessagesSent {
235                         get { return iout.TimeExcds; }
236                 }
237                 public override long TimestampRepliesReceived {
238                         get { return iin.TimestampReps; }
239                 }
240                 public override long TimestampRepliesSent {
241                         get { return iout.TimestampReps; }
242                 }
243                 public override long TimestampRequestsReceived {
244                         get { return iin.Timestamps; }
245                 }
246                 public override long TimestampRequestsSent {
247                         get { return iout.Timestamps; }
248                 }
249         }
250
251         struct Win32_MIBICMPINFO
252         {
253                 public Win32_MIBICMPSTATS InStats;
254                 public Win32_MIBICMPSTATS OutStats;
255         }
256
257         struct Win32_MIBICMPSTATS
258         {
259                 public uint Msgs;
260                 public uint Errors;
261                 public uint DestUnreachs;
262                 public uint TimeExcds;
263                 public uint ParmProbs;
264                 public uint SrcQuenchs;
265                 public uint Redirects;
266                 public uint Echos;
267                 public uint EchoReps;
268                 public uint Timestamps;
269                 public uint TimestampReps;
270                 public uint AddrMasks;
271                 public uint AddrMaskReps;
272         }
273 #endif
274 }
275