Showing
12 changed files
with
114 additions
and
30 deletions
| ... | @@ -9,7 +9,7 @@ public interface Device extends Element { | ... | @@ -9,7 +9,7 @@ public interface Device extends Element { |
| 9 | * Coarse classification of the type of the infrastructure device. | 9 | * Coarse classification of the type of the infrastructure device. |
| 10 | */ | 10 | */ |
| 11 | public enum Type { | 11 | public enum Type { |
| 12 | - SWITCH, ROUTER, FIREWALL, BALANCER, IPS, IDS, CONTROLLER, OTHER | 12 | + SWITCH, ROUTER, ROADM, FIREWALL, BALANCER, IPS, IDS, CONTROLLER, OTHER |
| 13 | } | 13 | } |
| 14 | 14 | ||
| 15 | /** | 15 | /** | ... | ... |
| ... | @@ -30,7 +30,7 @@ | ... | @@ -30,7 +30,7 @@ |
| 30 | <groupId>org.projectfloodlight</groupId> | 30 | <groupId>org.projectfloodlight</groupId> |
| 31 | <artifactId>openflowj</artifactId> | 31 | <artifactId>openflowj</artifactId> |
| 32 | <!-- FIXME once experimenter gets merged to upstream --> | 32 | <!-- FIXME once experimenter gets merged to upstream --> |
| 33 | - <version>0.3.8-optical_experimenter2</version> | 33 | + <version>0.3.8-optical_experimenter3</version> |
| 34 | </dependency> | 34 | </dependency> |
| 35 | <dependency> | 35 | <dependency> |
| 36 | <groupId>io.netty</groupId> | 36 | <groupId>io.netty</groupId> | ... | ... |
| ... | @@ -112,4 +112,13 @@ public interface OpenFlowSwitch { | ... | @@ -112,4 +112,13 @@ public interface OpenFlowSwitch { |
| 112 | */ | 112 | */ |
| 113 | void returnRoleAssertFailure(RoleState role); | 113 | void returnRoleAssertFailure(RoleState role); |
| 114 | 114 | ||
| 115 | + | ||
| 116 | + /** | ||
| 117 | + * Indicates if this switch is optical. | ||
| 118 | + * | ||
| 119 | + * @return true if optical | ||
| 120 | + */ | ||
| 121 | + public boolean isOptical(); | ||
| 122 | + | ||
| 123 | + | ||
| 115 | } | 124 | } | ... | ... |
| ... | @@ -374,4 +374,9 @@ public abstract class AbstractOpenFlowSwitch implements OpenFlowSwitchDriver { | ... | @@ -374,4 +374,9 @@ public abstract class AbstractOpenFlowSwitch implements OpenFlowSwitchDriver { |
| 374 | return this.desc.getSerialNum(); | 374 | return this.desc.getSerialNum(); |
| 375 | } | 375 | } |
| 376 | 376 | ||
| 377 | + @Override | ||
| 378 | + public boolean isOptical() { | ||
| 379 | + return false; | ||
| 380 | + } | ||
| 381 | + | ||
| 377 | } | 382 | } | ... | ... |
| ... | @@ -399,12 +399,12 @@ class OFChannelHandler extends IdleStateAwareChannelHandler { | ... | @@ -399,12 +399,12 @@ class OFChannelHandler extends IdleStateAwareChannelHandler { |
| 399 | h.sw.setPortDescReply(h.portDescReply); | 399 | h.sw.setPortDescReply(h.portDescReply); |
| 400 | h.sw.setConnected(true); | 400 | h.sw.setConnected(true); |
| 401 | h.sw.setChannel(h.channel); | 401 | h.sw.setChannel(h.channel); |
| 402 | - boolean success = h.sw.connectSwitch(); | 402 | +// boolean success = h.sw.connectSwitch(); |
| 403 | - | 403 | +// |
| 404 | - if (!success) { | 404 | +// if (!success) { |
| 405 | - disconnectDuplicate(h); | 405 | +// disconnectDuplicate(h); |
| 406 | - return; | 406 | +// return; |
| 407 | - } | 407 | +// } |
| 408 | // set switch information | 408 | // set switch information |
| 409 | 409 | ||
| 410 | 410 | ||
| ... | @@ -462,6 +462,8 @@ class OFChannelHandler extends IdleStateAwareChannelHandler { | ... | @@ -462,6 +462,8 @@ class OFChannelHandler extends IdleStateAwareChannelHandler { |
| 462 | throws IOException, SwitchStateException { | 462 | throws IOException, SwitchStateException { |
| 463 | if (m.getType() == OFType.ECHO_REQUEST) { | 463 | if (m.getType() == OFType.ECHO_REQUEST) { |
| 464 | processOFEchoRequest(h, (OFEchoRequest) m); | 464 | processOFEchoRequest(h, (OFEchoRequest) m); |
| 465 | + } else if (m.getType() == OFType.ECHO_REPLY) { | ||
| 466 | + processOFEchoReply(h, (OFEchoReply) m); | ||
| 465 | } else if (m.getType() == OFType.ROLE_REPLY) { | 467 | } else if (m.getType() == OFType.ROLE_REPLY) { |
| 466 | h.sw.handleRole(m); | 468 | h.sw.handleRole(m); |
| 467 | } else if (m.getType() == OFType.ERROR) { | 469 | } else if (m.getType() == OFType.ERROR) { |
| ... | @@ -479,6 +481,12 @@ class OFChannelHandler extends IdleStateAwareChannelHandler { | ... | @@ -479,6 +481,12 @@ class OFChannelHandler extends IdleStateAwareChannelHandler { |
| 479 | } else { | 481 | } else { |
| 480 | h.sw.processDriverHandshakeMessage(m); | 482 | h.sw.processDriverHandshakeMessage(m); |
| 481 | if (h.sw.isDriverHandshakeComplete()) { | 483 | if (h.sw.isDriverHandshakeComplete()) { |
| 484 | + boolean success = h.sw.connectSwitch(); | ||
| 485 | + | ||
| 486 | + if (!success) { | ||
| 487 | + disconnectDuplicate(h); | ||
| 488 | + return; | ||
| 489 | + } | ||
| 482 | h.setState(ACTIVE); | 490 | h.setState(ACTIVE); |
| 483 | } | 491 | } |
| 484 | } | 492 | } | ... | ... |
| ... | @@ -59,7 +59,7 @@ public final class DriverManager implements OpenFlowSwitchDriverFactory { | ... | @@ -59,7 +59,7 @@ public final class DriverManager implements OpenFlowSwitchDriverFactory { |
| 59 | 59 | ||
| 60 | String sw = desc.getSwDesc(); | 60 | String sw = desc.getSwDesc(); |
| 61 | if (sw.startsWith("LINC-OE")) { | 61 | if (sw.startsWith("LINC-OE")) { |
| 62 | - log.debug("Optical Emulator LINC-OE with DPID:{} found..", dpid); | 62 | + log.warn("Optical Emulator LINC-OE with DPID:{} found..", dpid); |
| 63 | return new OFOpticalSwitchImplLINC13(dpid, desc); | 63 | return new OFOpticalSwitchImplLINC13(dpid, desc); |
| 64 | } | 64 | } |
| 65 | 65 | ... | ... |
| ... | @@ -6,6 +6,7 @@ import org.onlab.onos.openflow.controller.driver.SwitchDriverSubHandshakeNotStar | ... | @@ -6,6 +6,7 @@ import org.onlab.onos.openflow.controller.driver.SwitchDriverSubHandshakeNotStar |
| 6 | import org.onlab.onos.openflow.controller.Dpid; | 6 | import org.onlab.onos.openflow.controller.Dpid; |
| 7 | import org.onlab.onos.openflow.controller.driver.AbstractOpenFlowSwitch; | 7 | import org.onlab.onos.openflow.controller.driver.AbstractOpenFlowSwitch; |
| 8 | import org.projectfloodlight.openflow.protocol.OFBarrierRequest; | 8 | import org.projectfloodlight.openflow.protocol.OFBarrierRequest; |
| 9 | +import org.projectfloodlight.openflow.protocol.OFCircuitPortStatus; | ||
| 9 | import org.projectfloodlight.openflow.protocol.OFCircuitPortsReply; | 10 | import org.projectfloodlight.openflow.protocol.OFCircuitPortsReply; |
| 10 | import org.projectfloodlight.openflow.protocol.OFCircuitPortsRequest; | 11 | import org.projectfloodlight.openflow.protocol.OFCircuitPortsRequest; |
| 11 | import org.projectfloodlight.openflow.protocol.OFDescStatsReply; | 12 | import org.projectfloodlight.openflow.protocol.OFDescStatsReply; |
| ... | @@ -14,7 +15,10 @@ import org.projectfloodlight.openflow.protocol.OFMatchV3; | ... | @@ -14,7 +15,10 @@ import org.projectfloodlight.openflow.protocol.OFMatchV3; |
| 14 | import org.projectfloodlight.openflow.protocol.OFMessage; | 15 | import org.projectfloodlight.openflow.protocol.OFMessage; |
| 15 | import org.projectfloodlight.openflow.protocol.OFOxmList; | 16 | import org.projectfloodlight.openflow.protocol.OFOxmList; |
| 16 | import org.projectfloodlight.openflow.protocol.OFPortDesc; | 17 | import org.projectfloodlight.openflow.protocol.OFPortDesc; |
| 18 | +import org.projectfloodlight.openflow.protocol.OFPortDescStatsReply; | ||
| 17 | import org.projectfloodlight.openflow.protocol.OFPortOptical; | 19 | import org.projectfloodlight.openflow.protocol.OFPortOptical; |
| 20 | +import org.projectfloodlight.openflow.protocol.OFStatsReply; | ||
| 21 | +import org.projectfloodlight.openflow.protocol.OFStatsType; | ||
| 18 | import org.projectfloodlight.openflow.protocol.action.OFAction; | 22 | import org.projectfloodlight.openflow.protocol.action.OFAction; |
| 19 | import org.projectfloodlight.openflow.protocol.action.OFActionCircuit; | 23 | import org.projectfloodlight.openflow.protocol.action.OFActionCircuit; |
| 20 | import org.projectfloodlight.openflow.protocol.instruction.OFInstruction; | 24 | import org.projectfloodlight.openflow.protocol.instruction.OFInstruction; |
| ... | @@ -43,12 +47,13 @@ public class OFOpticalSwitchImplLINC13 extends AbstractOpenFlowSwitch { | ... | @@ -43,12 +47,13 @@ public class OFOpticalSwitchImplLINC13 extends AbstractOpenFlowSwitch { |
| 43 | private final AtomicBoolean driverHandshakeComplete; | 47 | private final AtomicBoolean driverHandshakeComplete; |
| 44 | private long barrierXidToWaitFor = -1; | 48 | private long barrierXidToWaitFor = -1; |
| 45 | 49 | ||
| 50 | + private OFPortDescStatsReply wPorts; | ||
| 51 | + | ||
| 46 | private final Logger log = | 52 | private final Logger log = |
| 47 | LoggerFactory.getLogger(OFOpticalSwitchImplLINC13.class); | 53 | LoggerFactory.getLogger(OFOpticalSwitchImplLINC13.class); |
| 48 | 54 | ||
| 49 | OFOpticalSwitchImplLINC13(Dpid dpid, OFDescStatsReply desc) { | 55 | OFOpticalSwitchImplLINC13(Dpid dpid, OFDescStatsReply desc) { |
| 50 | super(dpid); | 56 | super(dpid); |
| 51 | - //setAttribute("optical", "true"); | ||
| 52 | driverHandshakeComplete = new AtomicBoolean(false); | 57 | driverHandshakeComplete = new AtomicBoolean(false); |
| 53 | setSwitchDescription(desc); | 58 | setSwitchDescription(desc); |
| 54 | } | 59 | } |
| ... | @@ -62,7 +67,7 @@ public class OFOpticalSwitchImplLINC13 extends AbstractOpenFlowSwitch { | ... | @@ -62,7 +67,7 @@ public class OFOpticalSwitchImplLINC13 extends AbstractOpenFlowSwitch { |
| 62 | 67 | ||
| 63 | @Override | 68 | @Override |
| 64 | public void startDriverHandshake() { | 69 | public void startDriverHandshake() { |
| 65 | - log.debug("Starting driver handshake for sw {}", getStringId()); | 70 | + log.warn("Starting driver handshake for sw {}", getStringId()); |
| 66 | if (startDriverHandshakeCalled) { | 71 | if (startDriverHandshakeCalled) { |
| 67 | throw new SwitchDriverSubHandshakeAlreadyStarted(); | 72 | throw new SwitchDriverSubHandshakeAlreadyStarted(); |
| 68 | } | 73 | } |
| ... | @@ -70,6 +75,8 @@ public class OFOpticalSwitchImplLINC13 extends AbstractOpenFlowSwitch { | ... | @@ -70,6 +75,8 @@ public class OFOpticalSwitchImplLINC13 extends AbstractOpenFlowSwitch { |
| 70 | try { | 75 | try { |
| 71 | sendHandshakeOFExperimenterPortDescRequest(); | 76 | sendHandshakeOFExperimenterPortDescRequest(); |
| 72 | } catch (IOException e) { | 77 | } catch (IOException e) { |
| 78 | + log.error("LINC-OE exception while sending experimenter port desc:", | ||
| 79 | + e.getMessage()); | ||
| 73 | e.printStackTrace(); | 80 | e.printStackTrace(); |
| 74 | } | 81 | } |
| 75 | } | 82 | } |
| ... | @@ -84,7 +91,7 @@ public class OFOpticalSwitchImplLINC13 extends AbstractOpenFlowSwitch { | ... | @@ -84,7 +91,7 @@ public class OFOpticalSwitchImplLINC13 extends AbstractOpenFlowSwitch { |
| 84 | 91 | ||
| 85 | @Override | 92 | @Override |
| 86 | public void processDriverHandshakeMessage(OFMessage m) { | 93 | public void processDriverHandshakeMessage(OFMessage m) { |
| 87 | - if (!startDriverHandshakeCalled) { | 94 | + if (!startDriverHandshakeCalled) { |
| 88 | throw new SwitchDriverSubHandshakeNotStarted(); | 95 | throw new SwitchDriverSubHandshakeNotStarted(); |
| 89 | } | 96 | } |
| 90 | if (driverHandshakeComplete.get()) { | 97 | if (driverHandshakeComplete.get()) { |
| ... | @@ -109,38 +116,49 @@ public class OFOpticalSwitchImplLINC13 extends AbstractOpenFlowSwitch { | ... | @@ -109,38 +116,49 @@ public class OFOpticalSwitchImplLINC13 extends AbstractOpenFlowSwitch { |
| 109 | case PACKET_IN: | 116 | case PACKET_IN: |
| 110 | break; | 117 | break; |
| 111 | case PORT_STATUS: | 118 | case PORT_STATUS: |
| 119 | + log.warn("****LINC-OE Port Status {} {}", getStringId(), m); | ||
| 120 | + processOFPortStatus((OFCircuitPortStatus) m); | ||
| 112 | break; | 121 | break; |
| 113 | case QUEUE_GET_CONFIG_REPLY: | 122 | case QUEUE_GET_CONFIG_REPLY: |
| 114 | break; | 123 | break; |
| 115 | case ROLE_REPLY: | 124 | case ROLE_REPLY: |
| 116 | break; | 125 | break; |
| 117 | case STATS_REPLY: | 126 | case STATS_REPLY: |
| 118 | - log.debug("LINC-OE : Received stats reply message {}", m); | 127 | + OFStatsReply stats = (OFStatsReply) m; |
| 119 | - processHandshakeOFExperimenterPortDescRequest( | 128 | + if (stats.getStatsType() == OFStatsType.EXPERIMENTER) { |
| 120 | - (OFCircuitPortsReply) m); | 129 | + log.warn("LINC-OE : Received stats reply message {}", m); |
| 121 | - driverHandshakeComplete.set(true); | 130 | + processHandshakeOFExperimenterPortDescRequest( |
| 122 | - try { | 131 | + (OFCircuitPortsReply) m); |
| 132 | + driverHandshakeComplete.set(true); | ||
| 133 | + } | ||
| 134 | + /*try { | ||
| 123 | testMA(); | 135 | testMA(); |
| 124 | testReverseMA(); | 136 | testReverseMA(); |
| 125 | } catch (IOException e) { | 137 | } catch (IOException e) { |
| 126 | e.printStackTrace(); | 138 | e.printStackTrace(); |
| 127 | - } | 139 | + }*/ |
| 128 | break; | 140 | break; |
| 129 | default: | 141 | default: |
| 130 | - log.debug("Received message {} during switch-driver " + | 142 | + log.warn("Received message {} during switch-driver " + |
| 131 | - "subhandshake " + "from switch {} ... " + | 143 | + "subhandshake " + "from switch {} ... " + |
| 132 | - "Ignoring message", m, | 144 | + "Ignoring message", m, |
| 133 | - getStringId()); | 145 | + getStringId()); |
| 134 | 146 | ||
| 135 | } | 147 | } |
| 136 | } | 148 | } |
| 137 | 149 | ||
| 150 | + //Todo | ||
| 151 | + public void processOFPortStatus(OFCircuitPortStatus ps) { | ||
| 152 | + log.debug("LINC-OE ..OF Port Status :", ps); | ||
| 153 | + | ||
| 154 | + } | ||
| 138 | 155 | ||
| 139 | private void processHandshakeOFExperimenterPortDescRequest( | 156 | private void processHandshakeOFExperimenterPortDescRequest( |
| 140 | OFCircuitPortsReply sr) { | 157 | OFCircuitPortsReply sr) { |
| 141 | Collection<OFPortOptical> entries = sr.getEntries(); | 158 | Collection<OFPortOptical> entries = sr.getEntries(); |
| 142 | List<OFPortDesc> ofPortDescList = new ArrayList<>(entries.size()); | 159 | List<OFPortDesc> ofPortDescList = new ArrayList<>(entries.size()); |
| 143 | for (OFPortOptical entry : entries) { | 160 | for (OFPortOptical entry : entries) { |
| 161 | + log.warn("LINC:OE port message {}", entry.toString()); | ||
| 144 | ofPortDescList.add(factory().buildPortDesc(). | 162 | ofPortDescList.add(factory().buildPortDesc(). |
| 145 | setPortNo(entry.getPortNo()) | 163 | setPortNo(entry.getPortNo()) |
| 146 | .setConfig(entry.getConfig()) | 164 | .setConfig(entry.getConfig()) |
| ... | @@ -148,11 +166,16 @@ public class OFOpticalSwitchImplLINC13 extends AbstractOpenFlowSwitch { | ... | @@ -148,11 +166,16 @@ public class OFOpticalSwitchImplLINC13 extends AbstractOpenFlowSwitch { |
| 148 | .setHwAddr(entry.getHwAddr()) | 166 | .setHwAddr(entry.getHwAddr()) |
| 149 | .setName(entry.getName()) | 167 | .setName(entry.getName()) |
| 150 | .build()); | 168 | .build()); |
| 169 | + | ||
| 151 | } | 170 | } |
| 152 | - setPortDescReply(factory().buildPortDescStatsReply(). | 171 | + setExperimenterPortDescReply(factory().buildPortDescStatsReply(). |
| 153 | setEntries(ofPortDescList).build()); | 172 | setEntries(ofPortDescList).build()); |
| 154 | } | 173 | } |
| 155 | 174 | ||
| 175 | + private void setExperimenterPortDescReply(OFPortDescStatsReply reply) { | ||
| 176 | + wPorts = reply; | ||
| 177 | + } | ||
| 178 | + | ||
| 156 | 179 | ||
| 157 | private void sendHandshakeOFExperimenterPortDescRequest() throws | 180 | private void sendHandshakeOFExperimenterPortDescRequest() throws |
| 158 | IOException { | 181 | IOException { |
| ... | @@ -160,11 +183,22 @@ public class OFOpticalSwitchImplLINC13 extends AbstractOpenFlowSwitch { | ... | @@ -160,11 +183,22 @@ public class OFOpticalSwitchImplLINC13 extends AbstractOpenFlowSwitch { |
| 160 | OFCircuitPortsRequest circuitPortsRequest = factory() | 183 | OFCircuitPortsRequest circuitPortsRequest = factory() |
| 161 | .buildCircuitPortsRequest().setXid(getNextTransactionId()) | 184 | .buildCircuitPortsRequest().setXid(getNextTransactionId()) |
| 162 | .build(); | 185 | .build(); |
| 163 | - log.debug("LINC-OE : Sending experimented circuit port stats " + | 186 | + log.warn("LINC-OE : Sending experimented circuit port stats " + |
| 164 | - "message " + | 187 | + "message " + |
| 165 | - "{}", | 188 | + "{}", |
| 166 | - circuitPortsRequest.toString()); | 189 | + circuitPortsRequest.toString()); |
| 167 | - sendMsg(Collections.<OFMessage>singletonList(circuitPortsRequest)); | 190 | + this.write(Collections.<OFMessage>singletonList(circuitPortsRequest)); |
| 191 | + } | ||
| 192 | + | ||
| 193 | + | ||
| 194 | + @Override | ||
| 195 | + public List<OFPortDesc> getPorts() { | ||
| 196 | + List<OFPortDesc> portEntries = new ArrayList<>(); | ||
| 197 | + portEntries.addAll(ports.getEntries()); | ||
| 198 | + if (wPorts != null) { | ||
| 199 | + portEntries.addAll(wPorts.getEntries()); | ||
| 200 | + } | ||
| 201 | + return Collections.unmodifiableList(portEntries); | ||
| 168 | } | 202 | } |
| 169 | 203 | ||
| 170 | 204 | ||
| ... | @@ -533,7 +567,7 @@ public class OFOpticalSwitchImplLINC13 extends AbstractOpenFlowSwitch { | ... | @@ -533,7 +567,7 @@ public class OFOpticalSwitchImplLINC13 extends AbstractOpenFlowSwitch { |
| 533 | 567 | ||
| 534 | @Override | 568 | @Override |
| 535 | public void write(OFMessage msg) { | 569 | public void write(OFMessage msg) { |
| 536 | - this.sendMsg(msg); | 570 | + this.channel.write(Collections.singletonList(msg)); |
| 537 | } | 571 | } |
| 538 | 572 | ||
| 539 | @Override | 573 | @Override |
| ... | @@ -546,4 +580,10 @@ public class OFOpticalSwitchImplLINC13 extends AbstractOpenFlowSwitch { | ... | @@ -546,4 +580,10 @@ public class OFOpticalSwitchImplLINC13 extends AbstractOpenFlowSwitch { |
| 546 | return false; | 580 | return false; |
| 547 | } | 581 | } |
| 548 | 582 | ||
| 583 | + @Override | ||
| 584 | + public boolean isOptical() { | ||
| 585 | + return true; | ||
| 586 | + } | ||
| 587 | + | ||
| 588 | + | ||
| 549 | } | 589 | } | ... | ... |
| ... | @@ -165,6 +165,11 @@ public class RoleManagerTest { | ... | @@ -165,6 +165,11 @@ public class RoleManagerTest { |
| 165 | } | 165 | } |
| 166 | 166 | ||
| 167 | @Override | 167 | @Override |
| 168 | + public boolean isOptical() { | ||
| 169 | + return false; | ||
| 170 | + } | ||
| 171 | + | ||
| 172 | + @Override | ||
| 168 | public void setAgent(OpenFlowAgent agent) { | 173 | public void setAgent(OpenFlowAgent agent) { |
| 169 | } | 174 | } |
| 170 | 175 | ... | ... |
| ... | @@ -118,8 +118,10 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr | ... | @@ -118,8 +118,10 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr |
| 118 | DeviceId did = deviceId(uri(dpid)); | 118 | DeviceId did = deviceId(uri(dpid)); |
| 119 | OpenFlowSwitch sw = controller.getSwitch(dpid); | 119 | OpenFlowSwitch sw = controller.getSwitch(dpid); |
| 120 | 120 | ||
| 121 | + Device.Type deviceType = sw.isOptical() ? Device.Type.ROADM : | ||
| 122 | + Device.Type.SWITCH; | ||
| 121 | DeviceDescription description = | 123 | DeviceDescription description = |
| 122 | - new DefaultDeviceDescription(did.uri(), Device.Type.SWITCH, | 124 | + new DefaultDeviceDescription(did.uri(), deviceType, |
| 123 | sw.manfacturerDescription(), | 125 | sw.manfacturerDescription(), |
| 124 | sw.hardwareDescription(), | 126 | sw.hardwareDescription(), |
| 125 | sw.softwareDescription(), | 127 | sw.softwareDescription(), | ... | ... |
| ... | @@ -360,6 +360,11 @@ public class OpenFlowDeviceProviderTest { | ... | @@ -360,6 +360,11 @@ public class OpenFlowDeviceProviderTest { |
| 360 | public void returnRoleAssertFailure(RoleState role) { | 360 | public void returnRoleAssertFailure(RoleState role) { |
| 361 | } | 361 | } |
| 362 | 362 | ||
| 363 | + @Override | ||
| 364 | + public boolean isOptical() { | ||
| 365 | + return false; | ||
| 366 | + } | ||
| 367 | + | ||
| 363 | } | 368 | } |
| 364 | 369 | ||
| 365 | } | 370 | } | ... | ... |
| ... | @@ -467,5 +467,10 @@ public class OpenFlowLinkProviderTest { | ... | @@ -467,5 +467,10 @@ public class OpenFlowLinkProviderTest { |
| 467 | public void returnRoleAssertFailure(RoleState role) { | 467 | public void returnRoleAssertFailure(RoleState role) { |
| 468 | } | 468 | } |
| 469 | 469 | ||
| 470 | + @Override | ||
| 471 | + public boolean isOptical() { | ||
| 472 | + return false; | ||
| 473 | + } | ||
| 474 | + | ||
| 470 | } | 475 | } |
| 471 | } | 476 | } | ... | ... |
| ... | @@ -398,6 +398,11 @@ public class OpenFlowPacketProviderTest { | ... | @@ -398,6 +398,11 @@ public class OpenFlowPacketProviderTest { |
| 398 | public void returnRoleAssertFailure(RoleState role) { | 398 | public void returnRoleAssertFailure(RoleState role) { |
| 399 | } | 399 | } |
| 400 | 400 | ||
| 401 | + @Override | ||
| 402 | + public boolean isOptical() { | ||
| 403 | + return false; | ||
| 404 | + } | ||
| 405 | + | ||
| 401 | } | 406 | } |
| 402 | 407 | ||
| 403 | } | 408 | } | ... | ... |
-
Please register or login to post a comment