import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber;\r
\r
/**\r
- * Class for easy deserialization of actions\r
- * \r
+ * Deserializes ofp_actions (OpenFlow v1.3)\r
* @author timotej.kubas\r
* @author michal.polkorab\r
*/\r
private static final byte ACTION_HEADER_LENGTH = 4;\r
\r
/**\r
+ * Creates list of actions (OpenFlow v1.3)\r
* @param input input ByteBuf\r
* @param actionsLength length of buckets\r
* @return ActionsList\r
int currentActionLength = 0;\r
switch(input.readUnsignedShort()) {\r
case 0: currentActionLength = input.readUnsignedShort(); //outputActionLength\r
- actionsList.add(ActionsDeserializer.createOutputAction(input, actionsListBuilder));\r
+ actionsList.add(createOutputAction(input, actionsListBuilder));\r
break;\r
case 11: \r
currentActionLength = input.readUnsignedShort();//empty header length\r
- actionsList.add(ActionsDeserializer.createCopyTtlOutAction(input, actionsListBuilder));\r
+ actionsList.add(createCopyTtlOutAction(input, actionsListBuilder));\r
break;\r
\r
case 12: \r
currentActionLength = input.readUnsignedShort();//empty header length\r
- actionsList.add(ActionsDeserializer.createCopyTtlInAction(input, actionsListBuilder));\r
+ actionsList.add(createCopyTtlInAction(input, actionsListBuilder));\r
break;\r
\r
case 15: \r
currentActionLength = input.readUnsignedShort();//empty header length\r
- actionsList.add(ActionsDeserializer.createSetMplsTtlAction(input, actionsListBuilder));\r
+ actionsList.add(createSetMplsTtlAction(input, actionsListBuilder));\r
break;\r
\r
case 16: \r
currentActionLength = input.readUnsignedShort();//empty header length\r
- actionsList.add(ActionsDeserializer.createDecMplsTtlOutAction(input, actionsListBuilder));\r
+ actionsList.add(createDecMplsTtlOutAction(input, actionsListBuilder));\r
break;\r
\r
case 17: \r
currentActionLength = input.readUnsignedShort();\r
- actionsList.add(ActionsDeserializer.createPushVlanAction(input, actionsListBuilder));\r
+ actionsList.add(createPushVlanAction(input, actionsListBuilder));\r
break;\r
\r
case 18: \r
currentActionLength = input.readUnsignedShort();//empty header length\r
- actionsList.add(ActionsDeserializer.createPopVlanAction(input, actionsListBuilder));\r
+ actionsList.add(createPopVlanAction(input, actionsListBuilder));\r
break;\r
\r
case 19: \r
currentActionLength = input.readUnsignedShort();//8\r
- actionsList.add(ActionsDeserializer.createPushMplsAction(input, actionsListBuilder));\r
+ actionsList.add(createPushMplsAction(input, actionsListBuilder));\r
break;\r
\r
case 20: \r
currentActionLength = input.readUnsignedShort();//8\r
- actionsList.add(ActionsDeserializer.createPopMplsAction(input, actionsListBuilder));\r
+ actionsList.add(createPopMplsAction(input, actionsListBuilder));\r
break;\r
\r
case 21: \r
currentActionLength = input.readUnsignedShort();\r
- actionsList.add(ActionsDeserializer.createSetQueueAction(input, actionsListBuilder));\r
+ actionsList.add(createSetQueueAction(input, actionsListBuilder));\r
break;\r
\r
case 22: \r
currentActionLength = input.readUnsignedShort();//8\r
- actionsList.add(ActionsDeserializer.createGroupAction(input, actionsListBuilder));\r
+ actionsList.add(createGroupAction(input, actionsListBuilder));\r
break;\r
\r
case 23: \r
currentActionLength = input.readUnsignedShort();//8\r
- actionsList.add(ActionsDeserializer.createSetNwTtlAction(input, actionsListBuilder));\r
+ actionsList.add(createSetNwTtlAction(input, actionsListBuilder));\r
break;\r
\r
case 24: \r
currentActionLength = input.readUnsignedShort();//empty header length\r
- actionsList.add(ActionsDeserializer.createDecNwTtlAction(input, actionsListBuilder));\r
+ actionsList.add(createDecNwTtlAction(input, actionsListBuilder));\r
break;\r
\r
case 25:\r
currentActionLength = input.readUnsignedShort();//8\r
- actionsList.add(ActionsDeserializer.createSetFieldAction(input, actionsListBuilder,\r
- currentActionLength));\r
+ actionsList.add(createSetFieldAction(input, actionsListBuilder, currentActionLength));\r
break; \r
case 26: \r
currentActionLength = input.readUnsignedShort();//8\r
- actionsList.add(ActionsDeserializer.createPushPbbAction(input, actionsListBuilder));\r
+ actionsList.add(createPushPbbAction(input, actionsListBuilder));\r
break;\r
\r
case 27: \r
currentActionLength = input.readUnsignedShort();//empty header length\r
- actionsList.add(ActionsDeserializer.createPopPbbAction(input, actionsListBuilder));\r
+ actionsList.add(createPopPbbAction(input, actionsListBuilder));\r
break;\r
\r
case 0xFFFF: \r
currentActionLength = input.readUnsignedShort();\r
- actionsList.add(ActionsDeserializer.createExperimenterAction(input, actionsListBuilder));\r
+ actionsList.add(createExperimenterAction(input, actionsListBuilder));\r
break;\r
default: \r
break;\r
return actionsList;\r
}\r
\r
- \r
- /**\r
- * @param action input action that contains empty header\r
- * @param in input ByteBuf \r
- * @param actionsListBuilder \r
- * @return Action\r
- */\r
private static ActionsList createEmptyHeader(Class<? extends org.opendaylight.yang.gen.v1.\r
urn.opendaylight.openflow.common.types.rev130731.Action> action,\r
ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
return actionsListBuilder.build();\r
}\r
\r
- /**\r
- * @param in input ByteBuf\r
- * @param actionsListBuilder \r
- * @return Action\r
- */\r
- public static ActionsList createCopyTtlInAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+ private static ActionsList createCopyTtlInAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
return createEmptyHeader(CopyTtlIn.class, in, actionsListBuilder);\r
}\r
- \r
- /**\r
- * @param in input ByteBuf\r
- * @param actionsListBuilder \r
- * @return Action\r
- */\r
- public static ActionsList createCopyTtlOutAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+\r
+ private static ActionsList createCopyTtlOutAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
return createEmptyHeader(CopyTtlOut.class, in, actionsListBuilder);\r
}\r
\r
- /**\r
- * @param in input ByteBuf\r
- * @param actionsListBuilder \r
- * @return Action\r
- */\r
- public static ActionsList createDecMplsTtlOutAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+ private static ActionsList createDecMplsTtlOutAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
return createEmptyHeader(DecMplsTtl.class, in, actionsListBuilder);\r
}\r
\r
- /**\r
- * @param in input ByteBuf\r
- * @param actionsListBuilder \r
- * @return Action\r
- */\r
- public static ActionsList createPopVlanAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+ private static ActionsList createPopVlanAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
return createEmptyHeader(PopVlan.class, in, actionsListBuilder);\r
}\r
\r
- /**\r
- * @param in input ByteBuf\r
- * @param actionsListBuilder \r
- * @return Action\r
- */\r
- public static ActionsList createDecNwTtlAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+ private static ActionsList createDecNwTtlAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
return createEmptyHeader(DecNwTtl.class, in, actionsListBuilder);\r
}\r
\r
- /**\r
- * @param in input ByteBuf\r
- * @param actionsListBuilder \r
- * @return Action\r
- */\r
- public static ActionsList createPopPbbAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+ private static ActionsList createPopPbbAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
return createEmptyHeader(PopPbb.class, in, actionsListBuilder);\r
}\r
\r
- /**\r
- * @param in input ByteBuf\r
- * @param actionsListBuilder \r
- * @return ActionList\r
- */\r
- public static ActionsList createOutputAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+ private static ActionsList createOutputAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
final byte PADDING_IN_OUTPUT_ACTIONS_HEADER = 6;\r
ActionBuilder actionBuilder = new ActionBuilder();\r
actionBuilder.setType(Output.class);\r
actionBuilder.addAugmentation(MaxLengthAction.class, maxLen.build());\r
actionsListBuilder.setAction(actionBuilder.build());\r
in.skipBytes(PADDING_IN_OUTPUT_ACTIONS_HEADER);\r
- \r
return actionsListBuilder.build();\r
}\r
\r
- /**\r
- * @param in input ByteBuf\r
- * @param actionsListBuilder \r
- * @return ActionList\r
- */\r
- public static ActionsList createSetMplsTtlAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+ private static ActionsList createSetMplsTtlAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
final byte PADDING_IN_SET_MPLS_TTL_ACTIONS_HEADER = 3;\r
ActionBuilder actionBuilder = new ActionBuilder();\r
actionBuilder.setType(SetMplsTtl.class);\r
actionBuilder.addAugmentation(MplsTtlAction.class, mplsTtl.build());\r
actionsListBuilder.setAction(actionBuilder.build());\r
in.skipBytes(PADDING_IN_SET_MPLS_TTL_ACTIONS_HEADER);\r
- \r
return actionsListBuilder.build();\r
}\r
\r
- /**\r
- * @param action input action that contains push\r
- * @param in input ByteBuf\r
- * @param actionsListBuilder \r
- * @return ActionList\r
- */\r
private static ActionsList createPushAction(Class<? extends org.opendaylight.yang.gen.\r
v1.urn.opendaylight.openflow.common.types.rev130731.Action> action,\r
ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
actionBuilder.addAugmentation(EthertypeAction.class, etherType.build());\r
actionsListBuilder.setAction(actionBuilder.build());\r
in.skipBytes(PADDING_IN_PUSH_VLAN_ACTIONS_HEADER);\r
- \r
return actionsListBuilder.build();\r
}\r
\r
- /**\r
- * @param in input ByteBuf\r
- * @param actionsListBuilder \r
- * @return Action\r
- */\r
- public static ActionsList createPushVlanAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+ private static ActionsList createPushVlanAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
return createPushAction(PushVlan.class, in, actionsListBuilder);\r
}\r
\r
- /**\r
- * @param in input ByteBuf\r
- * @param actionsListBuilder \r
- * @return Action\r
- */\r
- public static ActionsList createPushMplsAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+ private static ActionsList createPushMplsAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
return createPushAction(PushMpls.class, in, actionsListBuilder);\r
}\r
\r
- /**\r
- * @param in input ByteBuf\r
- * @param actionsListBuilder \r
- * @return Action\r
- */\r
- public static ActionsList createPopMplsAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+ private static ActionsList createPopMplsAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
return createPushAction(PopMpls.class, in, actionsListBuilder);\r
}\r
\r
- /**\r
- * @param in input ByteBuf\r
- * @param actionsListBuilder \r
- * @return Action\r
- */\r
- public static ActionsList createPushPbbAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+ private static ActionsList createPushPbbAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
return createPushAction(PushPbb.class, in, actionsListBuilder);\r
}\r
\r
- /**\r
- * @param in input ByteBuf\r
- * @param actionsListBuilder \r
- * @return ActionList\r
- */\r
- public static ActionsList createSetQueueAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+ private static ActionsList createSetQueueAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
ActionBuilder actionBuilder = new ActionBuilder();\r
actionBuilder.setType(SetQueue.class);\r
QueueIdActionBuilder queueId = new QueueIdActionBuilder();\r
queueId.setQueueId(in.readUnsignedInt());\r
actionBuilder.addAugmentation(QueueIdAction.class, queueId.build());\r
actionsListBuilder.setAction(actionBuilder.build());\r
- \r
return actionsListBuilder.build();\r
}\r
\r
- /**\r
- * @param in input ByteBuf\r
- * @param actionsListBuilder \r
- * @return ActionList\r
- */\r
- public static ActionsList createGroupAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+ private static ActionsList createGroupAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
ActionBuilder actionBuilder = new ActionBuilder();\r
actionBuilder.setType(Group.class);\r
GroupIdActionBuilder group = new GroupIdActionBuilder();\r
group.setGroupId(in.readUnsignedInt());\r
actionBuilder.addAugmentation(GroupIdAction.class, group.build());\r
actionsListBuilder.setAction(actionBuilder.build());\r
- \r
return actionsListBuilder.build();\r
}\r
\r
- /**\r
- * @param in input ByteBuf\r
- * @param actionsListBuilder \r
- * @return ActionList\r
- */\r
- public static ActionsList createExperimenterAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+ private static ActionsList createExperimenterAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
ActionBuilder actionBuilder = new ActionBuilder();\r
actionBuilder.setType(Experimenter.class);\r
ExperimenterActionBuilder experimenter = new ExperimenterActionBuilder();\r
experimenter.setExperimenter(in.readUnsignedInt());\r
actionBuilder.addAugmentation(ExperimenterAction.class, experimenter.build());\r
actionsListBuilder.setAction(actionBuilder.build());\r
- \r
return actionsListBuilder.build();\r
}\r
\r
- /**\r
- * @param in input ByteBuf\r
- * @param actionsListBuilder \r
- * @return ActionList\r
- */\r
- public static ActionsList createSetNwTtlAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+ private static ActionsList createSetNwTtlAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
final byte PADDING_IN_NW_TTL_ACTIONS_HEADER = 3;\r
ActionBuilder actionBuilder = new ActionBuilder();\r
actionBuilder.setType(SetNwTtl.class);\r
actionBuilder.addAugmentation(NwTtlAction.class, nwTtl.build());\r
actionsListBuilder.setAction(actionBuilder.build());\r
in.skipBytes(PADDING_IN_NW_TTL_ACTIONS_HEADER);\r
- \r
return actionsListBuilder.build();\r
}\r
\r
- /**\r
- * @param in input ByteBuf\r
- * @param actionsListBuilder \r
- * @param actionLength length of action\r
- * @return ActionList\r
- */\r
- public static ActionsList createSetFieldAction(ByteBuf in, ActionsListBuilder actionsListBuilder, int actionLength) {\r
+ private static ActionsList createSetFieldAction(ByteBuf in, ActionsListBuilder actionsListBuilder, int actionLength) {\r
ActionBuilder actionBuilder = new ActionBuilder();\r
actionBuilder.setType(SetField.class);\r
OxmFieldsActionBuilder matchEntries = new OxmFieldsActionBuilder();\r
matchEntries.setMatchEntries(MatchDeserializer.createMatchEntry(in, actionLength - ACTION_HEADER_LENGTH));\r
actionBuilder.addAugmentation(OxmFieldsAction.class, matchEntries.build());\r
actionsListBuilder.setAction(actionBuilder.build());\r
- \r
return actionsListBuilder.build();\r
}\r
}\r