blob: e623a16b661ba98160729bb8b2d7841b7a17d91f [file] [log] [blame]
Shubham Sharma1ad16632019-11-26 11:09:21 +00001/*
2 * Copyright 2015-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 */
16package org.opencord.aaa.impl;
17
18import com.google.common.base.Charsets;
19import org.junit.After;
20import org.junit.Before;
21import org.junit.Test;
22import org.onlab.junit.TestUtils;
23import org.onlab.packet.BasePacket;
24import org.onlab.packet.DeserializationException;
25import org.onlab.packet.EAP;
26import org.onlab.packet.Ethernet;
27import org.onlab.packet.IpAddress;
28import org.onlab.packet.RADIUS;
29import org.onlab.packet.RADIUSAttribute;
30import org.onosproject.core.ApplicationId;
31import org.onosproject.core.CoreServiceAdapter;
32import org.onosproject.event.DefaultEventSinkRegistry;
33import org.onosproject.event.Event;
34import org.onosproject.event.EventDeliveryService;
35import org.onosproject.event.EventSink;
Sonal Kasliwal6f2246d2020-01-30 08:42:42 +000036import org.onosproject.net.AnnotationKeys;
37import org.onosproject.net.Annotations;
38import org.onosproject.net.DefaultAnnotations;
39import org.onosproject.net.DefaultDevice;
40import org.onosproject.net.DefaultPort;
41import org.onosproject.net.Device;
Sonal Kasliwal6f2246d2020-01-30 08:42:42 +000042import org.onosproject.net.Port;
43import org.onosproject.net.SparseAnnotations;
44import org.onosproject.net.Port.Type;
Shubham Sharma1ad16632019-11-26 11:09:21 +000045import org.onosproject.net.config.Config;
46import org.onosproject.net.config.NetworkConfigRegistryAdapter;
Sonal Kasliwal6f2246d2020-01-30 08:42:42 +000047import org.onosproject.net.device.DeviceEvent;
Shubham Sharma1ad16632019-11-26 11:09:21 +000048import org.onosproject.net.packet.DefaultInboundPacket;
49import org.onosproject.net.packet.InboundPacket;
50import org.onosproject.net.packet.PacketContext;
51import org.onosproject.net.packet.PacketService;
52import org.opencord.aaa.AaaConfig;
Sonal Kasliwal6f2246d2020-01-30 08:42:42 +000053import org.opencord.aaa.AaaSupplicantMachineStats;
Shubham Sharma1ad16632019-11-26 11:09:21 +000054import org.slf4j.Logger;
55
56import java.lang.reflect.Field;
57import java.net.InetAddress;
58import java.net.UnknownHostException;
59import java.nio.ByteBuffer;
60
61import static com.google.common.base.Preconditions.checkState;
62import static org.hamcrest.Matchers.is;
63import static org.hamcrest.Matchers.notNullValue;
Sonal Kasliwal6f2246d2020-01-30 08:42:42 +000064import static org.junit.Assert.assertEquals;
Shubham Sharmac7aa6202019-12-12 10:19:10 +000065import static org.junit.Assert.assertNotEquals;
Sonal Kasliwal7eef29f2020-02-12 12:23:22 +000066import static org.junit.Assert.assertNull;
Shubham Sharma1ad16632019-11-26 11:09:21 +000067import static org.junit.Assert.assertThat;
68import static org.onosproject.net.NetTestTools.connectPoint;
69import static org.slf4j.LoggerFactory.getLogger;
70
71/**
72 * Set of tests of the ONOS application component for AAA Statistics.
73 */
74public class AaaStatisticsTest extends AaaTestBase {
75
76 static final String BAD_IP_ADDRESS = "198.51.100.0";
Shubham Sharmac7aa6202019-12-12 10:19:10 +000077 static final Long ZERO = (long) 0;
Shubham Sharma1ad16632019-11-26 11:09:21 +000078
79 private final Logger log = getLogger(getClass());
80 private AaaManager aaaManager;
81 private AaaStatisticsManager aaaStatisticsManager;
Kartikey Dubeybe14f472019-10-01 12:18:35 +000082 private AaaSupplicantMachineStatsManager aaaSupplicantStatsManager;
Shubham Sharma1ad16632019-11-26 11:09:21 +000083
84 class AaaManagerWithoutRadiusServer extends AaaManager {
85 protected void sendRadiusPacket(RADIUS radiusPacket, InboundPacket inPkt) {
86 super.sendRadiusPacket(radiusPacket, inPkt);
87 aaaManager.aaaStatisticsManager.putOutgoingIdentifierToMap(radiusPacket.getIdentifier());
88 savePacket(radiusPacket);
89 }
90
91 // changed the configuration of parent method to protected
92 protected void configureRadiusCommunication() {
93 PacketService pktService = new MockPacketService();
94 ApplicationId appId = new CoreServiceAdapter().registerApplication("org.opencord.aaa");
95 aaaManager.impl = new TestSocketBasedRadiusCommunicator(appId, pktService, aaaManager);
96 }
97 }
98
99 /**
100 * Mocks the AAAConfig class to force usage of an unroutable address for the
101 * RADIUS server.
102 */
103 static class MockAaaConfig extends AaaConfig {
104 @Override
105 public InetAddress radiusIp() {
106 try {
107 return InetAddress.getByName(BAD_IP_ADDRESS);
108 } catch (UnknownHostException ex) {
109 throw new IllegalStateException(ex);
110 }
111 }
112 }
113
114 /**
115 * Mocks the network config registry.
116 */
117 @SuppressWarnings("unchecked")
118 private static final class TestNetworkConfigRegistry extends NetworkConfigRegistryAdapter {
119 @Override
120 public <S, C extends Config<S>> C getConfig(S subject, Class<C> configClass) {
121 AaaConfig aaaConfig = new MockAaaConfig();
122 return (C) aaaConfig;
123 }
124 }
125
126 public static class TestEventDispatcher extends DefaultEventSinkRegistry implements EventDeliveryService {
127
128 @Override
129 @SuppressWarnings("unchecked")
130 public synchronized void post(Event event) {
131 EventSink sink = getSink(event.getClass());
132 checkState(sink != null, "No sink for event %s", event);
133 sink.process(event);
134 }
135
136 @Override
137 public void setDispatchTimeLimit(long millis) {
138 }
139
140 @Override
141 public long getDispatchTimeLimit() {
142 return 0;
143 }
144 }
145
146 /**
147 * Constructs an Ethernet packet containing a RADIUS challenge packet.
148 *
149 * @param challengeCode
150 * code to use in challenge packet
151 * @param challengeType
152 * type to use in challenge packet
153 * @return Ethernet packet
154 */
155 private RADIUS constructRadiusCodeAccessChallengePacket(byte challengeCode, byte challengeType) {
156
Shubham Sharma048cc262019-06-19 14:18:50 +0000157 String challenge = "12345678901234567";
Shubham Sharma1ad16632019-11-26 11:09:21 +0000158
Shubham Sharma048cc262019-06-19 14:18:50 +0000159 EAP eap = new EAP(challengeType, (byte) 4, challengeType,
160 challenge.getBytes(Charsets.US_ASCII));
161 eap.setIdentifier((byte) 4);
Shubham Sharma1ad16632019-11-26 11:09:21 +0000162
Shubham Sharma048cc262019-06-19 14:18:50 +0000163 RADIUS radius = new RADIUS();
164 radius.setCode(challengeCode);
165 radius.setIdentifier((byte) 4);
166 radius.setAttribute(RADIUSAttribute.RADIUS_ATTR_STATE,
167 challenge.getBytes(Charsets.US_ASCII));
Shubham Sharma1ad16632019-11-26 11:09:21 +0000168
Shubham Sharma048cc262019-06-19 14:18:50 +0000169 radius.setPayload(eap);
170 radius.setAttribute(RADIUSAttribute.RADIUS_ATTR_EAP_MESSAGE,
171 eap.serialize());
172 radius.setAttribute(RADIUSAttribute.RADIUS_ATTR_MESSAGE_AUTH,
173 aaaManager.radiusSecret.getBytes());
174 return radius;
Shubham Sharma1ad16632019-11-26 11:09:21 +0000175 }
176
177 public static void injectEventDispatcher(Object manager, EventDeliveryService svc) {
178 Class mc = manager.getClass();
179 for (Field f : mc.getSuperclass().getDeclaredFields()) {
180 if (f.getType().equals(EventDeliveryService.class)) {
181 try {
182 TestUtils.setField(manager, f.getName(), svc);
183 } catch (TestUtils.TestUtilsException e) {
184 throw new IllegalArgumentException("Unable to inject reference", e);
185 }
186 break;
187 }
188 }
189 }
190
191/**
192 * Set up the services required by the AAA application.
193 */
194 @Before
195 public void setUp() {
196 aaaManager = new AaaManagerWithoutRadiusServer();
Shubham Sharma048cc262019-06-19 14:18:50 +0000197 aaaManager.radiusOperationalStatusService = new RadiusOperationalStatusManager();
Shubham Sharma1ad16632019-11-26 11:09:21 +0000198 aaaManager.netCfgService = new TestNetworkConfigRegistry();
199 aaaManager.coreService = new CoreServiceAdapter();
200 aaaManager.packetService = new MockPacketService();
201 aaaManager.deviceService = new TestDeviceService();
202 aaaManager.sadisService = new MockSadisService();
203 aaaManager.cfgService = new MockCfgService();
204 aaaStatisticsManager = new AaaStatisticsManager();
Kartikey Dubeybe14f472019-10-01 12:18:35 +0000205 aaaSupplicantStatsManager = new AaaSupplicantMachineStatsManager();
Shubham Sharma1ad16632019-11-26 11:09:21 +0000206 TestUtils.setField(aaaStatisticsManager, "eventDispatcher", new TestEventDispatcher());
207 aaaStatisticsManager.activate();
Kartikey Dubeybe14f472019-10-01 12:18:35 +0000208 TestUtils.setField(aaaSupplicantStatsManager, "eventDispatcher", new TestEventDispatcher());
209 aaaSupplicantStatsManager.activate();
Shubham Sharma1ad16632019-11-26 11:09:21 +0000210 aaaManager.aaaStatisticsManager = this.aaaStatisticsManager;
Kartikey Dubeybe14f472019-10-01 12:18:35 +0000211 aaaManager.aaaSupplicantStatsManager = this.aaaSupplicantStatsManager;
Shubham Sharma1ad16632019-11-26 11:09:21 +0000212 TestUtils.setField(aaaManager, "eventDispatcher", new TestEventDispatcher());
213 aaaManager.activate(new AaaTestBase.MockComponentContext());
214 }
215
216/**
217 * Tear down the AAA application.
218 */
219@After
220public void tearDown() {
221 aaaManager.deactivate(new AaaTestBase.MockComponentContext());
222}
223
224/**
225 * Extracts the RADIUS packet from a packet sent by the supplicant.
226 *
227 * @param radius
228 * RADIUS packet sent by the supplicant
229 * @throws DeserializationException
230 * if deserialization of the packet contents fails.
231 */
232private void checkRadiusPacketFromSupplicant(RADIUS radius) throws DeserializationException {
233 assertThat(radius, notNullValue());
234 EAP eap = radius.decapsulateMessage();
235 assertThat(eap, notNullValue());
236}
237
238/**
239 * Fetches the sent packet at the given index. The requested packet must be the
240 * last packet on the list.
241 *
242 * @param index
243 * index into sent packets array
244 * @return packet
245 */
246private BasePacket fetchPacket(int index) {
247 BasePacket packet = savedPackets.get(index);
248 assertThat(packet, notNullValue());
249 return packet;
250}
251
252 /** Tests the authentication path through the AAA application.
253 * And counts the aaa Stats for successful transmission.
254 * @throws DeserializationException
255 * if packed deserialization fails.
256 */
257 @Test
258 public void testAaaStatisticsForAcceptedPackets() throws Exception {
259
260 // (1) Supplicant start up
261 Ethernet startPacket = constructSupplicantStartPacket();
262 sendPacket(startPacket);
263
264 Ethernet responsePacket = (Ethernet) fetchPacket(0);
265 checkRadiusPacket(aaaManager, responsePacket, EAP.ATTR_IDENTITY);
266
267 // (2) Supplicant identify
268
269 Ethernet identifyPacket = constructSupplicantIdentifyPacket(null, EAP.ATTR_IDENTITY, (byte) 1, null);
270 sendPacket(identifyPacket);
271
272 RADIUS radiusIdentifyPacket = (RADIUS) fetchPacket(1);
273 checkRadiusPacketFromSupplicant(radiusIdentifyPacket);
274
275 assertThat(radiusIdentifyPacket.getCode(), is(RADIUS.RADIUS_CODE_ACCESS_REQUEST));
276 assertThat(new String(radiusIdentifyPacket.getAttribute(RADIUSAttribute.RADIUS_ATTR_USERNAME).getValue()),
277 is("testuser"));
278 IpAddress nasIp = IpAddress.valueOf(IpAddress.Version.INET,
279 radiusIdentifyPacket.getAttribute(RADIUSAttribute.RADIUS_ATTR_NAS_IP).getValue());
280 assertThat(nasIp.toString(), is(aaaManager.nasIpAddress.getHostAddress()));
281
282 // State machine should have been created by now
283
284 StateMachine stateMachine = StateMachine.lookupStateMachineBySessionId(SESSION_ID);
285 assertThat(stateMachine, notNullValue());
286 assertThat(stateMachine.state(), is(StateMachine.STATE_PENDING));
287
288 // (3) RADIUS MD5 challenge
289
290 RADIUS radiusCodeAccessChallengePacket = constructRadiusCodeAccessChallengePacket(
291 RADIUS.RADIUS_CODE_ACCESS_CHALLENGE, EAP.ATTR_MD5);
292 aaaManager.handleRadiusPacket(radiusCodeAccessChallengePacket);
293
294 Ethernet radiusChallengeMD5Packet = (Ethernet) fetchPacket(2);
295 checkRadiusPacket(aaaManager, radiusChallengeMD5Packet, EAP.ATTR_MD5);
296
297 // (4) Supplicant MD5 response
298
299 Ethernet md5RadiusPacket = constructSupplicantIdentifyPacket(stateMachine, EAP.ATTR_MD5,
300 stateMachine.challengeIdentifier(), radiusChallengeMD5Packet);
301 sendPacket(md5RadiusPacket);
302
303 RADIUS responseMd5RadiusPacket = (RADIUS) fetchPacket(3);
304
305 checkRadiusPacketFromSupplicant(responseMd5RadiusPacket);
Shubham Sharma048cc262019-06-19 14:18:50 +0000306 assertThat(responseMd5RadiusPacket.getIdentifier(), is((byte) 9));
Shubham Sharma1ad16632019-11-26 11:09:21 +0000307 assertThat(responseMd5RadiusPacket.getCode(), is(RADIUS.RADIUS_CODE_ACCESS_REQUEST));
308
309 // State machine should be in pending state
310
311 assertThat(stateMachine, notNullValue());
312 assertThat(stateMachine.state(), is(StateMachine.STATE_PENDING));
313
314 // (5) RADIUS Success
315
316 RADIUS successPacket =
317 constructRadiusCodeAccessChallengePacket(RADIUS.RADIUS_CODE_ACCESS_ACCEPT, EAP.SUCCESS);
318 aaaManager.handleRadiusPacket((successPacket));
319 Ethernet supplicantSuccessPacket = (Ethernet) fetchPacket(4);
320
321 checkRadiusPacket(aaaManager, supplicantSuccessPacket, EAP.SUCCESS);
322
323 // State machine should be in authorized state
324
325 assertThat(stateMachine, notNullValue());
326 assertThat(stateMachine.state(), is(StateMachine.STATE_AUTHORIZED));
327
Shubham Sharmac7aa6202019-12-12 10:19:10 +0000328 //Check for increase of Stats
329 assertNotEquals(aaaStatisticsManager.getAaaStats().getEapolResIdentityMsgTrans(), ZERO);
330 assertNotEquals(aaaStatisticsManager.getAaaStats().getEapolAuthSuccessTrans(), ZERO);
331 assertNotEquals(aaaStatisticsManager.getAaaStats().getEapolStartReqTrans(), ZERO);
332 assertNotEquals(aaaStatisticsManager.getAaaStats().getEapolTransRespNotNak(), ZERO);
333 assertNotEquals(aaaStatisticsManager.getAaaStats().getEapPktTxauthChooseEap(), ZERO);
Shubham Sharma001ae112020-01-28 10:04:01 +0000334 assertNotEquals(aaaStatisticsManager.getAaaStats().getValidEapolFramesRx(), ZERO);
335 assertNotEquals(aaaStatisticsManager.getAaaStats().getEapolFramesTx(), ZERO);
336 assertNotEquals(aaaStatisticsManager.getAaaStats().getReqEapFramesTx(), ZERO);
337 assertNotEquals(aaaStatisticsManager.getAaaStats().getRequestIdFramesTx(), ZERO);
338 assertEquals(aaaStatisticsManager.getAaaStats().getInvalidBodyLength(), ZERO);
339 assertEquals(aaaStatisticsManager.getAaaStats().getInvalidPktType(), ZERO);
340 assertEquals(aaaStatisticsManager.getAaaStats().getPendingResSupp(), ZERO);
341 // Counts the aaa Statistics count and displays in the log
342 countAaaStatistics();
Shubham Sharmac7aa6202019-12-12 10:19:10 +0000343
Shubham Sharma1ad16632019-11-26 11:09:21 +0000344 }
345
Shubham Sharma001ae112020-01-28 10:04:01 +0000346 /** Tests invalid packets reaching AAA.
347 * And counts the aaa Stats for successful transmission.
348 * @throws DeserializationException
349 * if packed deserialization fails.
350 */
351 @Test
352 public void testStatisticsForInvalidPackets() throws Exception {
353
354 //Test Authenticator State Machine Status. Should be Pending
355 // (1) Supplicant start up
356 Ethernet startPacket = constructSupplicantStartPacket();
357 sendPacket(startPacket);
358
359 Ethernet responsePacket = (Ethernet) fetchPacket(0);
360 checkRadiusPacket(aaaManager, responsePacket, EAP.ATTR_IDENTITY);
361
362 // (2) Supplicant identify
363
364 Ethernet identifyPacket = constructSupplicantIdentifyPacket(null, EAP.ATTR_IDENTITY, (byte) 1, null);
365 sendPacket(identifyPacket);
366
367 RADIUS radiusIdentifyPacket = (RADIUS) fetchPacket(1);
368 checkRadiusPacketFromSupplicant(radiusIdentifyPacket);
369
370 assertThat(radiusIdentifyPacket.getCode(), is(RADIUS.RADIUS_CODE_ACCESS_REQUEST));
371 assertThat(new String(radiusIdentifyPacket.getAttribute(RADIUSAttribute.RADIUS_ATTR_USERNAME).getValue()),
372 is("testuser"));
373 IpAddress nasIp = IpAddress.valueOf(IpAddress.Version.INET,
374 radiusIdentifyPacket.getAttribute(RADIUSAttribute.RADIUS_ATTR_NAS_IP).getValue());
375 assertThat(nasIp.toString(), is(aaaManager.nasIpAddress.getHostAddress()));
376
377 // State machine should have been created by now
378
379 StateMachine stateMachine = StateMachine.lookupStateMachineBySessionId(SESSION_ID);
380 assertThat(stateMachine, notNullValue());
381 assertThat(stateMachine.state(), is(StateMachine.STATE_PENDING));
382
383 // (3) RADIUS NAK challenge
384
385 RADIUS radiusCodeAccessChallengePacket = constructRadiusCodeAccessChallengePacket(
386 RADIUS.RADIUS_CODE_ACCESS_CHALLENGE, EAP.ATTR_NAK);
387 aaaManager.handleRadiusPacket(radiusCodeAccessChallengePacket);
388
389 Ethernet radiusChallengeNakPacket = (Ethernet) fetchPacket(2);
390 checkRadiusPacket(aaaManager, radiusChallengeNakPacket, EAP.ATTR_NAK);
391
392 // (4) Supplicant NAK response
393
394 Ethernet nakRadiusPacket = constructSupplicantIdentifyPacket(stateMachine, EAP.ATTR_NAK,
395 stateMachine.challengeIdentifier(), radiusChallengeNakPacket);
396 sendPacket(nakRadiusPacket);
397
398 //Statistic Should be increased.
399 assertNotEquals(aaaStatisticsManager.getAaaStats().getPendingResSupp(), ZERO);
400
401 //Test if packet with invalid eapol type recieved.
402 // Supplicant ASF Packet
403 Ethernet invalidPacket = constructSupplicantAsfPacket();
404 sendPacket(invalidPacket);
405
406 //Statistic Should be increased.
407 assertNotEquals(aaaStatisticsManager.getAaaStats().getInvalidPktType(), ZERO);
408 assertNotEquals(aaaStatisticsManager.getAaaStats().getAccessRequestsTx(), ZERO);
409 assertNotEquals(aaaStatisticsManager.getAaaStats().getChallengeResponsesRx(), ZERO);
410 assertNotEquals(aaaStatisticsManager.getAaaStats().getDroppedResponsesRx(), ZERO);
411 assertNotEquals(aaaStatisticsManager.getAaaStats().getInvalidValidatorsRx(), ZERO);
412 assertNotEquals(aaaStatisticsManager.getAaaStats().getPendingRequests(), ZERO);
413
414 // Counts the aaa Statistics count and displays in the log
415 countAaaStatistics();
416 }
417
418
Shubham Sharma1ad16632019-11-26 11:09:21 +0000419 /** Tests the count for defected packets.
420 *
421 * @throws DeserializationException
422 * if packed deserialization fails.
423 */
424 @Test
425 public void testAaaStatisticsForDefectivePackets() throws Exception {
426 // (1) Supplicant start up
427 Ethernet startPacket = constructSupplicantStartPacket();
428 sendPacket(startPacket);
429
430 // (2) Supplicant identify
431
432 Ethernet identifyPacket = constructSupplicantIdentifyPacket(null, EAP.ATTR_IDENTITY, (byte) 1, null);
433 sendPacket(identifyPacket);
434
435 RADIUS radiusIdentifyPacket = (RADIUS) fetchPacket(1);
436
437 checkRadiusPacketFromSupplicant(radiusIdentifyPacket);
438
439 // Calling the mock test socket based to handle packet
440 aaaManager.impl.handlePacketFromServer(null);
441 // State machine should have been created by now
442
443 StateMachine stateMachine = StateMachine.lookupStateMachineBySessionId(SESSION_ID);
444
445 // (3) RADIUS MD5 challenge
446
447 RADIUS radiusCodeAccessChallengePacket = constructRadiusCodeAccessChallengePacket(
448 RADIUS.RADIUS_CODE_ACCESS_CHALLENGE, EAP.ATTR_MD5);
449 aaaManager.handleRadiusPacket(radiusCodeAccessChallengePacket);
450
451 Ethernet radiusChallengeMD5Packet = (Ethernet) fetchPacket(2);
452
453 // (4) Supplicant MD5 response
454
455 Ethernet md5RadiusPacket = constructSupplicantIdentifyPacket(stateMachine, EAP.ATTR_MD5,
456 stateMachine.challengeIdentifier(), radiusChallengeMD5Packet);
457 sendPacket(md5RadiusPacket);
458 aaaManager.aaaStatisticsManager.calculatePacketRoundtripTime();
459 // (5) RADIUS Rejected
460
461 RADIUS rejectedPacket =
462 constructRadiusCodeAccessChallengePacket(RADIUS.RADIUS_CODE_ACCESS_REJECT, EAP.FAILURE);
463 aaaManager.handleRadiusPacket((rejectedPacket));
464 Ethernet supplicantRejectedPacket = (Ethernet) fetchPacket(4);
465
466 checkRadiusPacket(aaaManager, supplicantRejectedPacket, EAP.FAILURE);
467
468 // State machine should be in unauthorized state
469 assertThat(stateMachine, notNullValue());
470 assertThat(stateMachine.state(), is(StateMachine.STATE_UNAUTHORIZED));
471 // Calculated the total round trip time
472 aaaManager.aaaStatisticsManager.calculatePacketRoundtripTime();
Shubham Sharmac7aa6202019-12-12 10:19:10 +0000473
474 //Check for increase of Stats
475 assertNotEquals(aaaStatisticsManager.getAaaStats().getEapolResIdentityMsgTrans(), ZERO);
476 assertNotEquals(aaaStatisticsManager.getAaaStats().getEapolAuthFailureTrans(), ZERO);
477 assertNotEquals(aaaStatisticsManager.getAaaStats().getEapolStartReqTrans(), ZERO);
478 assertNotEquals(aaaStatisticsManager.getAaaStats().getEapPktTxauthChooseEap(), ZERO);
479 assertNotEquals(aaaStatisticsManager.getAaaStats().getEapolTransRespNotNak(), ZERO);
480
Shubham Sharma1bd890d2019-12-18 07:09:59 +0000481 assertNotEquals(aaaStatisticsManager.getAaaStats().getAccessRequestsTx(), ZERO);
482 assertNotEquals(aaaStatisticsManager.getAaaStats().getChallengeResponsesRx(), ZERO);
483 assertNotEquals(aaaStatisticsManager.getAaaStats().getDroppedResponsesRx(), ZERO);
484 assertNotEquals(aaaStatisticsManager.getAaaStats().getInvalidValidatorsRx(), ZERO);
485 assertNotEquals(aaaStatisticsManager.getAaaStats().getPendingRequests(), ZERO);
486 assertNotEquals(aaaStatisticsManager.getAaaStats().getRejectResponsesRx(), ZERO);
487 assertNotEquals(aaaStatisticsManager.getAaaStats().getRequestRttMilis(), ZERO);
488 assertNotEquals(aaaStatisticsManager.getAaaStats().getUnknownTypeRx(), ZERO);
489
Shubham Sharmac7aa6202019-12-12 10:19:10 +0000490 // Counts the aaa Statistics count
Shubham Sharma1ad16632019-11-26 11:09:21 +0000491 countAaaStatistics();
492
493 }
494
495 /*
496 * Tests the retransmitted packet and malformed packet count
497 *
498 * @throws DeserializationException
499 * if packed deserialization fails.
500 */
501 @Test
502 public void testRequestRetransmittedCount() throws Exception {
503
504 // (1) Supplicant start up
505 Ethernet startPacket = constructSupplicantStartPacket();
506 sendPacket(startPacket);
507
508 // (2) Supplicant identify
509
510 Ethernet identifyPacket = constructSupplicantIdentifyPacket(null, EAP.ATTR_IDENTITY, (byte) 1, null);
511 sendPacket(identifyPacket);
512
513 RADIUS radiusIdentifyPacket = (RADIUS) fetchPacket(1);
514 checkRadiusPacketFromSupplicant(radiusIdentifyPacket);
515
516 // again creating pending state for same packet
517 constructSupplicantIdentifyPacket(null, EAP.ATTR_IDENTITY, (byte) 1, null);
518 sendPacket(identifyPacket);
519 aaaManager.impl.handlePacketFromServer(null);
520 aaaManager.aaaStatisticsManager.calculatePacketRoundtripTime();
521
522 // creating malformed packet
523 final ByteBuffer byteBuffer = ByteBuffer.wrap(startPacket.serialize());
524 InboundPacket inPacket = new DefaultInboundPacket(connectPoint("1", 1),
525 startPacket, byteBuffer);
526
527 PacketContext context = new TestPacketContext(127L, inPacket, null, false);
528 aaaManager.impl.handlePacketFromServer(context);
Shubham Sharmac7aa6202019-12-12 10:19:10 +0000529
530 // Check for increase of Stats
531 assertNotEquals(aaaStatisticsManager.getAaaStats().getEapolResIdentityMsgTrans(), ZERO);
532 assertNotEquals(aaaStatisticsManager.getAaaStats().getEapolStartReqTrans(), ZERO);
533
Shubham Sharma1bd890d2019-12-18 07:09:59 +0000534 assertNotEquals(aaaStatisticsManager.getAaaStats().getAccessRequestsTx(), ZERO);
535 assertNotEquals(aaaStatisticsManager.getAaaStats().getDroppedResponsesRx(), ZERO);
536 assertNotEquals(aaaStatisticsManager.getAaaStats().getPendingRequests(), ZERO);
537 assertNotEquals(aaaStatisticsManager.getAaaStats().getMalformedResponsesRx(), ZERO);
538 assertNotEquals(aaaStatisticsManager.getAaaStats().getRequestReTx(), ZERO);
539 assertNotEquals(aaaStatisticsManager.getAaaStats().getRequestRttMilis(), ZERO);
540 assertNotEquals(aaaStatisticsManager.getAaaStats().getUnknownTypeRx(), ZERO);
541 assertNotEquals(aaaStatisticsManager.getAaaStats().getUnknownServerRx(), ZERO);
Shubham Sharma1ad16632019-11-26 11:09:21 +0000542
Shubham Sharma1bd890d2019-12-18 07:09:59 +0000543 countAaaStatistics();
544 }
Shubham Sharma1ad16632019-11-26 11:09:21 +0000545
Shubham Sharmac7aa6202019-12-12 10:19:10 +0000546 /** Tests the authentication path through the AAA application.
547 * And counts the aaa Stats for logoff transactionXZ.
548 * @throws DeserializationException
549 * if packed deserialization fails.
550 */
551 @Test
552 public void testAaaStatisticsForLogoffPackets() throws Exception {
553
554 // (1) Supplicant start up
555 Ethernet startPacket = constructSupplicantStartPacket();
556 sendPacket(startPacket);
557
558 Ethernet responsePacket = (Ethernet) fetchPacket(0);
559 checkRadiusPacket(aaaManager, responsePacket, EAP.ATTR_IDENTITY);
560
561 // (2) Supplicant identify
562
563 Ethernet identifyPacket = constructSupplicantIdentifyPacket(null, EAP.ATTR_IDENTITY, (byte) 1, null);
564 sendPacket(identifyPacket);
565
566 RADIUS radiusIdentifyPacket = (RADIUS) fetchPacket(1);
567 checkRadiusPacketFromSupplicant(radiusIdentifyPacket);
568
569 assertThat(radiusIdentifyPacket.getCode(), is(RADIUS.RADIUS_CODE_ACCESS_REQUEST));
570 assertThat(new String(radiusIdentifyPacket.getAttribute(RADIUSAttribute.RADIUS_ATTR_USERNAME).getValue()),
571 is("testuser"));
572 IpAddress nasIp = IpAddress.valueOf(IpAddress.Version.INET,
573 radiusIdentifyPacket.getAttribute(RADIUSAttribute.RADIUS_ATTR_NAS_IP).getValue());
574 assertThat(nasIp.toString(), is(aaaManager.nasIpAddress.getHostAddress()));
575
576 // State machine should have been created by now
577
578 StateMachine stateMachine = StateMachine.lookupStateMachineBySessionId(SESSION_ID);
579 assertThat(stateMachine, notNullValue());
580 assertThat(stateMachine.state(), is(StateMachine.STATE_PENDING));
581
582 // (3) RADIUS MD5 challenge
583
584 RADIUS radiusCodeAccessChallengePacket = constructRadiusCodeAccessChallengePacket(
585 RADIUS.RADIUS_CODE_ACCESS_CHALLENGE, EAP.ATTR_MD5);
586 aaaManager.handleRadiusPacket(radiusCodeAccessChallengePacket);
587
588 Ethernet radiusChallengeMD5Packet = (Ethernet) fetchPacket(2);
589 checkRadiusPacket(aaaManager, radiusChallengeMD5Packet, EAP.ATTR_MD5);
590
591 // (4) Supplicant MD5 response
592
593 Ethernet md5RadiusPacket = constructSupplicantIdentifyPacket(stateMachine, EAP.ATTR_MD5,
594 stateMachine.challengeIdentifier(), radiusChallengeMD5Packet);
595 sendPacket(md5RadiusPacket);
596
597 RADIUS responseMd5RadiusPacket = (RADIUS) fetchPacket(3);
598
599 checkRadiusPacketFromSupplicant(responseMd5RadiusPacket);
600 assertThat(responseMd5RadiusPacket.getIdentifier(), is((byte) 9));
601 assertThat(responseMd5RadiusPacket.getCode(), is(RADIUS.RADIUS_CODE_ACCESS_REQUEST));
602
603 // State machine should be in pending state
604
605 assertThat(stateMachine, notNullValue());
606 assertThat(stateMachine.state(), is(StateMachine.STATE_PENDING));
607
608 // (5) RADIUS Success
609
610 RADIUS successPacket =
611 constructRadiusCodeAccessChallengePacket(RADIUS.RADIUS_CODE_ACCESS_ACCEPT, EAP.SUCCESS);
612 aaaManager.handleRadiusPacket((successPacket));
613 Ethernet supplicantSuccessPacket = (Ethernet) fetchPacket(4);
614
615 checkRadiusPacket(aaaManager, supplicantSuccessPacket, EAP.SUCCESS);
616
617 // State machine should be in authorized state
618
619 assertThat(stateMachine, notNullValue());
620 assertThat(stateMachine.state(), is(StateMachine.STATE_AUTHORIZED));
621
622 // Supplicant trigger EAP Logoff
623 Ethernet loggoffPacket = constructSupplicantLogoffPacket();
624 sendPacket(loggoffPacket);
625
626 // State machine should be in logoff state
627 assertThat(stateMachine, notNullValue());
628 assertThat(stateMachine.state(), is(StateMachine.STATE_IDLE));
629
630 //Check for increase in stats
631 assertNotEquals(aaaStatisticsManager.getAaaStats().getEapolLogoffRx(), ZERO);
632 assertNotEquals(aaaStatisticsManager.getAaaStats().getEapolResIdentityMsgTrans(), ZERO);
633 assertNotEquals(aaaStatisticsManager.getAaaStats().getEapolAuthSuccessTrans(), ZERO);
634 assertNotEquals(aaaStatisticsManager.getAaaStats().getEapolStartReqTrans(), ZERO);
635 assertNotEquals(aaaStatisticsManager.getAaaStats().getEapolTransRespNotNak(), ZERO);
636 assertNotEquals(aaaStatisticsManager.getAaaStats().getEapPktTxauthChooseEap(), ZERO);
Shubham Sharma001ae112020-01-28 10:04:01 +0000637 assertNotEquals(aaaStatisticsManager.getAaaStats().getAuthStateIdle(), ZERO);
638 // Counts the aaa Statistics count
Shubham Sharmac7aa6202019-12-12 10:19:10 +0000639 countAaaStatistics();
640
641 }
642
Arjun E Kac463f62020-02-03 14:05:45 +0000643 /** Tests the authentication path through the AAA application.
644 * And counts the aaa Stats for timeout.
645 * @throws DeserializationException
646 * if packed deserialization fails.
647 */
648 @Test
649 public void testAaaStatisticsForTimeoutPackets() throws Exception {
650
651 // (1) Supplicant start up
652 Ethernet startPacket = constructSupplicantStartPacket();
653 sendPacket(startPacket);
654
655 Ethernet responsePacket = (Ethernet) fetchPacket(0);
656 checkRadiusPacket(aaaManager, responsePacket, EAP.ATTR_IDENTITY);
657
658 // (2) Supplicant identify
659
660 Ethernet identifyPacket = constructSupplicantIdentifyPacket(null, EAP.ATTR_IDENTITY, (byte) 1, null);
661 sendPacket(identifyPacket);
662
663 RADIUS radiusIdentifyPacket = (RADIUS) fetchPacket(1);
664 checkRadiusPacketFromSupplicant(radiusIdentifyPacket);
665
666 assertThat(radiusIdentifyPacket.getCode(), is(RADIUS.RADIUS_CODE_ACCESS_REQUEST));
667 assertThat(new String(radiusIdentifyPacket.getAttribute(RADIUSAttribute.RADIUS_ATTR_USERNAME).getValue()),
668 is("testuser"));
669 IpAddress nasIp = IpAddress.valueOf(IpAddress.Version.INET,
670 radiusIdentifyPacket.getAttribute(RADIUSAttribute.RADIUS_ATTR_NAS_IP).getValue());
671 assertThat(nasIp.toString(), is(aaaManager.nasIpAddress.getHostAddress()));
672
673 // State machine should have been created by now
674
675 StateMachine stateMachine = StateMachine.lookupStateMachineBySessionId(SESSION_ID);
676 assertThat(stateMachine, notNullValue());
677 assertThat(stateMachine.state(), is(StateMachine.STATE_PENDING));
678 Thread.sleep((aaaManager.cleanupTimerTimeOutInMins / 2) + 1);
679
680 // State machine should be in timeout state
681 assertThat(stateMachine, notNullValue());
682 assertThat(stateMachine.state(), is(StateMachine.STATE_PENDING));
683
684 //Check for increase in stats
685 assertNotEquals(aaaStatisticsManager.getAaaStats().getEapolResIdentityMsgTrans(), ZERO);
686 assertNotEquals(aaaStatisticsManager.getAaaStats().getEapolStartReqTrans(), ZERO);
687 countAaaStatistics();
688
689 }
690
Sonal Kasliwal6f2246d2020-01-30 08:42:42 +0000691
692 /** Tests the authentication path through the AAA application.
693 * And counts the aaa Stats for logoff transactionXZ.
694 * @throws DeserializationException
695 * if packed deserialization fails.
696 */
697 @Test
698 public void testAaaSuplicantStatsForEapolLogOff() throws Exception {
699
700 // (1) Supplicant start up
701 Ethernet startPacket = constructSupplicantStartPacket();
702 sendPacket(startPacket);
703
704 Ethernet responsePacket = (Ethernet) fetchPacket(0);
705 checkRadiusPacket(aaaManager, responsePacket, EAP.ATTR_IDENTITY);
706
707 // (2) Supplicant identify
708
709 Ethernet identifyPacket = constructSupplicantIdentifyPacket(null, EAP.ATTR_IDENTITY, (byte) 1, null);
710 sendPacket(identifyPacket);
711
712 RADIUS radiusIdentifyPacket = (RADIUS) fetchPacket(1);
713 checkRadiusPacketFromSupplicant(radiusIdentifyPacket);
714
715 // State machine should have been created by now
716
717 StateMachine stateMachine = StateMachine.lookupStateMachineBySessionId(SESSION_ID);
718
719 // (3) RADIUS MD5 challenge
720
721 RADIUS radiusCodeAccessChallengePacket = constructRadiusCodeAccessChallengePacket(
722 RADIUS.RADIUS_CODE_ACCESS_CHALLENGE, EAP.ATTR_MD5);
723 aaaManager.handleRadiusPacket(radiusCodeAccessChallengePacket);
724
725 Ethernet radiusChallengeMD5Packet = (Ethernet) fetchPacket(2);
726 checkRadiusPacket(aaaManager, radiusChallengeMD5Packet, EAP.ATTR_MD5);
727
728 // (4) Supplicant MD5 response
729
730 Ethernet md5RadiusPacket = constructSupplicantIdentifyPacket(stateMachine, EAP.ATTR_MD5,
731 stateMachine.challengeIdentifier(), radiusChallengeMD5Packet);
732 sendPacket(md5RadiusPacket);
733
734 RADIUS responseMd5RadiusPacket = (RADIUS) fetchPacket(3);
735
736 checkRadiusPacketFromSupplicant(responseMd5RadiusPacket);
737
738 // (5) RADIUS Success
739
740 RADIUS successPacket =
741 constructRadiusCodeAccessChallengePacket(RADIUS.RADIUS_CODE_ACCESS_ACCEPT, EAP.SUCCESS);
742 aaaManager.handleRadiusPacket((successPacket));
743 Ethernet supplicantSuccessPacket = (Ethernet) fetchPacket(4);
744
745 checkRadiusPacket(aaaManager, supplicantSuccessPacket, EAP.SUCCESS);
746
747 // Supplicant trigger EAP Logoff
748 Ethernet loggoffPacket = constructSupplicantLogoffPacket();
749 sendPacket(loggoffPacket);
750 AaaSupplicantMachineStats aaaSupplicantObj = aaaSupplicantStatsManager.getSupplicantStats(stateMachine);
751
752 // Check the aaa supplicant stats.
753 assertEquals(aaaSupplicantObj.getSessionTerminateReason(), "SUPPLICANT_LOGOFF");
754 assertEquals(aaaSupplicantObj.getEapolType(), "EAPOL_LOGOFF");
755 assertNotEquals(aaaSupplicantObj.getSessionDuration(), 0);
756 assertEquals(aaaSupplicantObj.getSessionName(), "testuser");
757 assertEquals(aaaSupplicantObj.getSessionId(), SESSION_ID);
758 assertEquals(aaaSupplicantObj.getSrcMacAddress(), serverMac.toString());
759 assertNotEquals(aaaSupplicantObj.getTotalFramesReceived(), 0);
760 assertNotEquals(aaaSupplicantObj.getTotalFramesSent(), 0);
761 assertNotEquals(aaaSupplicantObj.getTotalPacketsRecieved(), 0);
762 assertNotEquals(aaaSupplicantObj.getTotalPacketsSent(), 0);
763 }
764
765
Sonal Kasliwal7eef29f2020-02-12 12:23:22 +0000766 /** Tests the aaa supplicant stats through the AAA application.
767 * For authenticated onu (Port removed)
768 * @throws Exception
769 */
Sonal Kasliwal6f2246d2020-01-30 08:42:42 +0000770 @Test
771 public void testAaaSuplicantStatsForPortRemoved() throws Exception {
772
773 // (1) Supplicant start up
774 Ethernet startPacket = constructSupplicantStartPacket();
775 sendPacket(startPacket);
776
777 Ethernet responsePacket = (Ethernet) fetchPacket(0);
778 checkRadiusPacket(aaaManager, responsePacket, EAP.ATTR_IDENTITY);
779
780 // (2) Supplicant identify
781
782 Ethernet identifyPacket = constructSupplicantIdentifyPacket(null, EAP.ATTR_IDENTITY, (byte) 1, null);
783 sendPacket(identifyPacket);
784
785 RADIUS radiusIdentifyPacket = (RADIUS) fetchPacket(1);
786 checkRadiusPacketFromSupplicant(radiusIdentifyPacket);
787
788 // State machine should have been created by now
789 StateMachine stateMachine = StateMachine.lookupStateMachineBySessionId(SESSION_ID);
Sonal Kasliwal6f2246d2020-01-30 08:42:42 +0000790 DefaultAnnotations.Builder annotationsBuilder = DefaultAnnotations.builder()
Sonal Kasliwal7eef29f2020-02-12 12:23:22 +0000791 .set(AnnotationKeys.MANAGEMENT_ADDRESS, SOURCE_IP.toString());
Sonal Kasliwal6f2246d2020-01-30 08:42:42 +0000792 SparseAnnotations annotations = annotationsBuilder.build();
793 Annotations[] deviceAnnotations = {annotations };
Sonal Kasliwal7eef29f2020-02-12 12:23:22 +0000794 Device deviceA = new DefaultDevice(null, DEVICE_ID, Device.Type.OTHER, "", "", "", "", null, deviceAnnotations);
Sonal Kasliwal6f2246d2020-01-30 08:42:42 +0000795 Port port =
Sonal Kasliwal7eef29f2020-02-12 12:23:22 +0000796 new DefaultPort(null, PORT_A, true, Type.COPPER, DefaultPort.DEFAULT_SPEED, annotations);
Sonal Kasliwal6f2246d2020-01-30 08:42:42 +0000797 DeviceEvent deviceEvent = new DeviceEvent(DeviceEvent.Type.PORT_REMOVED, deviceA, port);
798 aaaManager.deviceListener.event(deviceEvent);
799 AaaSupplicantMachineStats aaaSupplicantObj = aaaSupplicantStatsManager.getSupplicantStats(stateMachine);
800
801 // Check the aaa supplicant stats.
802 assertEquals(aaaSupplicantObj.getSessionTerminateReason(), "PORT_REMOVED");
803 assertEquals(aaaSupplicantObj.getEapolType(), "EAPOL_PACKET");
804 assertNotEquals(aaaSupplicantObj.getSessionDuration(), 0);
805 assertEquals(aaaSupplicantObj.getSessionName(), "testuser");
806 assertEquals(aaaSupplicantObj.getSessionId(), SESSION_ID);
807 assertEquals(aaaSupplicantObj.getSrcMacAddress(), serverMac.toString());
808 assertEquals(aaaSupplicantObj.getTotalFramesReceived(), 0);
809 assertEquals(aaaSupplicantObj.getTotalFramesSent(), 0);
810 assertEquals(aaaSupplicantObj.getTotalPacketsRecieved(), 0);
811 assertEquals(aaaSupplicantObj.getTotalPacketsSent(), 0);
812 }
813
Sonal Kasliwal7eef29f2020-02-12 12:23:22 +0000814 // Test AAA supplicant Stats for unauthenticated onu (Port removed)
815 @Test
816 public void testAaaSuplicantStatsForUnauthenticatedOnu() throws Exception {
817
818 DefaultAnnotations.Builder annotationsBuilder = DefaultAnnotations.builder()
819 .set(AnnotationKeys.MANAGEMENT_ADDRESS, SOURCE_IP.toString());
820 SparseAnnotations annotations = annotationsBuilder.build();
821 Annotations[] deviceAnnotations = {annotations };
822 Device deviceA = new DefaultDevice(null, DEVICE_ID, Device.Type.OTHER, "", "", "", "", null, deviceAnnotations);
823 Port port =
824 new DefaultPort(null, PORT_A, true, Type.COPPER, DefaultPort.DEFAULT_SPEED, annotations);
825 DeviceEvent deviceEvent = new DeviceEvent(DeviceEvent.Type.PORT_REMOVED, deviceA, port);
826 aaaManager.deviceListener.event(deviceEvent);
827 // State machine will not be created.
828 StateMachine stateMachine = StateMachine.lookupStateMachineBySessionId(SESSION_ID);
829 // Check the state machine is null. As state machine is null aaaSuplicantObj is null.
830 assertNull(stateMachine);
831 }
832
Shubham Sharma1ad16632019-11-26 11:09:21 +0000833 // Calculates the AAA statistics count.
834 public void countAaaStatistics() {
835 assertThat(aaaStatisticsManager.getAaaStats().getAcceptResponsesRx(), notNullValue());
836 assertThat(aaaStatisticsManager.getAaaStats().getAccessRequestsTx(), notNullValue());
837 assertThat(aaaStatisticsManager.getAaaStats().getChallengeResponsesRx(), notNullValue());
838 assertThat(aaaStatisticsManager.getAaaStats().getDroppedResponsesRx(), notNullValue());
839 assertThat(aaaStatisticsManager.getAaaStats().getInvalidValidatorsRx(), notNullValue());
840 assertThat(aaaStatisticsManager.getAaaStats().getMalformedResponsesRx(), notNullValue());
841 assertThat(aaaStatisticsManager.getAaaStats().getPendingRequests(), notNullValue());
842 assertThat(aaaStatisticsManager.getAaaStats().getRejectResponsesRx(), notNullValue());
843 assertThat(aaaStatisticsManager.getAaaStats().getRequestReTx(), notNullValue());
844 assertThat(aaaStatisticsManager.getAaaStats().getRequestRttMilis(), notNullValue());
845 assertThat(aaaStatisticsManager.getAaaStats().getUnknownServerRx(), notNullValue());
846 assertThat(aaaStatisticsManager.getAaaStats().getUnknownTypeRx(), notNullValue());
Shubham Sharmac7aa6202019-12-12 10:19:10 +0000847
Shubham Sharma1ad16632019-11-26 11:09:21 +0000848 }
849
850 /*
pier99c6d1d2020-02-13 14:39:55 +0100851 * Mock implementation of SocketBasedRadiusCommunicator class.
852 *
853 */
Shubham Sharma1ad16632019-11-26 11:09:21 +0000854 class TestSocketBasedRadiusCommunicator extends SocketBasedRadiusCommunicator {
855
pier99c6d1d2020-02-13 14:39:55 +0100856 TestSocketBasedRadiusCommunicator(ApplicationId appId, PacketService pktService, AaaManager aaaManager) {
857 super(appId, pktService, aaaManager);
858 }
859
860 /**
861 * Wait 10 millis to simulate a non 0 rtt.
862 *
863 * @throws InterruptedException
864 */
865 private void waitPacket() throws InterruptedException {
866 synchronized (this) {
867 this.wait(10);
868 }
869 }
Shubham Sharma1ad16632019-11-26 11:09:21 +0000870
871 // Implementation of socketBasedRadiusCommunicator--> run() method
872 public void handlePacketFromServer(PacketContext context) {
pier99c6d1d2020-02-13 14:39:55 +0100873 RADIUS incomingPkt = (RADIUS) fetchPacket(savedPackets.size() - 1);
874 try {
875 // wait a couple of millis to avoid rtt being 0
876 waitPacket();
877 if (context == null) {
Shubham Sharma1ad16632019-11-26 11:09:21 +0000878 aaaStatisticsManager.handleRoundtripTime(incomingPkt.getIdentifier());
879 aaaManager.handleRadiusPacket(incomingPkt);
880 } else if (null != context) {
881 aaaManager.checkForPacketFromUnknownServer("100.100.100.0");
882 aaaStatisticsManager.handleRoundtripTime(incomingPkt.getIdentifier());
883 aaaManager.handleRadiusPacket(incomingPkt);
884 incomingPkt =
885 RADIUS.deserializer().deserialize(incomingPkt.generateAuthCode(), 0, 1);
886 }
pier99c6d1d2020-02-13 14:39:55 +0100887 } catch (DeserializationException dex) {
888 aaaManager.aaaStatisticsManager.getAaaStats().increaseMalformedResponsesRx();
889 aaaStatisticsManager.getAaaStats().countDroppedResponsesRx();
890 log.error("Cannot deserialize packet", dex);
891 } catch (StateMachineException sme) {
892 log.error("Illegal state machine operation", sme);
893 } catch (InterruptedException inte) {
894 Thread.currentThread().interrupt();
895 }
Shubham Sharma1ad16632019-11-26 11:09:21 +0000896 }
897
898 }
899
Sonal Kasliwal7eef29f2020-02-12 12:23:22 +0000900}