commit | 54b406b1e4ca35292319a8c5594ac9189660ae3c | [log] [tgz] |
---|---|---|
author | Jonathan Hart <jono@onlab.us> | Fri Mar 06 16:24:14 2015 -0800 |
committer | Jonathan Hart <jono@onlab.us> | Mon Mar 09 18:33:29 2015 +0000 |
tree | eb690ecde0be79242a9e8263d19a77417f56b6ec | |
parent | 346b5b362d18210ba9ff2adccbe1479d1d64df2b [diff] |
Add push VLAN treatment and use it in BgpRouter groups Change-Id: I8c241fd776cdddd77969413736bd786c0d5a4828
diff --git a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilderVer13.java b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilderVer13.java index d253aef..cf4f490 100644 --- a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilderVer13.java +++ b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilderVer13.java
@@ -345,6 +345,10 @@ return factory().actions().decMplsTtl(); case VLAN_POP: return factory().actions().popVlan(); + case VLAN_PUSH: + PushHeaderInstructions pushVlanInstruction = (PushHeaderInstructions) l2m; + return factory().actions().pushVlan( + EthType.of(pushVlanInstruction.ethernetType())); default: log.warn("Unimplemented action type {}.", l2m.subtype()); break;
diff --git a/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupModBuilder.java b/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupModBuilder.java index 07ddbec..25ece46 100644 --- a/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupModBuilder.java +++ b/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupModBuilder.java
@@ -183,6 +183,7 @@ if (treatment == null) { return actions; } + for (Instruction i : treatment.instructions()) { switch (i.type()) { case DROP: @@ -254,6 +255,13 @@ (L2ModificationInstruction.ModVlanPcpInstruction) l2m; oxm = factory.oxms().vlanPcp(VlanPcp.of(vlanPcp.vlanPcp())); break; + case VLAN_POP: + return factory.actions().popVlan(); + case VLAN_PUSH: + L2ModificationInstruction.PushHeaderInstructions pushVlanInstruction + = (L2ModificationInstruction.PushHeaderInstructions) l2m; + return factory.actions().pushVlan( + EthType.of(pushVlanInstruction.ethernetType())); case MPLS_PUSH: L2ModificationInstruction.PushHeaderInstructions pushHeaderInstructions = (L2ModificationInstruction.PushHeaderInstructions) l2m;