tom

Merge branch 'master' of ssh://gerrit.onlab.us:29418/onos-next

...@@ -250,9 +250,12 @@ public class OpenFlowControllerImpl implements OpenFlowController { ...@@ -250,9 +250,12 @@ public class OpenFlowControllerImpl implements OpenFlowController {
250 } 250 }
251 OpenFlowSwitch sw = activeMasterSwitches.remove(dpid); 251 OpenFlowSwitch sw = activeMasterSwitches.remove(dpid);
252 if (sw == null) { 252 if (sw == null) {
253 - log.error("Transition to equal called on sw {}, but switch " 253 + sw = getSwitch(dpid);
254 - + "was not found in controller-cache", dpid); 254 + if (sw == null) {
255 - return; 255 + log.error("Transition to equal called on sw {}, but switch "
256 + + "was not found in controller-cache", dpid);
257 + return;
258 + }
256 } 259 }
257 log.info("Transitioned switch {} to EQUAL", dpid); 260 log.info("Transitioned switch {} to EQUAL", dpid);
258 activeEqualSwitches.put(dpid, sw); 261 activeEqualSwitches.put(dpid, sw);
......
...@@ -2,10 +2,15 @@ package org.onlab.onos.of.drivers.impl; ...@@ -2,10 +2,15 @@ package org.onlab.onos.of.drivers.impl;
2 2
3 3
4 4
5 +import java.util.Collections;
6 +import java.util.List;
7 +
5 import org.onlab.onos.of.controller.Dpid; 8 import org.onlab.onos.of.controller.Dpid;
9 +import org.onlab.onos.of.controller.driver.AbstractOpenFlowSwitch;
6 import org.onlab.onos.of.controller.driver.OpenFlowSwitchDriver; 10 import org.onlab.onos.of.controller.driver.OpenFlowSwitchDriver;
7 import org.onlab.onos.of.controller.driver.OpenFlowSwitchDriverFactory; 11 import org.onlab.onos.of.controller.driver.OpenFlowSwitchDriverFactory;
8 import org.projectfloodlight.openflow.protocol.OFDescStatsReply; 12 import org.projectfloodlight.openflow.protocol.OFDescStatsReply;
13 +import org.projectfloodlight.openflow.protocol.OFMessage;
9 import org.projectfloodlight.openflow.protocol.OFVersion; 14 import org.projectfloodlight.openflow.protocol.OFVersion;
10 import org.slf4j.Logger; 15 import org.slf4j.Logger;
11 import org.slf4j.LoggerFactory; 16 import org.slf4j.LoggerFactory;
...@@ -51,8 +56,36 @@ public final class DriverManager implements OpenFlowSwitchDriverFactory { ...@@ -51,8 +56,36 @@ public final class DriverManager implements OpenFlowSwitchDriverFactory {
51 } 56 }
52 57
53 log.warn("DriverManager could not identify switch desc: {}. " 58 log.warn("DriverManager could not identify switch desc: {}. "
54 - + "Assigning OFSwitchImplBase", desc); 59 + + "Assigning AbstractOpenFlowSwich", desc);
55 - return null; 60 + return new AbstractOpenFlowSwitch(dpid) {
61 +
62 + @Override
63 + public void write(List<OFMessage> msgs) {
64 + channel.write(msgs);
65 + }
66 +
67 + @Override
68 + public void write(OFMessage msg) {
69 + channel.write(Collections.singletonList(msg));
70 +
71 + }
72 +
73 + @Override
74 + public Boolean supportNxRole() {
75 + return false;
76 + }
77 +
78 + @Override
79 + public void startDriverHandshake() {}
80 +
81 + @Override
82 + public void processDriverHandshakeMessage(OFMessage m) {}
83 +
84 + @Override
85 + public boolean isDriverHandshakeComplete() {
86 + return true;
87 + }
88 + };
56 } 89 }
57 90
58 /** 91 /**
......