From e66a43f2d51b8209a086fb4502a533830425a8de Mon Sep 17 00:00:00 2001 From: Ryan Izard <rizard@g.clemson.edu> Date: Thu, 16 Apr 2015 16:14:47 -0400 Subject: [PATCH] Modified slightly to track the specific initial state. If we were slave first, then we won't clear the flow table if we go to master for the first time. --- .../core/internal/OFSwitchHandshakeHandler.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/floodlightcontroller/core/internal/OFSwitchHandshakeHandler.java b/src/main/java/net/floodlightcontroller/core/internal/OFSwitchHandshakeHandler.java index 66a7b55e9..b171312ca 100644 --- a/src/main/java/net/floodlightcontroller/core/internal/OFSwitchHandshakeHandler.java +++ b/src/main/java/net/floodlightcontroller/core/internal/OFSwitchHandshakeHandler.java @@ -101,7 +101,7 @@ public class OFSwitchHandshakeHandler implements IOFConnectionListener { private final OFFeaturesReply featuresReply; private final Timer timer; - private volatile boolean visitedMaster = false; + private volatile OFControllerRole initialRole = null; private final ArrayList<OFPortStatus> pendingPortStatusMsg; @@ -1234,8 +1234,8 @@ public class OFSwitchHandshakeHandler implements IOFConnectionListener { if (OFSwitchManager.clearTablesOnEachTransitionToMaster) { log.info("Clearing flow tables of {} on recent transition to MASTER.", sw.getId().toString()); clearAllTables(); - } else if (OFSwitchManager.clearTablesOnInitialConnectAsMaster && !visitedMaster) { - visitedMaster = true; + } else if (OFSwitchManager.clearTablesOnInitialConnectAsMaster && initialRole == null) { /* don't do it if we were slave first */ + initialRole = OFControllerRole.ROLE_MASTER; log.info("Clearing flow tables of {} on initial role as MASTER.", sw.getId().toString()); clearAllTables(); } @@ -1367,6 +1367,9 @@ public class OFSwitchHandshakeHandler implements IOFConnectionListener { @Override void enterState() { setSwitchStatus(SwitchStatus.SLAVE); + if (initialRole == null) { + initialRole = OFControllerRole.ROLE_SLAVE; + } } @Override -- GitLab