CORD-1615 add CLI command to support the removal of state machines
Change-Id: I428bff2a8e502cc7b1c73f804792c36a8f847b57
diff --git a/src/main/java/org/opencord/aaa/StateMachine.java b/src/main/java/org/opencord/aaa/StateMachine.java
index 4a00966..6795c43 100644
--- a/src/main/java/org/opencord/aaa/StateMachine.java
+++ b/src/main/java/org/opencord/aaa/StateMachine.java
@@ -149,6 +149,29 @@
}
/**
+ * Deletes authentication state machine records for a given MAC address.
+ * @param mac mac address of the suppliant who's state machine should be removed
+ */
+ public static void deleteByMac(MacAddress mac) {
+
+ // Walk the map from session IDs to state machines looking for a MAC match
+ for (Map.Entry<String, StateMachine> e : sessionIdMap.entrySet()) {
+
+ // If a MAC match is found then delete the entry from the session ID
+ // and identifier map as well as call delete identifier to clean up
+ // the identifier bit set.
+ if (e.getValue() != null && e.getValue().supplicantAddress != null &&
+ e.getValue().supplicantAddress.equals(mac)) {
+ sessionIdMap.remove(e.getValue().sessionId);
+ if (e.getValue().identifier != -1) {
+ deleteStateMachineMapping(e.getValue());
+ }
+ break;
+ }
+ }
+ }
+
+ /**
* State Machine Constructor.
*
* @param sessionId session Id represented by the switch dpid + port number
@@ -302,7 +325,6 @@
this.username = username;
}
-
/**
* Gets the username.
*