Removed SONA security group table for now
Change-Id: I347274bee9eaf49b48d97b1e6212f8edea94be78
diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/OpenstackPipeline.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/OpenstackPipeline.java
index ebd95ed..b74b462 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/OpenstackPipeline.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/OpenstackPipeline.java
@@ -16,7 +16,6 @@
package org.onosproject.driver.pipeline;
import org.onlab.osgi.ServiceDirectory;
-import org.onlab.packet.Ethernet;
import org.onlab.packet.MacAddress;
import org.onosproject.core.ApplicationId;
import org.onosproject.core.CoreService;
@@ -33,11 +32,9 @@
import org.onosproject.net.flow.TrafficSelector;
import org.onosproject.net.flow.TrafficTreatment;
import org.onosproject.net.flow.criteria.Criterion;
-import org.onosproject.net.flow.criteria.EthTypeCriterion;
import org.onosproject.net.flow.criteria.IPCriterion;
import org.onosproject.net.flow.criteria.PortCriterion;
import org.onosproject.net.flow.criteria.TunnelIdCriterion;
-import org.onosproject.net.flow.criteria.UdpPortCriterion;
import org.onosproject.net.flow.instructions.Instruction;
import org.onosproject.net.flowobjective.FilteringObjective;
import org.onosproject.net.flowobjective.FlowObjectiveStore;
@@ -58,36 +55,31 @@
implements Pipeliner {
private final Logger log = getLogger(getClass());
- private CoreService coreService;
- private ServiceDirectory serviceDirectory;
protected FlowObjectiveStore flowObjectiveStore;
protected DeviceId deviceId;
protected ApplicationId appId;
protected FlowRuleService flowRuleService;
- protected static final int SRC_VNI_TABLE = 0;
- protected static final int ACL_TABLE = 1;
- protected static final int CT_TABLE = 2;
- protected static final int JUMP_TABLE = 3;
- protected static final int ROUTING_TABLE = 4;
- protected static final int FORWARDING_TABLE = 5;
- protected static final int DUMMY_TABLE = 10;
- protected static final int LAST_TABLE = FORWARDING_TABLE;
+ private static final int SRC_VNI_TABLE = 0;
+ private static final int JUMP_TABLE = 1;
+ private static final int ROUTING_TABLE = 2;
+ private static final int FORWARDING_TABLE = 3;
+ private static final int DUMMY_TABLE = 10;
+ private static final int LAST_TABLE = FORWARDING_TABLE;
private static final int DROP_PRIORITY = 0;
private static final int HIGH_PRIORITY = 30000;
private static final int TIME_OUT = 0;
- private static final int DHCP_SERVER_PORT = 67;
private static final String VIRTUAL_GATEWAY_MAC = "fe:00:00:00:00:02";
@Override
public void init(DeviceId deviceId, PipelinerContext context) {
super.init(deviceId, context);
- this.serviceDirectory = context.directory();
+ ServiceDirectory serviceDirectory = context.directory();
this.deviceId = deviceId;
- coreService = serviceDirectory.get(CoreService.class);
+ CoreService coreService = serviceDirectory.get(CoreService.class);
flowRuleService = serviceDirectory.get(FlowRuleService.class);
flowObjectiveStore = context.store();
@@ -134,10 +126,7 @@
private void initializePipeline() {
//TODO: For now, we do not support security group feature temporarily.
- connectTables(SRC_VNI_TABLE, JUMP_TABLE); // Table 0 -> Table 3
- //FIXME CT table needs to be reconstructed using OVS 2.5 connection tracking feature.
- connectTables(CT_TABLE, JUMP_TABLE); // Table 2 -> Table 3
- setUpTableMissEntry(ACL_TABLE);
+ connectTables(SRC_VNI_TABLE, JUMP_TABLE); // Table 0 -> Table 1
setupJumpTable();
}
@@ -160,25 +149,6 @@
applyRules(true, flowRule);
}
- private void setUpTableMissEntry(int table) {
- TrafficSelector.Builder selector = DefaultTrafficSelector.builder();
- TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
-
- treatment.drop();
-
- FlowRule flowRule = DefaultFlowRule.builder()
- .forDevice(deviceId)
- .withSelector(selector.build())
- .withTreatment(treatment.build())
- .withPriority(DROP_PRIORITY)
- .fromApp(appId)
- .makePermanent()
- .forTable(table)
- .build();
-
- applyRules(true, flowRule);
- }
-
private void setupJumpTable() {
TrafficSelector.Builder selector = DefaultTrafficSelector.builder();
TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
@@ -242,7 +212,8 @@
.withSelector(forwardingObjective.selector())
.withTreatment(forwardingObjective.treatment())
.withPriority(forwardingObjective.priority())
- .fromApp(forwardingObjective.appId());
+ .fromApp(forwardingObjective.appId())
+ .forTable(SRC_VNI_TABLE);
if (forwardingObjective.permanent()) {
ruleBuilder.makePermanent();
@@ -250,31 +221,13 @@
ruleBuilder.makeTemporary(TIME_OUT);
}
- //ARP & DHCP Rule
- EthTypeCriterion ethCriterion =
- (EthTypeCriterion) forwardingObjective.selector().getCriterion(Criterion.Type.ETH_TYPE);
- UdpPortCriterion udpPortCriterion = (UdpPortCriterion) forwardingObjective
- .selector().getCriterion(Criterion.Type.UDP_DST);
- if (ethCriterion != null) {
- if (ethCriterion.ethType().toShort() == Ethernet.TYPE_ARP ||
- ethCriterion.ethType().toShort() == Ethernet.TYPE_LLDP) {
- ruleBuilder.forTable(SRC_VNI_TABLE);
- return ruleBuilder.build();
- } else if (udpPortCriterion != null && udpPortCriterion.udpPort().toInt() == DHCP_SERVER_PORT) {
- ruleBuilder.forTable(SRC_VNI_TABLE);
- return ruleBuilder.build();
- }
- }
-
- return null;
+ return ruleBuilder.build();
}
private FlowRule processSpecific(ForwardingObjective forwardingObjective) {
log.debug("Processing specific forwarding objective");
TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
-
-
Optional<Instruction> group = forwardingObjective.treatment().immediate().stream()
.filter(i -> i.type() == Instruction.Type.GROUP).findAny();
int tableType = tableType(forwardingObjective);
@@ -301,7 +254,7 @@
return ruleBuilder.build();
}
- int tableType(ForwardingObjective fo) {
+ private int tableType(ForwardingObjective fo) {
IPCriterion ipSrc = (IPCriterion) fo.selector().getCriterion(Criterion.Type.IPV4_SRC);
IPCriterion ipDst = (IPCriterion) fo.selector().getCriterion(Criterion.Type.IPV4_DST);
@@ -316,22 +269,17 @@
// TODO: Add the Connection Tracking Table
if (inPort != null) {
return SRC_VNI_TABLE;
- } else if (output.isPresent()) {
- return FORWARDING_TABLE;
- } else if ((ipSrc != null && ipSrc.ip().prefixLength() == 32 &&
- ipDst != null && ipDst.ip().prefixLength() == 32) ||
- (ipSrc != null && ipSrc.ip().prefixLength() == 32 && ipDst == null) ||
- (ipDst != null && ipDst.ip().prefixLength() == 32 && ipSrc == null)) {
- return ACL_TABLE;
- } else if ((tunnelId != null && ipSrc != null && ipDst != null) || group.isPresent()) {
+ } else if ((tunnelId != null && ipSrc != null && ipDst != null) ||
+ (ipSrc != null && group.isPresent())) {
return ROUTING_TABLE;
+ } else if (output.isPresent() || (ipDst != null && group.isPresent())) {
+ return FORWARDING_TABLE;
}
return DUMMY_TABLE;
}
- int nextTable(int baseTable) {
-
+ private int nextTable(int baseTable) {
return baseTable + 1;
}