blob: 436979e5109811bb3ffbe97007813d100bb05852 [file] [log] [blame]
kartikey dubeye1545422019-05-22 12:53:45 +00001/*
2 * Copyright 2018-present Open Networking Foundation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package org.opencord.aaa;
18
Jonathan Hartc41227c2020-01-28 16:56:49 -080019import com.google.common.base.MoreObjects;
20import com.google.common.collect.ImmutableMap;
21
Vijaykumar Kushwahaa54ce552019-06-18 09:37:42 +000022import java.util.LinkedList;
kartikey dubeye1545422019-05-22 12:53:45 +000023import java.util.concurrent.atomic.AtomicLong;
24
Jonathan Hartc41227c2020-01-28 16:56:49 -080025/**
26 * Records metrics for the AAA application.
27 */
kartikey dubeye1545422019-05-22 12:53:45 +000028public class AaaStatistics {
Jonathan Hartc41227c2020-01-28 16:56:49 -080029 public static final String ACCEPT_RESPONSES_RX = "acceptResponsesRx";
30 public static final String REJECT_RESPONSES_RX = "rejectResponsesRx";
31 public static final String CHALLENGE_RESPONSES_RX = "challengeResponsesRx";
32 public static final String ACCESS_REQUESTS_TX = "accessRequestsTx";
33 public static final String PENDING_REQUESTS = "pendingRequests";
34 public static final String TIMED_OUT_PACKETS = "timedOutPackets";
35 public static final String UNKNOWN_TYPE_RX = "unknownTypeRx";
36 public static final String INVALID_VALIDATORS_RX = "invalidValidatorsRx";
37 public static final String DROPPED_RESPONSES_RX = "droppedResponsesRx";
38 public static final String MALFORMED_RESPONSES_RX = "malformedResponsesRx";
39 public static final String UNKNOWN_SERVER_RX = "unknownServerRx";
40 public static final String REQUEST_RTT_MILLIS = "requestRttMillis";
41 public static final String REQUEST_RE_TX = "requestReTx";
42 public static final String NUM_SESSIONS_EXPIRED = "numSessionsExpired";
43 public static final String EAPOL_LOGOFF_RX = "eapolLogoffRx";
44 public static final String EAPOL_AUTH_SUCCESS_TRANS = "eapolAuthSuccessTrans";
45 public static final String EAPOL_AUTH_FAILURE_TRANS = "eapolAuthFailureTrans";
46 public static final String EAPOL_START_REQ_TRANS = "eapolStartReqTrans";
47 public static final String EAPOL_MD5_RESP_CHALLENGE = "eapolMd5RespChallenge";
48 public static final String EAPOL_TLS_RESP_CHALLENGE = "eapolTlsRespChallenge";
49 public static final String EAPOL_TRANS_RESP_NOT_NAK = "eapolTransRespNotNak";
50 public static final String EAP_PKT_TX_AUTH_CHOOSE_EAP = "eapPktTxauthChooseEap";
51 public static final String RES_ID_EAP_FRAMES_RX = "resIdEapFramesRx";
52 public static final String EAPOL_RES_IDENTITY_MSG_TRANS = "eapolResIdentityMsgTrans";
53 public static final String EAPOL_FRAMES_TX = "eapolFramesTx";
54 public static final String AUTH_STATE_IDLE = "authStateIdle";
55 public static final String REQUEST_ID_FRAMES_TX = "requestIdFramesTx";
56 public static final String REQUEST_EAP_FRAMES_TX = "requestEapFramesTx";
57 public static final String INVALID_PKT_TYPE = "invalidPktType";
58 public static final String INVALID_BODY_LENGTH = "invalidBodyLength";
59 public static final String VALID_EAPOL_FRAMES_RX = "validEapolFramesRx";
60 public static final String PENDING_RES_SUPPLICANT = "pendingResSupplicant";
61
62 public static final String[] COUNTER_NAMES = new String[]{
63 ACCEPT_RESPONSES_RX,
64 REJECT_RESPONSES_RX,
65 CHALLENGE_RESPONSES_RX,
66 ACCESS_REQUESTS_TX,
67 PENDING_REQUESTS,
68 TIMED_OUT_PACKETS,
69 UNKNOWN_TYPE_RX,
70 INVALID_VALIDATORS_RX,
71 DROPPED_RESPONSES_RX,
72 MALFORMED_RESPONSES_RX,
73 UNKNOWN_SERVER_RX,
74 REQUEST_RTT_MILLIS,
75 REQUEST_RE_TX,
76 NUM_SESSIONS_EXPIRED,
77 EAPOL_LOGOFF_RX,
78 EAPOL_AUTH_SUCCESS_TRANS,
79 EAPOL_AUTH_FAILURE_TRANS,
80 EAPOL_START_REQ_TRANS,
81 EAPOL_MD5_RESP_CHALLENGE,
82 EAPOL_TLS_RESP_CHALLENGE,
83 EAPOL_TRANS_RESP_NOT_NAK,
84 EAP_PKT_TX_AUTH_CHOOSE_EAP,
85 RES_ID_EAP_FRAMES_RX,
86 EAPOL_RES_IDENTITY_MSG_TRANS,
87 EAPOL_FRAMES_TX,
88 AUTH_STATE_IDLE,
89 REQUEST_ID_FRAMES_TX,
90 REQUEST_EAP_FRAMES_TX,
91 INVALID_PKT_TYPE,
92 INVALID_BODY_LENGTH,
93 VALID_EAPOL_FRAMES_RX,
94 PENDING_RES_SUPPLICANT,
95 };
96
Vijaykumar Kushwahaa54ce552019-06-18 09:37:42 +000097 // Number of access accept packets sent to the server
kartikey dubeye1545422019-05-22 12:53:45 +000098 private AtomicLong acceptResponsesRx = new AtomicLong();
Vijaykumar Kushwahaa54ce552019-06-18 09:37:42 +000099 // Number of access reject packets sent to the server
kartikey dubeye1545422019-05-22 12:53:45 +0000100 private AtomicLong rejectResponsesRx = new AtomicLong();
Vijaykumar Kushwahaa54ce552019-06-18 09:37:42 +0000101 // Number of access challenge packets sent to the server
kartikey dubeye1545422019-05-22 12:53:45 +0000102 private AtomicLong challengeResponsesRx = new AtomicLong();
Vijaykumar Kushwahaa54ce552019-06-18 09:37:42 +0000103 // Number of access request packets sent to the server
kartikey dubeye1545422019-05-22 12:53:45 +0000104 private AtomicLong accessRequestsTx = new AtomicLong();
Vijaykumar Kushwahaa54ce552019-06-18 09:37:42 +0000105 // Number of access request packets pending a response from the server
kartikey dubeye1545422019-05-22 12:53:45 +0000106 private AtomicLong pendingRequests = new AtomicLong();
Shubham Sharma1e43c562019-06-19 14:18:12 +0000107 // Number of packets send to the server which timed out.
108 private AtomicLong timedOutPackets = new AtomicLong();
Vijaykumar Kushwahaa54ce552019-06-18 09:37:42 +0000109 // Number of packets of an unknown RADIUS type received from the accounting
110 // server
kartikey dubeye1545422019-05-22 12:53:45 +0000111 private AtomicLong unknownTypeRx = new AtomicLong();
Vijaykumar Kushwahaa54ce552019-06-18 09:37:42 +0000112 // Number of access response packets received from the server with an invalid
113 // validator
kartikey dubeye1545422019-05-22 12:53:45 +0000114 private AtomicLong invalidValidatorsRx = new AtomicLong();
Vijaykumar Kushwahaa54ce552019-06-18 09:37:42 +0000115 // Number of dropped packets received from the accounting server
kartikey dubeye1545422019-05-22 12:53:45 +0000116 private AtomicLong droppedResponsesRx = new AtomicLong();
Vijaykumar Kushwahaa54ce552019-06-18 09:37:42 +0000117 // Number of malformed access response packets received from the server
kartikey dubeye1545422019-05-22 12:53:45 +0000118 private AtomicLong malformedResponsesRx = new AtomicLong();
Vijaykumar Kushwahaa54ce552019-06-18 09:37:42 +0000119 // Number of packets received from an unknown server
kartikey dubeye1545422019-05-22 12:53:45 +0000120 private AtomicLong unknownServerRx = new AtomicLong();
Vijaykumar Kushwahaa54ce552019-06-18 09:37:42 +0000121 // Roundtrip packet time to the accounting server
kartikey dubeye1545422019-05-22 12:53:45 +0000122 private AtomicLong requestRttMilis = new AtomicLong();
Vijaykumar Kushwahaa54ce552019-06-18 09:37:42 +0000123 // Number of access request packets retransmitted to the server
kartikey dubeye1545422019-05-22 12:53:45 +0000124 private AtomicLong requestReTx = new AtomicLong();
Vijaykumar Kushwahaa54ce552019-06-18 09:37:42 +0000125 // Number of sessions expired
kartikey dubeye1545422019-05-22 12:53:45 +0000126 private AtomicLong numberOfSessionsExpired = new AtomicLong();
Shubham Sharma1f193582019-07-11 12:12:41 +0000127 //Number of EAPOL logoff messages received resulting in disconnected state
128 private AtomicLong eapolLogoffRx = new AtomicLong();
129 //Number of authenticated transitions due to successful authentication
130 private AtomicLong eapolAuthSuccessTrans = new AtomicLong();
131 //Number of transitions to held due to authentication failure
132 private AtomicLong eapolAuthFailureTrans = new AtomicLong();
133 //Number of transitions to connecting due to start request
134 private AtomicLong eapolStartReqTrans = new AtomicLong();
135 //MD5 Response Challenge
136 private AtomicLong eapolMd5RspChall = new AtomicLong();
137 //Tls Response Challenge
138 private AtomicLong eapolTlsRespChall = new AtomicLong();
139 //Number of transitions to response (received response other that NAK)
140 private AtomicLong eapolTransRespNotNak = new AtomicLong();
141 //Number of EAP request packets sent due to the authenticator choosing the EAP method
142 private AtomicLong eapPktTxauthChooseEap = new AtomicLong();
143 //Attr Identity
144 private AtomicLong eapolAttrIdentity = new AtomicLong();
145 //Number of authenticating transitions due to EAP response or identity message
146 private AtomicLong eapolResIdentityMsgTrans = new AtomicLong();
Shubham Sharma3c8c7022019-09-13 10:39:47 +0000147 //Current number of EAPOL frames transmitted
148 private AtomicLong eapolFramesTx = new AtomicLong();
149 //Authenticator state when idle
150 private AtomicLong authStateIdle = new AtomicLong();
151 //Number of request ID EAP frames transmitted
152 private AtomicLong requestIdFramesTx = new AtomicLong();
153 //Current number of request EAP frames transmitted
154 private AtomicLong reqEapFramesTx = new AtomicLong();
155 //Number of EAPOL frames received with invalid packet type
156 private AtomicLong invalidPktType = new AtomicLong();
157 //Number of EAPOL frames received with invalid body length
158 private AtomicLong invalidBodyLength = new AtomicLong();
159 //number of valid EAPOL frames received
160 private AtomicLong validEapolFramesRx = new AtomicLong();
161 //Number of request pending response from supplicant
162 private AtomicLong pendingResSupp = new AtomicLong();
Shubham Sharma1f193582019-07-11 12:12:41 +0000163
164 public Long getEapolResIdentityMsgTrans() {
165 return eapolResIdentityMsgTrans.get();
166 }
167
168 public Long getEapolattrIdentity() {
169 return eapolAttrIdentity.get();
170 }
171
172 public Long getEapPktTxauthChooseEap() {
173 return eapPktTxauthChooseEap.get();
174 }
175
176 public Long getEapolTransRespNotNak() {
177 return eapolTransRespNotNak.get();
178 }
179
180 public Long getEapolMd5RspChall() {
181 return eapolMd5RspChall.get();
182 }
183
184 public Long getEapolTlsRespChall() {
185 return eapolTlsRespChall.get();
186 }
187
188 public Long getEapolLogoffRx() {
189 return eapolLogoffRx.get();
190 }
191
192 public Long getEapolAuthSuccessTrans() {
193 return eapolAuthSuccessTrans.get();
194 }
195
196 public Long getEapolAuthFailureTrans() {
197 return eapolAuthFailureTrans.get();
198 }
199
200 public Long getEapolStartReqTrans() {
201 return eapolStartReqTrans.get();
202 }
kartikey dubeye1545422019-05-22 12:53:45 +0000203
Vijaykumar Kushwahaa54ce552019-06-18 09:37:42 +0000204 private LinkedList<Long> packetRoundTripTimeList = new LinkedList<Long>();
205
Shubham Sharma3c8c7022019-09-13 10:39:47 +0000206 public Long getPendingResSupp() {
207 return pendingResSupp.get();
208 }
209
210 public Long getValidEapolFramesRx() {
211 return validEapolFramesRx.get();
212 }
213
214 public Long getInvalidBodyLength() {
215 return invalidBodyLength.get();
216 }
217
218 public Long getInvalidPktType() {
219 return invalidPktType.get();
220 }
221
222 public Long getRequestIdFramesTx() {
223 return requestIdFramesTx.get();
224 }
225
226 public Long getReqEapFramesTx() {
227 return reqEapFramesTx.get();
228 }
229
230 public Long getAuthStateIdle() {
231 return authStateIdle.get();
232 }
233
234 public Long getEapolFramesTx() {
235 return eapolFramesTx.get();
236 }
237
Vijaykumar Kushwahaa54ce552019-06-18 09:37:42 +0000238 public LinkedList<Long> getPacketRoundTripTimeList() {
239 return packetRoundTripTimeList;
240 }
241
242 public int getPacketRoundTripTimeListSize() {
243 return packetRoundTripTimeList.size();
244 }
245
246 public void clearPacketRoundTripTimeList() {
247 packetRoundTripTimeList.clear();
248 }
249
250 public void getPacketRoundTripTimeListRemoveFirst() {
251 packetRoundTripTimeList.removeFirst();
252 }
253
254 public void getPacketRoundTripTimeListAdd(long time) {
255 packetRoundTripTimeList.add(time);
256 }
257
kartikey dubeye1545422019-05-22 12:53:45 +0000258 public Long getRequestReTx() {
259 return requestReTx.get();
260 }
261
262 public void setRequestRttMilis(AtomicLong requestRttMilis) {
263 this.requestRttMilis = requestRttMilis;
264 }
265
266 public Long getUnknownServerRx() {
267 return unknownServerRx.get();
268 }
269
270 public Long getRequestRttMilis() {
271 return requestRttMilis.get();
272 }
273
274 public Long getMalformedResponsesRx() {
275 return malformedResponsesRx.get();
276 }
277
278 public Long getDroppedResponsesRx() {
279 return droppedResponsesRx.get();
280 }
281
282 public Long getInvalidValidatorsRx() {
283 return invalidValidatorsRx.get();
284 }
285
286 public Long getAcceptResponsesRx() {
287 return acceptResponsesRx.get();
288 }
289
290 public Long getRejectResponsesRx() {
291 return rejectResponsesRx.get();
292 }
293
294 public Long getChallengeResponsesRx() {
295 return challengeResponsesRx.get();
296 }
297
298 public Long getAccessRequestsTx() {
299 return accessRequestsTx.get();
300 }
301
302 public Long getPendingRequests() {
303 return pendingRequests.get();
304 }
305
306 public Long getUnknownTypeRx() {
307 return unknownTypeRx.get();
308 }
309
310 public void increaseAcceptResponsesRx() {
311 acceptResponsesRx.incrementAndGet();
312 }
313
314 public void increaseRejectResponsesRx() {
315 rejectResponsesRx.incrementAndGet();
316 }
317
318 public void increaseChallengeResponsesRx() {
319 challengeResponsesRx.incrementAndGet();
320 }
321
322 public void increaseAccessRequestsTx() {
323 accessRequestsTx.incrementAndGet();
324 }
325
326 public void increaseRequestReTx() {
327 requestReTx.incrementAndGet();
328 }
329
Shubham Sharma3c8c7022019-09-13 10:39:47 +0000330 public void incrementInvalidPktType() {
331 invalidPktType.incrementAndGet();
332 }
333
kartikey dubeye1545422019-05-22 12:53:45 +0000334 public void increaseOrDecreasePendingRequests(boolean isIncrement) {
335 if (isIncrement) {
336 pendingRequests.incrementAndGet();
337 } else {
338 pendingRequests.decrementAndGet();
339 }
340 }
341
342 public void increaseUnknownTypeRx() {
343 unknownTypeRx.incrementAndGet();
344 }
345
346 public void increaseMalformedResponsesRx() {
347 malformedResponsesRx.incrementAndGet();
348 }
349
350 public void increaseInvalidValidatorsRx() {
351 invalidValidatorsRx.incrementAndGet();
352 }
353
354 public void incrementUnknownServerRx() {
355 unknownServerRx.incrementAndGet();
356 }
357
358 public void incrementNumberOfSessionsExpired() {
359 numberOfSessionsExpired.incrementAndGet();
360 }
361
Shubham Sharma1f193582019-07-11 12:12:41 +0000362 public void incrementEapolLogoffRx() {
363 eapolLogoffRx.incrementAndGet();
364 }
365
366 public void incrementEapolAuthSuccessTrans() {
367 eapolAuthSuccessTrans.incrementAndGet();
368 }
369
370 public void incrementEapolauthFailureTrans() {
371 eapolAuthFailureTrans.incrementAndGet();
372 }
373
374 public void incrementEapolStartReqTrans() {
375 eapolStartReqTrans.incrementAndGet();
376 }
377
378 public void incrementEapolMd5RspChall() {
379 eapolMd5RspChall.incrementAndGet();
380 }
381
382 public void incrementEapolAtrrIdentity() {
383 eapolAttrIdentity.incrementAndGet();
384 }
385
386 public void incrementEapolTlsRespChall() {
387 eapolTlsRespChall.incrementAndGet();
388 }
389
Shubham Sharma3c8c7022019-09-13 10:39:47 +0000390 public void incrementEapolFramesTx() {
391 eapolFramesTx.incrementAndGet();
392 }
393
394 public void incrementAuthStateIdle() {
395 authStateIdle.incrementAndGet();
396 }
397
398 public void incrementRequestIdFramesTx() {
399 requestIdFramesTx.incrementAndGet();
400 }
401
402 public void incrementInvalidBodyLength() {
403 invalidBodyLength.incrementAndGet();
404 }
405
406 public void incrementValidEapolFramesRx() {
407 validEapolFramesRx.incrementAndGet();
408 }
409
410 public void incrementPendingResSupp() {
411 pendingResSupp.incrementAndGet();
412 }
413
414 public void decrementPendingResSupp() {
415 pendingResSupp.decrementAndGet();
416 }
417
kartikey dubeye1545422019-05-22 12:53:45 +0000418 public void countDroppedResponsesRx() {
419 long numberOfDroppedPackets = invalidValidatorsRx.get();
420 numberOfDroppedPackets += unknownTypeRx.get();
421 numberOfDroppedPackets += malformedResponsesRx.get();
422 numberOfDroppedPackets += numberOfSessionsExpired.get();
423 this.droppedResponsesRx = new AtomicLong(numberOfDroppedPackets);
424 }
Vijaykumar Kushwahaa54ce552019-06-18 09:37:42 +0000425
Shubham Sharma3c8c7022019-09-13 10:39:47 +0000426 public void countReqEapFramesTx() {
427 long noReqEapFramesTx = requestIdFramesTx.get();
428 noReqEapFramesTx += challengeResponsesRx.get();
429 this.reqEapFramesTx = new AtomicLong(noReqEapFramesTx);
430 }
431
Vijaykumar Kushwahaa54ce552019-06-18 09:37:42 +0000432 public void resetAllCounters() {
433 clearPacketRoundTripTimeList();
434
435 accessRequestsTx.set(0);
436 acceptResponsesRx.set(0);
437 challengeResponsesRx.set(0);
438 droppedResponsesRx.set(0);
439 invalidValidatorsRx.set(0);
440 malformedResponsesRx.set(0);
441 pendingRequests.set(0);
442 rejectResponsesRx.set(0);
443 requestReTx.set(0);
444 requestRttMilis.set(0);
445 unknownServerRx.set(0);
446 unknownTypeRx.set(0);
Shubham Sharmac7fbd9f2019-11-25 10:04:30 +0000447 eapolLogoffRx.set(0);
448 eapolAuthSuccessTrans.set(0);
449 eapolAuthFailureTrans.set(0);
450 eapolStartReqTrans.set(0);
451 eapolTransRespNotNak.set(0);
452 eapPktTxauthChooseEap.set(0);
453 eapolResIdentityMsgTrans.set(0);
Shubham Sharma3c8c7022019-09-13 10:39:47 +0000454 eapolFramesTx.set(0);
455 authStateIdle.set(0);
456 requestIdFramesTx.set(0);
457 reqEapFramesTx.set(0);
458 invalidPktType.set(0);
459 invalidBodyLength.set(0);
460 validEapolFramesRx.set(0);
461 pendingResSupp.set(0);
Shubham Sharma3d54e632019-11-29 07:20:48 +0000462 timedOutPackets.set(0);
Jonathan Hartc41227c2020-01-28 16:56:49 -0800463 eapolMd5RspChall.set(0);
464 eapolTlsRespChall.set(0);
465 eapolAttrIdentity.set(0);
Vijaykumar Kushwahaa54ce552019-06-18 09:37:42 +0000466 }
Jonathan Hartc41227c2020-01-28 16:56:49 -0800467
Shubham Sharma1f193582019-07-11 12:12:41 +0000468 public void countTransRespNotNak() {
469 long eapolTransactionNotNak = eapolMd5RspChall.get();
470 eapolTransactionNotNak += eapolTlsRespChall.get();
471 this.eapolTransRespNotNak = new AtomicLong(eapolTransactionNotNak);
472 }
473
474 public void countEapolResIdentityMsgTrans() {
475 long authTransaction = eapolMd5RspChall.get();
476 authTransaction += eapolTlsRespChall.get();
477 authTransaction += eapolAttrIdentity.get();
478 this.eapolResIdentityMsgTrans = new AtomicLong(authTransaction);
479 }
480
481 public void incrementEapPktTxauthEap() {
482 eapPktTxauthChooseEap.incrementAndGet();
483 }
Shubham Sharma1e43c562019-06-19 14:18:12 +0000484
485 public long getTimedOutPackets() {
486 return timedOutPackets.get();
487 }
488
489 public void increaseTimedOutPackets() {
490 timedOutPackets.incrementAndGet();
491 }
492
Jonathan Hartc41227c2020-01-28 16:56:49 -0800493 /**
494 * Creates a snapshot of the current values of the counters.
495 *
496 * @return statistics snapshot
497 */
498 public AaaStatisticsSnapshot snapshot() {
499 ImmutableMap.Builder<String, Long> builder = ImmutableMap.builder();
500 builder.put(ACCEPT_RESPONSES_RX, acceptResponsesRx.get())
501 .put(REJECT_RESPONSES_RX, rejectResponsesRx.get())
502 .put(CHALLENGE_RESPONSES_RX, challengeResponsesRx.get())
503 .put(ACCESS_REQUESTS_TX, accessRequestsTx.get())
504 .put(PENDING_REQUESTS, pendingRequests.get())
505 .put(TIMED_OUT_PACKETS, timedOutPackets.get())
506 .put(UNKNOWN_TYPE_RX, unknownTypeRx.get())
507 .put(INVALID_VALIDATORS_RX, invalidValidatorsRx.get())
508 .put(DROPPED_RESPONSES_RX, droppedResponsesRx.get())
509 .put(MALFORMED_RESPONSES_RX, malformedResponsesRx.get())
510 .put(UNKNOWN_SERVER_RX, unknownServerRx.get())
511 .put(REQUEST_RTT_MILLIS, requestRttMilis.get())
512 .put(REQUEST_RE_TX, requestReTx.get())
513 .put(NUM_SESSIONS_EXPIRED, numberOfSessionsExpired.get())
514 .put(EAPOL_LOGOFF_RX, eapolLogoffRx.get())
515 .put(EAPOL_AUTH_SUCCESS_TRANS, eapolAuthSuccessTrans.get())
516 .put(EAPOL_AUTH_FAILURE_TRANS, eapolAuthFailureTrans.get())
517 .put(EAPOL_START_REQ_TRANS, eapolStartReqTrans.get())
518 .put(EAPOL_MD5_RESP_CHALLENGE, eapolMd5RspChall.get())
519 .put(EAPOL_TLS_RESP_CHALLENGE, eapolTlsRespChall.get())
520 .put(EAPOL_TRANS_RESP_NOT_NAK, eapolTransRespNotNak.get())
521 .put(EAP_PKT_TX_AUTH_CHOOSE_EAP, eapPktTxauthChooseEap.get())
522 .put(RES_ID_EAP_FRAMES_RX, eapolAttrIdentity.get())
523 .put(EAPOL_RES_IDENTITY_MSG_TRANS, eapolResIdentityMsgTrans.get())
524 .put(EAPOL_FRAMES_TX, eapolFramesTx.get())
525 .put(AUTH_STATE_IDLE, authStateIdle.get())
526 .put(REQUEST_ID_FRAMES_TX, requestIdFramesTx.get())
527 .put(REQUEST_EAP_FRAMES_TX, reqEapFramesTx.get())
528 .put(INVALID_PKT_TYPE, invalidPktType.get())
529 .put(INVALID_BODY_LENGTH, invalidBodyLength.get())
530 .put(VALID_EAPOL_FRAMES_RX, validEapolFramesRx.get())
531 .put(PENDING_RES_SUPPLICANT, pendingResSupp.get());
532
533 return new AaaStatisticsSnapshot(builder.build());
534 }
535
536 public static AaaStatistics fromSnapshot(AaaStatisticsSnapshot snapshot) {
537 AaaStatistics stats = new AaaStatistics();
538
539 stats.acceptResponsesRx.set(snapshot.get(ACCEPT_RESPONSES_RX));
540 stats.rejectResponsesRx.set(snapshot.get(REJECT_RESPONSES_RX));
541 stats.challengeResponsesRx.set(snapshot.get(CHALLENGE_RESPONSES_RX));
542 stats.accessRequestsTx.set(snapshot.get(ACCESS_REQUESTS_TX));
543 stats.pendingRequests.set(snapshot.get(PENDING_REQUESTS));
544 stats.timedOutPackets.set(snapshot.get(TIMED_OUT_PACKETS));
545 stats.unknownTypeRx.set(snapshot.get(UNKNOWN_TYPE_RX));
546 stats.invalidValidatorsRx.set(snapshot.get(INVALID_VALIDATORS_RX));
547 stats.droppedResponsesRx.set(snapshot.get(DROPPED_RESPONSES_RX));
548 stats.malformedResponsesRx.set(snapshot.get(MALFORMED_RESPONSES_RX));
549 stats.unknownServerRx.set(snapshot.get(UNKNOWN_SERVER_RX));
550 stats.requestRttMilis.set(snapshot.get(REQUEST_RTT_MILLIS));
551 stats.requestReTx.set(snapshot.get(REQUEST_RE_TX));
552 stats.numberOfSessionsExpired.set(snapshot.get(NUM_SESSIONS_EXPIRED));
553 stats.eapolLogoffRx.set(snapshot.get(EAPOL_LOGOFF_RX));
554 stats.eapolAuthSuccessTrans.set(snapshot.get(EAPOL_AUTH_SUCCESS_TRANS));
555 stats.eapolAuthFailureTrans.set(snapshot.get(EAPOL_AUTH_FAILURE_TRANS));
556 stats.eapolStartReqTrans.set(snapshot.get(EAPOL_START_REQ_TRANS));
557 stats.eapolMd5RspChall.set(snapshot.get(EAPOL_MD5_RESP_CHALLENGE));
558 stats.eapolTlsRespChall.set(snapshot.get(EAPOL_TLS_RESP_CHALLENGE));
559 stats.eapolTransRespNotNak.set(snapshot.get(EAPOL_TRANS_RESP_NOT_NAK));
560 stats.eapPktTxauthChooseEap.set(snapshot.get(EAP_PKT_TX_AUTH_CHOOSE_EAP));
561 stats.eapolAttrIdentity.set(snapshot.get(RES_ID_EAP_FRAMES_RX));
562 stats.eapolResIdentityMsgTrans.set(snapshot.get(EAPOL_RES_IDENTITY_MSG_TRANS));
563 stats.eapolFramesTx.set(snapshot.get(EAPOL_FRAMES_TX));
564 stats.authStateIdle.set(snapshot.get(AUTH_STATE_IDLE));
565 stats.requestIdFramesTx.set(snapshot.get(REQUEST_ID_FRAMES_TX));
566 stats.reqEapFramesTx.set(snapshot.get(REQUEST_EAP_FRAMES_TX));
567 stats.invalidPktType.set(snapshot.get(INVALID_PKT_TYPE));
568 stats.invalidBodyLength.set(snapshot.get(INVALID_BODY_LENGTH));
569 stats.validEapolFramesRx.set(snapshot.get(VALID_EAPOL_FRAMES_RX));
570 stats.pendingResSupp.set(snapshot.get(PENDING_RES_SUPPLICANT));
571
572 return stats;
573 }
574
575 public String toString() {
576 MoreObjects.ToStringHelper helper = MoreObjects.toStringHelper(this.getClass());
577 helper.add(ACCEPT_RESPONSES_RX, acceptResponsesRx.get())
578 .add(REJECT_RESPONSES_RX, rejectResponsesRx.get())
579 .add(CHALLENGE_RESPONSES_RX, challengeResponsesRx.get())
580 .add(ACCESS_REQUESTS_TX, accessRequestsTx.get())
581 .add(PENDING_REQUESTS, pendingRequests.get())
582 .add(TIMED_OUT_PACKETS, timedOutPackets.get())
583 .add(UNKNOWN_TYPE_RX, unknownTypeRx.get())
584 .add(INVALID_VALIDATORS_RX, invalidValidatorsRx.get())
585 .add(DROPPED_RESPONSES_RX, droppedResponsesRx.get())
586 .add(MALFORMED_RESPONSES_RX, malformedResponsesRx.get())
587 .add(UNKNOWN_SERVER_RX, unknownServerRx.get())
588 .add(REQUEST_RTT_MILLIS, requestRttMilis.get())
589 .add(REQUEST_RE_TX, requestReTx.get())
590 .add(NUM_SESSIONS_EXPIRED, numberOfSessionsExpired.get())
591 .add(EAPOL_LOGOFF_RX, eapolLogoffRx.get())
592 .add(EAPOL_AUTH_SUCCESS_TRANS, eapolAuthSuccessTrans.get())
593 .add(EAPOL_AUTH_FAILURE_TRANS, eapolAuthFailureTrans.get())
594 .add(EAPOL_START_REQ_TRANS, eapolStartReqTrans.get())
595 .add(EAPOL_MD5_RESP_CHALLENGE, eapolMd5RspChall.get())
596 .add(EAPOL_TLS_RESP_CHALLENGE, eapolTlsRespChall.get())
597 .add(EAPOL_TRANS_RESP_NOT_NAK, eapolTransRespNotNak.get())
598 .add(EAP_PKT_TX_AUTH_CHOOSE_EAP, eapPktTxauthChooseEap.get())
599 .add(RES_ID_EAP_FRAMES_RX, eapolAttrIdentity.get())
600 .add(EAPOL_RES_IDENTITY_MSG_TRANS, eapolResIdentityMsgTrans.get())
601 .add(EAPOL_FRAMES_TX, eapolFramesTx.get())
602 .add(AUTH_STATE_IDLE, authStateIdle.get())
603 .add(REQUEST_ID_FRAMES_TX, requestIdFramesTx.get())
604 .add(REQUEST_EAP_FRAMES_TX, reqEapFramesTx.get())
605 .add(INVALID_PKT_TYPE, invalidPktType.get())
606 .add(INVALID_BODY_LENGTH, invalidBodyLength.get())
607 .add(VALID_EAPOL_FRAMES_RX, validEapolFramesRx.get())
608 .add(PENDING_RES_SUPPLICANT, pendingResSupp.get());
609 return helper.toString();
610 }
611
kartikey dubeye1545422019-05-22 12:53:45 +0000612}