- Changed the input parameter types of createTunnel() in SR manager
- Added removeGroup function in driver
Change-Id: I731b91264136798865fcd4c74e58fdd147b569b0
diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/SegmentRoutingManager.java b/src/main/java/net/onrc/onos/apps/segmentrouting/SegmentRoutingManager.java
index c12aeef..4c48e0a 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/SegmentRoutingManager.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/SegmentRoutingManager.java
@@ -935,11 +935,6 @@
// Policy routing classes and functions
// ************************************
- public void removeTunnel(int tunnelId) {
-
- }
-
-
class PolicyInfo {
int policyId;
@@ -1003,18 +998,24 @@
* @param tunnelId Node IDs for the tunnel
* @param Ids tunnel ID
*/
- public boolean createTunnel(int tunnelId, List<String> Ids) {
+ public boolean createTunnel(String tid, List<Dpid> dpids) {
+ int tunnelId = Integer.parseInt(tid);
if (tunnelId < 0) {
log.debug("Tunnel ID should be posivtive integer.");
return false;
}
- if (Ids.isEmpty() || Ids.size() < 2) {
+ if (dpids.isEmpty() || dpids.size() < 2) {
log.debug("Wrong tunnel information");
return false;
}
+ List<String> Ids = new ArrayList<String>();
+ for (Dpid dpid: dpids) {
+ Ids.add(getMplsLabel(dpid.toString()));
+ }
+
HashMap<String, PolicyRouteInfo> stitchingRule = getStitchingRule(Ids);
stitchInfo.put(Integer.valueOf(tunnelId), stitchingRule);
if (stitchingRule == null) {
@@ -1262,6 +1263,13 @@
}
+ public void removeTunnel(int tunnelId) {
+
+
+
+
+ }
+
// ************************************
// Utility functions
// ************************************
@@ -1542,9 +1550,9 @@
// Test functions
// ************************************
+ /*
private void runTest() {
-
if (testMode == POLICY_ADD1) {
String[] routeArray = {"101", "105", "110"};
List<String> routeList = new ArrayList<String>();
@@ -1602,6 +1610,71 @@
}
}
+ */
+
+ private void runTest() {
+
+ if (testMode == POLICY_ADD1) {
+ String[] routeArray = {"101", "105", "110"};
+ List<Dpid> routeList = new ArrayList<Dpid>();
+ for (int i = 0; i < routeArray.length; i++) {
+ Dpid dpid = getSwitchFromNodeId(routeArray[i]).getDpid();
+ routeList.add(dpid);
+ }
+
+ if (createTunnel("1", routeList)) {
+ IPv4Net srcIp = new IPv4Net("10.0.1.1/24");
+ IPv4Net dstIp = new IPv4Net("10.1.2.1/24");
+
+ log.debug("Set the policy 1");
+ this.setPolicyTable(1, null, null, Ethernet.TYPE_IPV4, srcIp,
+ dstIp, IPv4.PROTOCOL_ICMP, (short)-1, (short)-1, 10000,
+ 1);
+ testMode = POLICY_ADD2;
+ testTask.reschedule(10, TimeUnit.SECONDS);
+ }
+ else {
+ // retry it
+ testTask.reschedule(5, TimeUnit.SECONDS);
+ }
+ }
+ else if (testMode == POLICY_ADD2) {
+ String[] routeArray = {"101", "102", "103", "104", "105", "108",
+ "110"};
+ List<Dpid> routeList = new ArrayList<Dpid>();
+ for (int i = 0; i < routeArray.length; i++) {
+ Dpid dpid = getSwitchFromNodeId(routeArray[i]).getDpid();
+ routeList.add(dpid);
+ }
+
+ if (createTunnel("2", routeList)) {
+ IPv4Net srcIp = new IPv4Net("10.0.1.1/24");
+ IPv4Net dstIp = new IPv4Net("10.1.2.1/24");
+
+ log.debug("Set the policy 2");
+ this.setPolicyTable(2, null, null, Ethernet.TYPE_IPV4, srcIp,
+ dstIp, IPv4.PROTOCOL_ICMP, (short)-1, (short)-1, 20000,
+ 2);
+ testMode = POLICY_REMOVE2;
+ testTask.reschedule(10, TimeUnit.SECONDS);
+ }
+ else {
+ log.debug("Retry it");
+ testTask.reschedule(5, TimeUnit.SECONDS);
+ }
+ }
+ else if (testMode == POLICY_REMOVE2){
+ log.debug("Remove the policy 2");
+ this.removePolicy(2);
+ testMode = POLICY_REMOVE1;
+ testTask.reschedule(10, TimeUnit.SECONDS);
+ }
+ else if (testMode == POLICY_REMOVE1){
+ log.debug("Remove the policy 1");
+ this.removePolicy(1);
+ }
+
+ }
private void runTest1() {
diff --git a/src/main/java/net/onrc/onos/core/drivermanager/OFSwitchImplCPqD13.java b/src/main/java/net/onrc/onos/core/drivermanager/OFSwitchImplCPqD13.java
index 93632e7..4e11b28 100644
--- a/src/main/java/net/onrc/onos/core/drivermanager/OFSwitchImplCPqD13.java
+++ b/src/main/java/net/onrc/onos/core/drivermanager/OFSwitchImplCPqD13.java
@@ -880,7 +880,6 @@
return;
}
-
private void createGroupForMplsLabel(int groupId, String nodeId,
int nextGroupId, boolean bos) {
List<BucketInfo> buckets = new ArrayList<BucketInfo>();
@@ -1156,6 +1155,25 @@
}
}
+ private void deleteGroup(int groupId) {
+
+ List<OFMessage> msglist = new ArrayList<OFMessage>();
+ OFGroup group = OFGroup.of(groupId);
+
+ OFMessage gm = factory.buildGroupDelete()
+ .setGroup(group)
+ .setGroupType(OFGroupType.SELECT)
+ .setXid(getNextTransactionId())
+ .build();
+ msglist.add(gm);
+ try {
+ write(msglist);
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
private void modifyEcmpGroup(EcmpInfo ecmpInfo) {
List<OFMessage> msglist = new ArrayList<OFMessage>();
OFGroup group = OFGroup.of(ecmpInfo.groupId);