many fixes from different people in various place. Optical, FlowRuleManager, LinkDiscovery
Change-Id: Ie3302e80ee94bf2e41b3da7ac765557b1e7509fd
diff --git a/core/net/src/main/java/org/onlab/onos/net/flow/impl/FlowRuleManager.java b/core/net/src/main/java/org/onlab/onos/net/flow/impl/FlowRuleManager.java
index 67e0867..01514d4 100644
--- a/core/net/src/main/java/org/onlab/onos/net/flow/impl/FlowRuleManager.java
+++ b/core/net/src/main/java/org/onlab/onos/net/flow/impl/FlowRuleManager.java
@@ -299,7 +299,8 @@
private void extraneousFlow(FlowRule flowRule) {
checkNotNull(flowRule, FLOW_RULE_NULL);
checkValidity();
- removeFlowRules(flowRule);
+ FlowRuleProvider frp = getProvider(flowRule.deviceId());
+ frp.removeFlowRule(flowRule);
log.debug("Flow {} is on switch but not in store.", flowRule);
}
diff --git a/core/net/src/main/java/org/onlab/onos/net/statistic/impl/StatisticManager.java b/core/net/src/main/java/org/onlab/onos/net/statistic/impl/StatisticManager.java
index 4bca215..9b1a2e0 100644
--- a/core/net/src/main/java/org/onlab/onos/net/statistic/impl/StatisticManager.java
+++ b/core/net/src/main/java/org/onlab/onos/net/statistic/impl/StatisticManager.java
@@ -9,6 +9,7 @@
import org.onlab.onos.net.ConnectPoint;
import org.onlab.onos.net.Link;
import org.onlab.onos.net.Path;
+
import org.onlab.onos.net.flow.FlowRule;
import org.onlab.onos.net.flow.FlowRuleEvent;
import org.onlab.onos.net.flow.FlowRuleListener;
@@ -35,12 +36,14 @@
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected StatisticStore statisticStore;
+
private final InternalFlowRuleListener listener = new InternalFlowRuleListener();
@Activate
public void activate() {
flowRuleService.addListener(listener);
log.info("Started");
+
}
@Deactivate
@@ -81,7 +84,22 @@
@Override
public void event(FlowRuleEvent event) {
-
+// FlowRule rule = event.subject();
+// switch (event.type()) {
+// case RULE_ADDED:
+// case RULE_UPDATED:
+// if (rule instanceof FlowEntry) {
+// statisticStore.addOrUpdateStatistic((FlowEntry) rule);
+// }
+// break;
+// case RULE_ADD_REQUESTED:
+// statisticStore.prepareForStatistics(rule);
+// break;
+// case RULE_REMOVE_REQUESTED:
+// case RULE_REMOVED:
+// statisticStore.removeFromStatistics(rule);
+// break;
+// }
}
}
diff --git a/core/store/trivial/src/main/java/org/onlab/onos/store/trivial/impl/SimpleFlowRuleStore.java b/core/store/trivial/src/main/java/org/onlab/onos/store/trivial/impl/SimpleFlowRuleStore.java
index a96cacb..d312af5 100644
--- a/core/store/trivial/src/main/java/org/onlab/onos/store/trivial/impl/SimpleFlowRuleStore.java
+++ b/core/store/trivial/src/main/java/org/onlab/onos/store/trivial/impl/SimpleFlowRuleStore.java
@@ -177,6 +177,7 @@
public boolean deleteFlowRule(FlowRule rule) {
List<StoredFlowEntry> entries = getFlowEntries(rule.deviceId(), rule.id());
+
synchronized (entries) {
for (StoredFlowEntry entry : entries) {
if (entry.equals(rule)) {