diff --git a/src/main/java/net/floodlightcontroller/core/OFSwitchBase.java b/src/main/java/net/floodlightcontroller/core/OFSwitchBase.java index 17bbcf07e292b25b7ad2dae2c675a80389aa199e..46351f299a73a2f6c4e579ec727f3cfa77a10c5c 100644 --- a/src/main/java/net/floodlightcontroller/core/OFSwitchBase.java +++ b/src/main/java/net/floodlightcontroller/core/OFSwitchBase.java @@ -186,6 +186,12 @@ public abstract class OFSwitchBase implements IOFSwitch { } @Override + @LogMessageDoc(level="WARN", + message="Sending OF message that modifies switch " + + "state while in the slave role: {switch}", + explanation="An application has sent a message to a switch " + + "that is not valid when the switch is in a slave role", + recommendation=LogMessageDoc.REPORT_CONTROLLER_BUG) public void write(OFMessage m, FloodlightContext bc) throws IOException { Map<IOFSwitch,List<OFMessage>> msg_buffer_map = local_msg_buffer.get(); @@ -195,6 +201,20 @@ public abstract class OFSwitchBase implements IOFSwitch { msg_buffer_map.put(this, msg_buffer); } + if (role == Role.SLAVE) { + switch (m.getType()) { + case PACKET_OUT: + case FLOW_MOD: + case PORT_MOD: + log.warn("Sending OF message that modifies switch " + + "state while in the slave role: {}", + m.getType().name()); + break; + default: + break; + } + } + this.floodlightProvider.handleOutgoingMessage(this, m, bc); msg_buffer.add(m); @@ -206,31 +226,12 @@ public abstract class OFSwitchBase implements IOFSwitch { } @Override - @LogMessageDoc(level="WARN", - message="Sending OF message that modifies switch " + - "state while in the slave role: {switch}", - explanation="An application has sent a message to a switch " + - "that is not valid when the switch is in a slave role", - recommendation=LogMessageDoc.REPORT_CONTROLLER_BUG) public void write(List<OFMessage> msglist, FloodlightContext bc) throws IOException { - for (OFMessage m : msglist) { - if (role == Role.SLAVE) { - switch (m.getType()) { - case PACKET_OUT: - case FLOW_MOD: - case PORT_MOD: - log.warn("Sending OF message that modifies switch " + - "state while in the slave role: {}", - m.getType().name()); - break; - default: - break; - } - } - this.floodlightProvider.handleOutgoingMessage(this, m, bc); - } - this.write(msglist); + for (OFMessage m : msglist) + this.write(m, bc); + + flush (); } private void write(List<OFMessage> msglist) throws IOException {