Committed by
Gerrit Code Review
fixed the LINC-OE behaviour. Handshaker behaviours must use
sendHandshakeMessage during the handshake rather than sendMsg. Change-Id: I50b3da2c592f77dd786da68d42e5dc289407cd37
Showing
7 changed files
with
52 additions
and
34 deletions
... | @@ -45,7 +45,7 @@ public class DefaultSwitchHandShaker extends AbstractOpenFlowSwitch { | ... | @@ -45,7 +45,7 @@ public class DefaultSwitchHandShaker extends AbstractOpenFlowSwitch { |
45 | if (factory().getVersion() == OFVersion.OF_10) { | 45 | if (factory().getVersion() == OFVersion.OF_10) { |
46 | OFFlowAdd.Builder fmBuilder = factory().buildFlowAdd(); | 46 | OFFlowAdd.Builder fmBuilder = factory().buildFlowAdd(); |
47 | fmBuilder.setPriority(LOWEST_PRIORITY); | 47 | fmBuilder.setPriority(LOWEST_PRIORITY); |
48 | - sendMsg(fmBuilder.build()); | 48 | + sendHandshakeMessage(fmBuilder.build()); |
49 | } | 49 | } |
50 | } | 50 | } |
51 | 51 | ... | ... |
... | @@ -64,7 +64,7 @@ public class OFCorsaSwitchDriver extends AbstractOpenFlowSwitch { | ... | @@ -64,7 +64,7 @@ public class OFCorsaSwitchDriver extends AbstractOpenFlowSwitch { |
64 | .setXid(barrierXid).build(); | 64 | .setXid(barrierXid).build(); |
65 | 65 | ||
66 | 66 | ||
67 | - sendMsg(Collections.singletonList(barrier)); | 67 | + sendHandshakeMessage(barrier); |
68 | 68 | ||
69 | } | 69 | } |
70 | 70 | ... | ... |
... | @@ -64,9 +64,6 @@ public class OFOpticalSwitchImplLINC13 extends AbstractOpenFlowSwitch { | ... | @@ -64,9 +64,6 @@ public class OFOpticalSwitchImplLINC13 extends AbstractOpenFlowSwitch { |
64 | 64 | ||
65 | @Override | 65 | @Override |
66 | public boolean isDriverHandshakeComplete() { | 66 | public boolean isDriverHandshakeComplete() { |
67 | - if (!startDriverHandshakeCalled) { | ||
68 | - throw new SwitchDriverSubHandshakeNotStarted(); | ||
69 | - } | ||
70 | return driverHandshakeComplete.get(); | 67 | return driverHandshakeComplete.get(); |
71 | } | 68 | } |
72 | 69 | ||
... | @@ -161,7 +158,7 @@ public class OFOpticalSwitchImplLINC13 extends AbstractOpenFlowSwitch { | ... | @@ -161,7 +158,7 @@ public class OFOpticalSwitchImplLINC13 extends AbstractOpenFlowSwitch { |
161 | "message " + | 158 | "message " + |
162 | "{}", | 159 | "{}", |
163 | circuitPortsRequest.toString()); | 160 | circuitPortsRequest.toString()); |
164 | - this.sendMsg(Collections.<OFMessage>singletonList(circuitPortsRequest)); | 161 | + this.sendHandshakeMessage(circuitPortsRequest); |
165 | } | 162 | } |
166 | 163 | ||
167 | @Override | 164 | @Override | ... | ... |
... | @@ -222,7 +222,7 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { | ... | @@ -222,7 +222,7 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { |
222 | .build(); | 222 | .build(); |
223 | msglist.add(getAC); | 223 | msglist.add(getAC); |
224 | 224 | ||
225 | - sendMsg(msglist); | 225 | + msglist.stream().forEach(m -> sendHandshakeMessage(m)); |
226 | } | 226 | } |
227 | 227 | ||
228 | private void decodeAsyncGetReply(OFAsyncGetReply rep) { | 228 | private void decodeAsyncGetReply(OFAsyncGetReply rep) { |
... | @@ -245,21 +245,21 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { | ... | @@ -245,21 +245,21 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { |
245 | OFMessage gtf = factory.buildTableFeaturesStatsRequest() | 245 | OFMessage gtf = factory.buildTableFeaturesStatsRequest() |
246 | .setXid(getNextTransactionId()) | 246 | .setXid(getNextTransactionId()) |
247 | .build(); | 247 | .build(); |
248 | - sendMsg(gtf); | 248 | + sendHandshakeMessage(gtf); |
249 | } | 249 | } |
250 | 250 | ||
251 | private void sendGroupFeaturesRequest() throws IOException { | 251 | private void sendGroupFeaturesRequest() throws IOException { |
252 | OFMessage gfr = factory.buildGroupFeaturesStatsRequest() | 252 | OFMessage gfr = factory.buildGroupFeaturesStatsRequest() |
253 | .setXid(getNextTransactionId()) | 253 | .setXid(getNextTransactionId()) |
254 | .build(); | 254 | .build(); |
255 | - sendMsg(gfr); | 255 | + sendHandshakeMessage(gfr); |
256 | } | 256 | } |
257 | 257 | ||
258 | private void sendGroupDescRequest() throws IOException { | 258 | private void sendGroupDescRequest() throws IOException { |
259 | OFMessage gdr = factory.buildGroupDescStatsRequest() | 259 | OFMessage gdr = factory.buildGroupDescStatsRequest() |
260 | .setXid(getNextTransactionId()) | 260 | .setXid(getNextTransactionId()) |
261 | .build(); | 261 | .build(); |
262 | - sendMsg(gdr); | 262 | + sendHandshakeMessage(gdr); |
263 | } | 263 | } |
264 | 264 | ||
265 | /*Create L2 interface groups for all physical ports | 265 | /*Create L2 interface groups for all physical ports |
... | @@ -290,12 +290,12 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { | ... | @@ -290,12 +290,12 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { |
290 | .setGroupType(OFGroupType.INDIRECT) | 290 | .setGroupType(OFGroupType.INDIRECT) |
291 | .setXid(getNextTransactionId()) | 291 | .setXid(getNextTransactionId()) |
292 | .build(); | 292 | .build(); |
293 | + sendHandshakeMessage(gmAdd); | ||
293 | msglist.add(gmAdd); | 294 | msglist.add(gmAdd); |
294 | l2groups.put(pnum, gl2); | 295 | l2groups.put(pnum, gl2); |
295 | } | 296 | } |
296 | } | 297 | } |
297 | log.debug("Creating {} L2 groups in sw {}", msglist.size(), getStringId()); | 298 | log.debug("Creating {} L2 groups in sw {}", msglist.size(), getStringId()); |
298 | - sendMsg(msglist); | ||
299 | } | 299 | } |
300 | 300 | ||
301 | private int getVlanConfig(int portnum) { | 301 | private int getVlanConfig(int portnum) { |
... | @@ -394,9 +394,10 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { | ... | @@ -394,9 +394,10 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { |
394 | .setGroupType(OFGroupType.INDIRECT) | 394 | .setGroupType(OFGroupType.INDIRECT) |
395 | .setXid(getNextTransactionId()) | 395 | .setXid(getNextTransactionId()) |
396 | .build(); | 396 | .build(); |
397 | - msglist.add(gmAdd); | 397 | + sendHandshakeMessage(gmAdd); |
398 | + | ||
398 | } | 399 | } |
399 | - sendMsg(msglist); | 400 | + |
400 | log.debug("Creating {} L3 groups in sw {}", msglist.size(), getStringId()); | 401 | log.debug("Creating {} L3 groups in sw {}", msglist.size(), getStringId()); |
401 | } | 402 | } |
402 | 403 | ||
... | @@ -407,7 +408,7 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { | ... | @@ -407,7 +408,7 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { |
407 | * instead of the IP ttl | 408 | * instead of the IP ttl |
408 | */ | 409 | */ |
409 | private void setL25Groups() throws IOException { | 410 | private void setL25Groups() throws IOException { |
410 | - List<OFMessage> msglist = new ArrayList<OFMessage>(); | 411 | + |
411 | for (OFGroup gl2 : l2groups.values()) { | 412 | for (OFGroup gl2 : l2groups.values()) { |
412 | int gnum = gl2.getGroupNumber(); | 413 | int gnum = gl2.getGroupNumber(); |
413 | int portnum = gnum & 0x0000ffff; | 414 | int portnum = gnum & 0x0000ffff; |
... | @@ -445,11 +446,12 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { | ... | @@ -445,11 +446,12 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { |
445 | .setGroupType(OFGroupType.INDIRECT) | 446 | .setGroupType(OFGroupType.INDIRECT) |
446 | .setXid(getNextTransactionId()) | 447 | .setXid(getNextTransactionId()) |
447 | .build(); | 448 | .build(); |
448 | - msglist.add(gmAdd); | 449 | + sendHandshakeMessage(gmAdd); |
450 | + | ||
449 | } | 451 | } |
450 | } | 452 | } |
451 | - sendMsg(msglist); | 453 | + |
452 | - log.debug("Creating {} MPLS groups in sw {}", msglist.size(), getStringId()); | 454 | + log.debug("Created MPLS groups in sw {}", getStringId()); |
453 | } | 455 | } |
454 | 456 | ||
455 | /* Using ECMP groups | 457 | /* Using ECMP groups |
... | @@ -560,13 +562,14 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { | ... | @@ -560,13 +562,14 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { |
560 | .setHardTimeout(0) | 562 | .setHardTimeout(0) |
561 | .setXid(getNextTransactionId()) | 563 | .setXid(getNextTransactionId()) |
562 | .build(); | 564 | .build(); |
563 | - msglist.add(flowEntry); | 565 | + sendHandshakeMessage(flowEntry); |
566 | + | ||
564 | } | 567 | } |
565 | } | 568 | } |
566 | // table-vlan has no table-miss entry, and so packets that miss are | 569 | // table-vlan has no table-miss entry, and so packets that miss are |
567 | // essentially dropped | 570 | // essentially dropped |
568 | - sendMsg(msglist); | 571 | + |
569 | - log.debug("Adding {} vlan-rules in sw {}", msglist.size(), getStringId()); | 572 | + log.debug("Added vlan-rules in sw {}", getStringId()); |
570 | } | 573 | } |
571 | 574 | ||
572 | private void populateTableTMac() throws IOException { | 575 | private void populateTableTMac() throws IOException { |
... | @@ -617,7 +620,7 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { | ... | @@ -617,7 +620,7 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { |
617 | List<OFMessage> msglist = new ArrayList<OFMessage>(2); | 620 | List<OFMessage> msglist = new ArrayList<OFMessage>(2); |
618 | msglist.add(ipEntry); | 621 | msglist.add(ipEntry); |
619 | msglist.add(mplsEntry); | 622 | msglist.add(mplsEntry); |
620 | - sendMsg(msglist); | 623 | + msglist.stream().forEach(m -> sendHandshakeMessage(m)); |
621 | } | 624 | } |
622 | 625 | ||
623 | private List<String> getMyIps() { // send to controller | 626 | private List<String> getMyIps() { // send to controller |
... | @@ -762,10 +765,10 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { | ... | @@ -762,10 +765,10 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { |
762 | .setHardTimeout(0) | 765 | .setHardTimeout(0) |
763 | .setXid(getNextTransactionId()) | 766 | .setXid(getNextTransactionId()) |
764 | .build(); | 767 | .build(); |
765 | - msglist.add(myIpEntry); | 768 | + sendHandshakeMessage(myIpEntry); |
769 | + | ||
766 | } | 770 | } |
767 | - sendMsg(msglist); | 771 | + log.debug("Added {} my-ip-rules in sw {}", getStringId()); |
768 | - log.debug("Adding {} my-ip-rules in sw {}", msglist.size(), getStringId()); | ||
769 | } | 772 | } |
770 | 773 | ||
771 | private void populateMySubnets() throws IOException { | 774 | private void populateMySubnets() throws IOException { |
... | @@ -804,11 +807,10 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { | ... | @@ -804,11 +807,10 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { |
804 | .setHardTimeout(0) | 807 | .setHardTimeout(0) |
805 | .setXid(getNextTransactionId()) | 808 | .setXid(getNextTransactionId()) |
806 | .build(); | 809 | .build(); |
807 | - msglist.add(myIpEntry); | 810 | + sendHandshakeMessage(myIpEntry); |
811 | + | ||
808 | } | 812 | } |
809 | - sendMsg(msglist); | 813 | + log.debug("Added subnet-ip-rules in sw {}", getStringId()); |
810 | - log.debug("Adding {} subnet-ip-rules in sw {}", msglist.size(), getStringId()); | ||
811 | - msglist.clear(); | ||
812 | } | 814 | } |
813 | 815 | ||
814 | private void populateRoutes() throws IOException { | 816 | private void populateRoutes() throws IOException { |
... | @@ -948,10 +950,10 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { | ... | @@ -948,10 +950,10 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { |
948 | .setHardTimeout(0) | 950 | .setHardTimeout(0) |
949 | .setXid(getNextTransactionId()) | 951 | .setXid(getNextTransactionId()) |
950 | .build(); | 952 | .build(); |
953 | + sendHandshakeMessage(myMetaEntry); | ||
951 | msglist.add(myMetaEntry); | 954 | msglist.add(myMetaEntry); |
952 | 955 | ||
953 | } | 956 | } |
954 | - sendMsg(msglist); | ||
955 | log.debug("Adding {} next-hop-router-rules in sw {}", msglist.size(), | 957 | log.debug("Adding {} next-hop-router-rules in sw {}", msglist.size(), |
956 | getStringId()); | 958 | getStringId()); |
957 | 959 | ||
... | @@ -1007,9 +1009,9 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { | ... | @@ -1007,9 +1009,9 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { |
1007 | .setHardTimeout(0) | 1009 | .setHardTimeout(0) |
1008 | .setXid(getNextTransactionId()) | 1010 | .setXid(getNextTransactionId()) |
1009 | .build(); | 1011 | .build(); |
1010 | - msglist.add(myIpEntry); | 1012 | + sendHandshakeMessage(myIpEntry); |
1011 | } | 1013 | } |
1012 | - sendMsg(msglist); | 1014 | + |
1013 | log.debug("Adding {} next-hop-host-rules in sw {}", msglist.size(), getStringId()); | 1015 | log.debug("Adding {} next-hop-host-rules in sw {}", msglist.size(), getStringId()); |
1014 | } | 1016 | } |
1015 | 1017 | ||
... | @@ -1081,9 +1083,10 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { | ... | @@ -1081,9 +1083,10 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { |
1081 | .setHardTimeout(0) | 1083 | .setHardTimeout(0) |
1082 | .setXid(getNextTransactionId()) | 1084 | .setXid(getNextTransactionId()) |
1083 | .build(); | 1085 | .build(); |
1086 | + sendHandshakeMessage(myMplsEntry); | ||
1084 | msglist.add(myMplsEntry); | 1087 | msglist.add(myMplsEntry); |
1085 | } | 1088 | } |
1086 | - sendMsg(msglist); | 1089 | + |
1087 | log.debug("Adding {} mpls-forwarding-rules in sw {}", msglist.size(), | 1090 | log.debug("Adding {} mpls-forwarding-rules in sw {}", msglist.size(), |
1088 | getStringId()); | 1091 | getStringId()); |
1089 | 1092 | ||
... | @@ -1166,7 +1169,7 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { | ... | @@ -1166,7 +1169,7 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { |
1166 | .setXid(getNextTransactionId()) | 1169 | .setXid(getNextTransactionId()) |
1167 | .build(); | 1170 | .build(); |
1168 | 1171 | ||
1169 | - sendMsg(tableMissEntry); | 1172 | + sendHandshakeMessage(tableMissEntry); |
1170 | } | 1173 | } |
1171 | 1174 | ||
1172 | private void sendBarrier(boolean finalBarrier) { | 1175 | private void sendBarrier(boolean finalBarrier) { |
... | @@ -1179,7 +1182,7 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { | ... | @@ -1179,7 +1182,7 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { |
1179 | .setXid(xid) | 1182 | .setXid(xid) |
1180 | .build(); | 1183 | .build(); |
1181 | 1184 | ||
1182 | - sendMsg(br); | 1185 | + sendHandshakeMessage(br); |
1183 | } | 1186 | } |
1184 | 1187 | ||
1185 | @Override | 1188 | @Override | ... | ... |
... | @@ -136,6 +136,12 @@ public abstract class AbstractOpenFlowSwitch extends AbstractHandlerBehaviour | ... | @@ -136,6 +136,12 @@ public abstract class AbstractOpenFlowSwitch extends AbstractHandlerBehaviour |
136 | "a non role request message"); | 136 | "a non role request message"); |
137 | } | 137 | } |
138 | 138 | ||
139 | + public final void sendHandshakeMessage(OFMessage message) { | ||
140 | + if (!this.isDriverHandshakeComplete()) { | ||
141 | + channel.write(Collections.singletonList(message)); | ||
142 | + } | ||
143 | + } | ||
144 | + | ||
139 | @Override | 145 | @Override |
140 | public final boolean isConnected() { | 146 | public final boolean isConnected() { |
141 | return this.connected; | 147 | return this.connected; | ... | ... |
... | @@ -210,4 +210,12 @@ public interface OpenFlowSwitchDriver extends OpenFlowSwitch, HandlerBehaviour { | ... | @@ -210,4 +210,12 @@ public interface OpenFlowSwitchDriver extends OpenFlowSwitch, HandlerBehaviour { |
210 | */ | 210 | */ |
211 | void sendRoleRequest(OFMessage message); | 211 | void sendRoleRequest(OFMessage message); |
212 | 212 | ||
213 | + /** | ||
214 | + * Allows the handshaker behaviour to send messages during the | ||
215 | + * handshake phase only. | ||
216 | + * | ||
217 | + * @param message an OpenFlow message | ||
218 | + */ | ||
219 | + void sendHandshakeMessage(OFMessage message); | ||
220 | + | ||
213 | } | 221 | } | ... | ... |
... | @@ -229,6 +229,10 @@ public class RoleManagerTest { | ... | @@ -229,6 +229,10 @@ public class RoleManagerTest { |
229 | } | 229 | } |
230 | 230 | ||
231 | @Override | 231 | @Override |
232 | + public void sendHandshakeMessage(OFMessage message) { | ||
233 | + } | ||
234 | + | ||
235 | + @Override | ||
232 | public boolean connectSwitch() { | 236 | public boolean connectSwitch() { |
233 | return false; | 237 | return false; |
234 | } | 238 | } | ... | ... |
-
Please register or login to post a comment