aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SpringOpenTTPDell.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SpringOpenTTPDell.java')
-rw-r--r--framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SpringOpenTTPDell.java204
1 files changed, 0 insertions, 204 deletions
diff --git a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SpringOpenTTPDell.java b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SpringOpenTTPDell.java
deleted file mode 100644
index 91f2679c..00000000
--- a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SpringOpenTTPDell.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * Copyright 2015 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.driver.pipeline;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-import org.onlab.packet.Ethernet;
-import org.onlab.packet.MacAddress;
-import org.onlab.packet.VlanId;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.net.behaviour.NextGroup;
-import org.onosproject.net.flow.DefaultFlowRule;
-import org.onosproject.net.flow.DefaultTrafficSelector;
-import org.onosproject.net.flow.DefaultTrafficTreatment;
-import org.onosproject.net.flow.FlowRule;
-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.EthCriterion;
-import org.onosproject.net.flow.criteria.EthTypeCriterion;
-import org.onosproject.net.flow.criteria.IPCriterion;
-import org.onosproject.net.flow.criteria.MplsCriterion;
-import org.onosproject.net.flow.criteria.VlanIdCriterion;
-import org.onosproject.net.flow.instructions.Instruction;
-import org.onosproject.net.flowobjective.FilteringObjective;
-import org.onosproject.net.flowobjective.ForwardingObjective;
-import org.onosproject.net.flowobjective.ObjectiveError;
-import org.onosproject.net.group.Group;
-import org.onosproject.net.group.GroupKey;
-
-/**
- * Spring-open driver implementation for Dell hardware switches.
- */
-public class SpringOpenTTPDell extends SpringOpenTTP {
-
- /* Table IDs to be used for Dell Open Segment Routers*/
- private static final int DELL_TABLE_VLAN = 17;
- private static final int DELL_TABLE_TMAC = 18;
- private static final int DELL_TABLE_IPV4_UNICAST = 30;
- private static final int DELL_TABLE_MPLS = 25;
- private static final int DELL_TABLE_ACL = 40;
-
- //TODO: Store this info in the distributed store.
- private MacAddress deviceTMac = null;
-
- public SpringOpenTTPDell() {
- super();
- vlanTableId = DELL_TABLE_VLAN;
- tmacTableId = DELL_TABLE_TMAC;
- ipv4UnicastTableId = DELL_TABLE_IPV4_UNICAST;
- mplsTableId = DELL_TABLE_MPLS;
- aclTableId = DELL_TABLE_ACL;
- }
-
- @Override
- protected void setTableMissEntries() {
- // No need to set table-miss-entries in Dell switches
- return;
- }
-
- @Override
- //Dell switches need ETH_DST based match condition in all IP table entries.
- //So this method overrides the default spring-open behavior and adds
- //ETH_DST match condition while pushing IP table flow rules
- protected Collection<FlowRule> processSpecific(ForwardingObjective fwd) {
- log.debug("Processing specific");
- TrafficSelector selector = fwd.selector();
- EthTypeCriterion ethType = (EthTypeCriterion) selector
- .getCriterion(Criterion.Type.ETH_TYPE);
- if ((ethType == null) ||
- (ethType.ethType().toShort() != Ethernet.TYPE_IPV4) &&
- (ethType.ethType().toShort() != Ethernet.MPLS_UNICAST)) {
- log.debug("processSpecific: Unsupported "
- + "forwarding objective criteraia");
- fail(fwd, ObjectiveError.UNSUPPORTED);
- return Collections.emptySet();
- }
-
- TrafficSelector.Builder filteredSelectorBuilder =
- DefaultTrafficSelector.builder();
- int forTableId = -1;
- if (ethType.ethType().toShort() == Ethernet.TYPE_IPV4) {
- if (deviceTMac == null) {
- log.debug("processSpecific: ETH_DST filtering "
- + "objective is not set which is required "
- + "before sending a IPv4 forwarding objective");
- //TODO: Map the error to more appropriate error code.
- fail(fwd, ObjectiveError.DEVICEMISSING);
- return Collections.emptySet();
- }
- filteredSelectorBuilder = filteredSelectorBuilder
- .matchEthType(Ethernet.TYPE_IPV4)
- .matchEthDst(deviceTMac)
- .matchIPDst(((IPCriterion) selector
- .getCriterion(Criterion.Type.IPV4_DST))
- .ip());
- forTableId = ipv4UnicastTableId;
- log.debug("processing IPv4 specific forwarding objective");
- } else {
- filteredSelectorBuilder = filteredSelectorBuilder
- .matchEthType(Ethernet.MPLS_UNICAST)
- .matchMplsLabel(((MplsCriterion)
- selector.getCriterion(Criterion.Type.MPLS_LABEL)).label());
- //TODO: Add Match for BoS
- //if (selector.getCriterion(Criterion.Type.MPLS_BOS) != null) {
- //}
- forTableId = mplsTableId;
- log.debug("processing MPLS specific forwarding objective");
- }
-
- TrafficTreatment.Builder treatmentBuilder = DefaultTrafficTreatment
- .builder();
- if (fwd.treatment() != null) {
- for (Instruction i : fwd.treatment().allInstructions()) {
- treatmentBuilder.add(i);
- }
- }
-
- if (fwd.nextId() != null) {
- NextGroup next = flowObjectiveStore.getNextGroup(fwd.nextId());
-
- if (next != null) {
- GroupKey key = appKryo.deserialize(next.data());
-
- Group group = groupService.getGroup(deviceId, key);
-
- if (group == null) {
- log.warn("The group left!");
- fail(fwd, ObjectiveError.GROUPMISSING);
- return Collections.emptySet();
- }
- treatmentBuilder.group(group.id());
- log.debug("Adding OUTGROUP action");
- } else {
- log.warn("processSpecific: No associated next objective object");
- fail(fwd, ObjectiveError.GROUPMISSING);
- return Collections.emptySet();
- }
- }
-
- TrafficSelector filteredSelector = filteredSelectorBuilder.build();
- TrafficTreatment treatment = treatmentBuilder.transition(aclTableId)
- .build();
-
- FlowRule.Builder ruleBuilder = DefaultFlowRule.builder()
- .fromApp(fwd.appId()).withPriority(fwd.priority())
- .forDevice(deviceId).withSelector(filteredSelector)
- .withTreatment(treatment);
-
- if (fwd.permanent()) {
- ruleBuilder.makePermanent();
- } else {
- ruleBuilder.makeTemporary(fwd.timeout());
- }
-
- ruleBuilder.forTable(forTableId);
- return Collections.singletonList(ruleBuilder.build());
-
- }
-
- @Override
- //Dell switches need ETH_DST based match condition in all IP table entries.
- //So while processing the ETH_DST based filtering objective, store
- //the device MAC to be used locally to use it while pushing the IP rules.
- protected List<FlowRule> processEthDstFilter(EthCriterion ethCriterion,
- VlanIdCriterion vlanIdCriterion,
- FilteringObjective filt,
- VlanId assignedVlan,
- ApplicationId applicationId) {
- // Store device termination Mac to be used in IP flow entries
- deviceTMac = ethCriterion.mac();
-
- log.debug("For now not adding any TMAC rules "
- + "into Dell switches as it is ignoring");
-
- return Collections.emptyList();
- }
-
- @Override
- protected List<FlowRule> processVlanIdFilter(VlanIdCriterion vlanIdCriterion,
- FilteringObjective filt,
- VlanId assignedVlan,
- ApplicationId applicationId) {
- log.debug("For now not adding any VLAN rules "
- + "into Dell switches as it is ignoring");
-
- return Collections.emptyList();
- }
-} \ No newline at end of file