blob: 0c9573198b01e169eda2c9cbc4c1f4ff3da8abe2 [file] [log] [blame]
Saurav Dasd8b97002015-05-14 23:42:49 -07001package org.onosproject.driver.pipeline;
2
3import static org.slf4j.LoggerFactory.getLogger;
4
5import org.onlab.packet.Ethernet;
6import org.onosproject.net.flow.DefaultFlowRule;
7import org.onosproject.net.flow.DefaultTrafficSelector;
8import org.onosproject.net.flow.DefaultTrafficTreatment;
9import org.onosproject.net.flow.FlowRule;
10import org.onosproject.net.flow.FlowRuleOperations;
11import org.onosproject.net.flow.FlowRuleOperationsContext;
12import org.onosproject.net.flow.TrafficSelector;
13import org.onosproject.net.flow.TrafficTreatment;
14import org.slf4j.Logger;
15
Saurav Dasdecd7a62015-05-16 22:39:47 -070016/**
17 * Driver for Corsa TTP.
18 *
19 */
Saurav Dasd8b97002015-05-14 23:42:49 -070020public class CorsaPipeline extends OVSCorsaPipeline {
21
22 private final Logger log = getLogger(getClass());
23
24 @Override
25 protected void processVlanMplsTable(boolean install) {
26 TrafficSelector.Builder selector = DefaultTrafficSelector.builder();
27 TrafficTreatment.Builder treatment = DefaultTrafficTreatment
28 .builder();
29 FlowRuleOperations.Builder ops = FlowRuleOperations.builder();
30 FlowRule rule;
31 // corsa uses non-OF-standard way to match on presence of VLAN tags
32 selector.matchEthType(Ethernet.TYPE_VLAN);
33 treatment.transition(VLAN_TABLE);
34
35 rule = DefaultFlowRule.builder()
36 .forDevice(deviceId)
37 .withSelector(selector.build())
38 .withTreatment(treatment.build())
39 .withPriority(CONTROLLER_PRIORITY)
40 .fromApp(appId)
41 .makePermanent()
42 .forTable(VLAN_MPLS_TABLE).build();
43
Saurav Dasd8b97002015-05-14 23:42:49 -070044 ops = install ? ops.add(rule) : ops.remove(rule);
45
46 flowRuleService.apply(ops.build(new FlowRuleOperationsContext() {
47 @Override
48 public void onSuccess(FlowRuleOperations ops) {
49 log.info("Provisioned vlan/mpls table");
50 }
51
52 @Override
53 public void onError(FlowRuleOperations ops) {
54 log.info(
55 "Failed to provision vlan/mpls table");
56 }
57 }));
58
59 }
60
61}