Merge branch 'master' into mono4-continuations_fix
[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         class MibIcmpV4Statistics : IcmpV4Statistics
34         {
35                 StringDictionary dic;
36
37                 public MibIcmpV4Statistics (StringDictionary dic)
38                 {
39                         this.dic = dic;
40                 }
41
42                 long Get (string name)
43                 {
44                         return dic [name] != null ? long.Parse (dic [name], NumberFormatInfo.InvariantInfo) : 0;
45                 }
46
47                 public override long AddressMaskRepliesReceived {
48                         get { return Get ("InAddrMaskReps"); }
49                 }
50                 public override long AddressMaskRepliesSent {
51                         get { return Get ("OutAddrMaskReps"); }
52                 }
53                 public override long AddressMaskRequestsReceived {
54                         get { return Get ("InAddrMasks"); }
55                 }
56                 public override long AddressMaskRequestsSent {
57                         get { return Get ("OutAddrMasks"); }
58                 }
59                 public override long DestinationUnreachableMessagesReceived {
60                         get { return Get ("InDestUnreachs"); }
61                 }
62                 public override long DestinationUnreachableMessagesSent {
63                         get { return Get ("OutDestUnreachs"); }
64                 }
65                 public override long EchoRepliesReceived {
66                         get { return Get ("InEchoReps"); }
67                 }
68                 public override long EchoRepliesSent {
69                         get { return Get ("OutEchoReps"); }
70                 }
71                 public override long EchoRequestsReceived {
72                         get { return Get ("InEchos"); }
73                 }
74                 public override long EchoRequestsSent {
75                         get { return Get ("OutEchos"); }
76                 }
77                 public override long ErrorsReceived {
78                         get { return Get ("InErrors"); }
79                 }
80                 public override long ErrorsSent {
81                         get { return Get ("OutErrors"); }
82                 }
83                 public override long MessagesReceived {
84                         get { return Get ("InMsgs"); }
85                 }
86                 public override long MessagesSent {
87                         get { return Get ("OutMsgs"); }
88                 }
89                 public override long ParameterProblemsReceived {
90                         get { return Get ("InParmProbs"); }
91                 }
92                 public override long ParameterProblemsSent {
93                         get { return Get ("OutParmProbs"); }
94                 }
95                 public override long RedirectsReceived {
96                         get { return Get ("InRedirects"); }
97                 }
98                 public override long RedirectsSent {
99                         get { return Get ("OutRedirects"); }
100                 }
101                 public override long SourceQuenchesReceived {
102                         get { return Get ("InSrcQuenchs"); }
103                 }
104                 public override long SourceQuenchesSent {
105                         get { return Get ("OutSrcQuenchs"); }
106                 }
107                 public override long TimeExceededMessagesReceived {
108                         get { return Get ("InTimeExcds"); }
109                 }
110                 public override long TimeExceededMessagesSent {
111                         get { return Get ("OutTimeExcds"); }
112                 }
113                 public override long TimestampRepliesReceived {
114                         get { return Get ("InTimestampReps"); }
115                 }
116                 public override long TimestampRepliesSent {
117                         get { return Get ("OutTimestampReps"); }
118                 }
119                 public override long TimestampRequestsReceived {
120                         get { return Get ("InTimestamps"); }
121                 }
122                 public override long TimestampRequestsSent {
123                         get { return Get ("OutTimestamps"); }
124                 }
125         }
126
127 #if !MOBILE
128         class Win32IcmpV4Statistics : IcmpV4Statistics
129         {
130                 Win32_MIBICMPSTATS iin, iout;
131
132                 public Win32IcmpV4Statistics (Win32_MIBICMPINFO info)
133                 {
134                         iin = info.InStats;
135                         iout = info.OutStats;
136                 }
137
138                 public override long AddressMaskRepliesReceived {
139                         get { return iin.AddrMaskReps; }
140                 }
141                 public override long AddressMaskRepliesSent {
142                         get { return iout.AddrMaskReps; }
143                 }
144                 public override long AddressMaskRequestsReceived {
145                         get { return iin.AddrMasks; }
146                 }
147                 public override long AddressMaskRequestsSent {
148                         get { return iout.AddrMasks; }
149                 }
150                 public override long DestinationUnreachableMessagesReceived {
151                         get { return iin.DestUnreachs; }
152                 }
153                 public override long DestinationUnreachableMessagesSent {
154                         get { return iout.DestUnreachs; }
155                 }
156                 public override long EchoRepliesReceived {
157                         get { return iin.EchoReps; }
158                 }
159                 public override long EchoRepliesSent {
160                         get { return iout.EchoReps; }
161                 }
162                 public override long EchoRequestsReceived {
163                         get { return iin.Echos; }
164                 }
165                 public override long EchoRequestsSent {
166                         get { return iout.Echos; }
167                 }
168                 public override long ErrorsReceived {
169                         get { return iin.Errors; }
170                 }
171                 public override long ErrorsSent {
172                         get { return iout.Errors; }
173                 }
174                 public override long MessagesReceived {
175                         get { return iin.Msgs; }
176                 }
177                 public override long MessagesSent {
178                         get { return iout.Msgs; }
179                 }
180                 public override long ParameterProblemsReceived {
181                         get { return iin.ParmProbs; }
182                 }
183                 public override long ParameterProblemsSent {
184                         get { return iout.ParmProbs; }
185                 }
186                 public override long RedirectsReceived {
187                         get { return iin.Redirects; }
188                 }
189                 public override long RedirectsSent {
190                         get { return iout.Redirects; }
191                 }
192                 public override long SourceQuenchesReceived {
193                         get { return iin.SrcQuenchs; }
194                 }
195                 public override long SourceQuenchesSent {
196                         get { return iout.SrcQuenchs; }
197                 }
198                 public override long TimeExceededMessagesReceived {
199                         get { return iin.TimeExcds; }
200                 }
201                 public override long TimeExceededMessagesSent {
202                         get { return iout.TimeExcds; }
203                 }
204                 public override long TimestampRepliesReceived {
205                         get { return iin.TimestampReps; }
206                 }
207                 public override long TimestampRepliesSent {
208                         get { return iout.TimestampReps; }
209                 }
210                 public override long TimestampRequestsReceived {
211                         get { return iin.Timestamps; }
212                 }
213                 public override long TimestampRequestsSent {
214                         get { return iout.Timestamps; }
215                 }
216         }
217
218         struct Win32_MIBICMPINFO
219         {
220                 public Win32_MIBICMPSTATS InStats;
221                 public Win32_MIBICMPSTATS OutStats;
222         }
223
224         struct Win32_MIBICMPSTATS
225         {
226                 public uint Msgs;
227                 public uint Errors;
228                 public uint DestUnreachs;
229                 public uint TimeExcds;
230                 public uint ParmProbs;
231                 public uint SrcQuenchs;
232                 public uint Redirects;
233                 public uint Echos;
234                 public uint EchoReps;
235                 public uint Timestamps;
236                 public uint TimestampReps;
237                 public uint AddrMasks;
238                 public uint AddrMaskReps;
239         }
240 #endif
241 }
242