- if (action instanceof OutputAction)
- actionsList.add(salToOFOutputAction(action, actionBuilder, actionsListBuilder, version));
- else if (action instanceof GroupAction)
- actionsList.add(SalToOFGroupAction(action, actionBuilder, actionsListBuilder));
- else if (action instanceof CopyTtlOut)
- actionsList.add(SalToOFCopyTTLIOut(actionBuilder, actionsListBuilder));
- else if (action instanceof CopyTtlIn)
- actionsList.add(SalToOFCopyTTLIIn(actionBuilder, actionsListBuilder));
- else if (action instanceof SetMplsTtlAction)
- actionsList.add(SalToOFSetMplsTtl(action, actionBuilder, actionsListBuilder));
- else if (action instanceof DecMplsTtl)
- actionsList.add(SalToOFDecMplsTtl(actionBuilder, actionsListBuilder));
- else if (action instanceof PushVlanAction)
- actionsList.add(SalToOFPushVlanAction(action, actionBuilder, actionsListBuilder));
- else if (action instanceof PopVlanAction)
- actionsList.add(SalToOFPopVlan(action, actionBuilder, actionsListBuilder));
- else if (action instanceof PushMplsAction)
- actionsList.add(SalToOFPushMplsAction(action, actionBuilder, actionsListBuilder));
- else if (action instanceof PopMplsAction)
- actionsList.add(SalToOFPopMpls(action, actionBuilder, actionsListBuilder));
- else if (action instanceof SetQueueAction)
- actionsList.add(SalToOFSetQueue(action, actionBuilder, actionsListBuilder));
-
- else if (action instanceof SetNwTtlAction)
- actionsList.add(SalToOFSetNwTtl(action, actionBuilder, actionsListBuilder));
- else if (action instanceof DecNwTtl)
- actionsList.add(SalToOFDecNwTtl(action, actionBuilder, actionsListBuilder));
- else if (action instanceof SetField)
- actionsList.add(SalToOFSetField(action, actionBuilder, actionsListBuilder));
-
- else if (action instanceof PushPbbAction)
- actionsList.add(SalToOFPushPbbAction(action, actionBuilder, actionsListBuilder));
- else if (action instanceof PopPbbAction)
- actionsList.add(SalToOFPopPBB(action, actionBuilder, actionsListBuilder));
- else if (action instanceof ExperimenterAction)
- actionsList.add(SalToOFExperimenter(action, actionBuilder, actionsListBuilder));
-
+ if (action instanceof OutputActionCase)
+ ofAction = salToOFOutputAction(action, actionBuilder, version);
+ else if (action instanceof GroupActionCase)
+ ofAction = SalToOFGroupAction(action, actionBuilder);
+ else if (action instanceof CopyTtlOutCase)
+ ofAction = SalToOFCopyTTLIOut(actionBuilder);
+ else if (action instanceof CopyTtlInCase)
+ ofAction = SalToOFCopyTTLIIn(actionBuilder);
+ else if (action instanceof SetMplsTtlActionCase)
+ ofAction = SalToOFSetMplsTtl(action, actionBuilder);
+ else if (action instanceof DecMplsTtlCase)
+ ofAction = SalToOFDecMplsTtl(actionBuilder);
+ else if (action instanceof PushVlanActionCase)
+ ofAction = SalToOFPushVlanAction(action, actionBuilder, version);
+ else if (action instanceof PopVlanActionCase)
+ ofAction = (version == OFConstants.OFP_VERSION_1_0) ?
+ SalToOFStripVlan(actionBuilder, version)
+ : SalToOFPopVlan(actionBuilder);
+ else if (action instanceof PushMplsActionCase)
+ ofAction = SalToOFPushMplsAction(action, actionBuilder);
+ else if (action instanceof PopMplsActionCase)
+ ofAction = SalToOFPopMpls(action, actionBuilder);
+ else if (action instanceof SetQueueActionCase)
+ ofAction = SalToOFSetQueue(action, actionBuilder);
+ else if (action instanceof SetNwTtlActionCase)
+ ofAction = SalToOFSetNwTtl(action, actionBuilder);
+ else if (action instanceof DecNwTtlCase)
+ ofAction = SalToOFDecNwTtl(actionBuilder);
+ else if (action instanceof SetFieldCase)
+ ofAction = SalToOFSetField(action, actionBuilder, version, datapathid);
+ else if (action instanceof PushPbbActionCase)
+ ofAction = SalToOFPushPbbAction(action, actionBuilder);
+ else if (action instanceof PopPbbActionCase)
+ ofAction = SalToOFPopPBB(actionBuilder);
+
+ // 1.0 Actions
+ else if (action instanceof SetVlanIdActionCase) {
+ /*if (version == OFConstants.OFP_VERSION_1_0) {
+
+ } else {
+ List<Action> setVlanIdActionsList = convertToOF13(action, actionBuilder);
+ actionsList.addAll(setVlanIdActionsList);
+ }*/
+ ofAction = SalToOFSetVlanId(action, actionBuilder, version);
+ }
+ else if (action instanceof SetVlanPcpActionCase)
+ ofAction = SalToOFSetVlanpcp(action, actionBuilder, version);
+ else if (action instanceof StripVlanActionCase)
+ ofAction = SalToOFStripVlan(actionBuilder, version);
+ else if (action instanceof SetDlSrcActionCase)
+ ofAction = SalToOFSetDlSrc(action, actionBuilder, version);
+ else if (action instanceof SetDlDstActionCase)
+ ofAction = SalToOFSetDlDst(action, actionBuilder, version);
+ else if (action instanceof SetNwSrcActionCase)
+ ofAction = SalToOFSetNwSrc(action, actionBuilder, version);
+ else if (action instanceof SetNwDstActionCase)
+ ofAction = SalToOFSetNwDst(action, actionBuilder, version);
+ else if (action instanceof SetTpSrcActionCase) {
+ ofAction = SalToOFSetTpSrc(action, actionBuilder, version, IPProtocols.fromProtocolNum(flow.getMatch().
+ getIpMatch().getIpProtocol()));
+ }
+ else if (action instanceof SetTpDstActionCase) {
+ ofAction = SalToOFSetTpDst(action, actionBuilder, version, IPProtocols.fromProtocolNum(flow.getMatch().
+ getIpMatch().getIpProtocol()));
+ }
+ else if (action instanceof SetNwTosActionCase)
+ ofAction = SalToOFSetNwTos(action, actionBuilder, version);
+ else if (action instanceof GeneralExtensionGrouping) {
+
+ /**
+ * TODO: EXTENSION PROPOSAL (action, MD-SAL to OFJava)
+ * - we might need sessionContext as converter input
+ *
+ */
+
+ GeneralExtensionGrouping extensionCaseGrouping = (GeneralExtensionGrouping) action;
+ Extension extAction = extensionCaseGrouping.getExtension();
+ ConverterExtensionKey<? extends ExtensionKey> key = new ConverterExtensionKey<>(extensionCaseGrouping.getExtensionKey(), version);
+ ConvertorToOFJava<Action> convertor =
+ OFSessionUtil.getExtensionConvertorProvider().getConverter(key);
+ if (convertor != null) {
+ ofAction = convertor.convert(extAction);
+ }
+ } else {
+ // try vendor codecs
+ TypeVersionKey<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action> key =
+ new TypeVersionKey<>(
+ (Class<? extends org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action>) action.getImplementedInterface(),
+ version);
+ ConvertorActionToOFJava<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action, Action> convertor =
+ OFSessionUtil.getExtensionConvertorProvider().getConverter(key);
+ if (convertor != null) {
+ ofAction = convertor.convert(action);
+ }
+ }
+
+ if (ofAction != null) {
+ actionsList.add(ofAction);
+ }