\r
import java.util.List;\r
\r
-import org.opendaylight.openflowjava.protocol.impl.serialization.factories.EncodeConstants;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.EthertypeAction;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterAction;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.GroupIdAction;\r
}\r
for (ActionsList list : actionsList) {\r
Action action = list.getAction();\r
- if (action.getType().equals(Output.class)) {\r
+ if (action.getType().isAssignableFrom(Output.class)) {\r
encodeOutputAction(action, outBuffer);\r
- } else if (action.getType().equals(CopyTtlOut.class)) {\r
+ } else if (action.getType().isAssignableFrom(CopyTtlOut.class)) {\r
encodeCopyTtlOutAction(outBuffer);\r
- } else if (action.getType().equals(CopyTtlIn.class)) {\r
+ } else if (action.getType().isAssignableFrom(CopyTtlIn.class)) {\r
encodeCopyTtlInAction(outBuffer);\r
- } else if (action.getType().equals(SetMplsTtl.class)) {\r
+ } else if (action.getType().isAssignableFrom(SetMplsTtl.class)) {\r
encodeSetMplsTtltAction(action, outBuffer);\r
- } else if (action.getType().equals(DecMplsTtl.class)) {\r
+ } else if (action.getType().isAssignableFrom(DecMplsTtl.class)) {\r
encodeDecMplsTtlAction(outBuffer);\r
- } else if (action.getType().equals(PushVlan.class)) {\r
+ } else if (action.getType().isAssignableFrom(PushVlan.class)) {\r
encodePushVlanAction(action, outBuffer);\r
- } else if (action.getType().equals(PopVlan.class)) {\r
+ } else if (action.getType().isAssignableFrom(PopVlan.class)) {\r
encodePopVlanAction(outBuffer);\r
- } else if (action.getType().equals(PushMpls.class)) {\r
+ } else if (action.getType().isAssignableFrom(PushMpls.class)) {\r
encodePushMplsAction(action, outBuffer);\r
- } else if (action.getType().equals(PopMpls.class)) {\r
+ } else if (action.getType().isAssignableFrom(PopMpls.class)) {\r
encodePopMplsAction(action, outBuffer);\r
- } else if (action.getType().equals(SetQueue.class)) {\r
+ } else if (action.getType().isAssignableFrom(SetQueue.class)) {\r
encodeSetQueueAction(action, outBuffer);\r
- } else if (action.getType().equals(Group.class)) {\r
+ } else if (action.getType().isAssignableFrom(Group.class)) {\r
encodeGroupAction(action, outBuffer);\r
- } else if (action.getType().equals(SetNwTtl.class)) {\r
+ } else if (action.getType().isAssignableFrom(SetNwTtl.class)) {\r
encodeSetNwTtlAction(action, outBuffer);\r
- } else if (action.getType().equals(DecNwTtl.class)) {\r
+ } else if (action.getType().isAssignableFrom(DecNwTtl.class)) {\r
encodeDecNwTtlAction(outBuffer);\r
- } else if (action.getType().equals(SetField.class)) {\r
+ } else if (action.getType().isAssignableFrom(SetField.class)) {\r
encodeSetFieldAction(action, outBuffer);\r
- } else if (action.getType().equals(PushPbb.class)) {\r
+ } else if (action.getType().isAssignableFrom(PushPbb.class)) {\r
encodePushPbbAction(action, outBuffer);\r
- } else if (action.getType().equals(PopPbb.class)) {\r
+ } else if (action.getType().isAssignableFrom(PopPbb.class)) {\r
encodePopPbbAction(outBuffer);\r
- } else if (action.getType().equals(Experimenter.class)) {\r
+ } else if (action.getType().isAssignableFrom(Experimenter.class)) {\r
encodeExperimenterAction(action, outBuffer);\r
} \r
}\r
length += EncodeConstants.PADDING - paddingRemainder;\r
}\r
outBuffer.writeShort(length);\r
+ MatchSerializer.encodeMatchEntries(oxmField.getMatchEntries(), outBuffer);\r
+ ByteBufUtils.padBuffer(EncodeConstants.PADDING - paddingRemainder, outBuffer);\r
}\r
\r
private static void encodePushPbbAction(Action action, ByteBuf outBuffer) {\r
\r
private static void encodeCommonEthertype(Action action, ByteBuf outBuffer) {\r
final byte LENGTH_OF_ETHERTYPE_ACTION = 8;\r
- final byte ETHERTYPE_ACTION_PADDING = 2;\r
- outBuffer.writeShort(LENGTH_OF_ETHERTYPE_ACTION);\r
+ final byte ETHERTYPE_ACTION_PADDING = 2; \r
EthertypeAction ethertype = action.getAugmentation(EthertypeAction.class);\r
- outBuffer.writeShort(ethertype.getEthertype().getValue());\r
- ByteBufUtils.padBuffer(ETHERTYPE_ACTION_PADDING, outBuffer);\r
+ \r
+ if (null != ethertype && null != ethertype.getEthertype()) {\r
+ outBuffer.writeShort(LENGTH_OF_ETHERTYPE_ACTION);\r
+ \r
+ outBuffer.writeShort(ethertype.getEthertype().getValue());\r
+ ByteBufUtils.padBuffer(ETHERTYPE_ACTION_PADDING, outBuffer);\r
+ }\r
}\r
\r
/**\r
if (actionsList != null) {\r
for (ActionsList list : actionsList) {\r
Action action = list.getAction();\r
- if (action.getType().equals(Output.class)) {\r
+ if (action.getType().isAssignableFrom(Output.class)) {\r
lengthOfActions += OUTPUT_LENGTH;\r
- } else if (action.getType().equals(SetField.class)){\r
+ } else if (action.getType().isAssignableFrom(SetField.class)){\r
List<MatchEntries> entries = action.getAugmentation(OxmFieldsAction.class).getMatchEntries();\r
int actionLength = ACTION_HEADER_LENGTH + MatchSerializer.computeMatchEntriesLength(entries);\r
lengthOfActions += actionLength;\r