In this commit: CORD-799
Bug fix for host-update to not remove and add the same IP addr
NPE fix in ofdpa3pipeline
Removing unused code in ofdpa2pipeline
Ability to add or revoke port filters for port-updates
Retry filters retry for a longer time
Bug fix for suppress ports to not suppress filters
Filters now sent only by master instance
Removing the MPLS BOS=0 rules for now until inconsitent hardware behavior is fixed
Change-Id: I8b4ee4af6de263531e0696af86e65f1c502f5f85
diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/Ofdpa2Pipeline.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/Ofdpa2Pipeline.java
index 23249f7..fd677c6 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/Ofdpa2Pipeline.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/Ofdpa2Pipeline.java
@@ -387,8 +387,8 @@
for (FlowRule tmacRule : processEthDstFilter(portCriterion, ethCriterion,
vidCriterion, assignedVlan,
applicationId)) {
- log.debug("adding MAC filtering rules in TMAC table: {} for dev: {}",
- tmacRule, deviceId);
+ log.debug("{} MAC filtering rules in TMAC table: {} for dev: {}",
+ (install) ? "adding" : "removing", tmacRule, deviceId);
ops = install ? ops.add(tmacRule) : ops.remove(tmacRule);
}
}
@@ -420,50 +420,25 @@
});
for (FlowRule filteringRule : filteringRules) {
- log.debug("adding VLAN filtering rule in VLAN table: {} for dev: {}",
- filteringRule, deviceId);
+ log.debug("{} VLAN filtering rule in VLAN table: {} for dev: {}",
+ (install) ? "adding" : "removing", filteringRule, deviceId);
ops = install ? ops.add(filteringRule) : ops.remove(filteringRule);
}
ops.newStage();
for (FlowRule assignmentRule : assignmentRules) {
- log.debug("adding VLAN assignment rule in VLAN table: {} for dev: {}",
- assignmentRule, deviceId);
+ log.debug("{} VLAN assignment rule in VLAN table: {} for dev: {}",
+ (install) ? "adding" : "removing", assignmentRule, deviceId);
ops = install ? ops.add(assignmentRule) : ops.remove(assignmentRule);
}
}
- for (IPCriterion ipaddr : ips) {
- // since we ignore port information for IP rules, and the same (gateway) IP
- // can be configured on multiple ports, we make sure that we send
- // only a single rule to the switch.
- if (!sentIpFilters.contains(ipaddr)) {
- sentIpFilters.add(ipaddr);
- log.debug("adding IP filtering rules in ACL table {} for dev: {}",
- ipaddr, deviceId);
- TrafficSelector.Builder selector = DefaultTrafficSelector.builder();
- TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
- selector.matchEthType(Ethernet.TYPE_IPV4);
- selector.matchIPDst(ipaddr.ip());
- treatment.setOutput(PortNumber.CONTROLLER);
- FlowRule rule = DefaultFlowRule.builder()
- .forDevice(deviceId)
- .withSelector(selector.build())
- .withTreatment(treatment.build())
- .withPriority(HIGHEST_PRIORITY)
- .fromApp(applicationId)
- .makePermanent()
- .forTable(ACL_TABLE).build();
- ops = install ? ops.add(rule) : ops.remove(rule);
- }
- }
-
// apply filtering flow rules
flowRuleService.apply(ops.build(new FlowRuleOperationsContext() {
@Override
public void onSuccess(FlowRuleOperations ops) {
- log.info("Applied {} filtering rules in device {}",
+ log.debug("Applied {} filtering rules in device {}",
ops.stages().get(0).size(), deviceId);
pass(filt);
}
@@ -776,7 +751,7 @@
* the flow rule
*/
protected Collection<FlowRule> processVersatile(ForwardingObjective fwd) {
- log.info("Processing versatile forwarding objective:{} in dev:{}",
+ log.debug("Processing versatile forwarding objective:{} in dev:{}",
fwd.id(), deviceId);
EthTypeCriterion ethType =
diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/Ofdpa3Pipeline.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/Ofdpa3Pipeline.java
index 1cce714..4df1e2d 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/Ofdpa3Pipeline.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/Ofdpa3Pipeline.java
@@ -493,6 +493,10 @@
* otherwise null
*/
private OutputInstruction getOutputInstruction(TrafficTreatment treatment) {
+ if (treatment == null) {
+ return null;
+ }
+
for (Instruction instruction : treatment.allInstructions()) {
if (instruction.type() == Instruction.Type.OUTPUT) {
return (OutputInstruction) instruction;