[ovs-discuss] [controller-dev] Add a flow with action "go to table" from OpenDayLight controller to Open vSwitch ?
Anhn Nguyen
nna4888 at gmail.com
Thu Jul 24 11:10:53 UTC 2014
Thank you all for your reply. Hope that I can find something :)
@Christopher: I think TABLE in this page mentions to a logical port, not
the table in "table group".
On 23 July 2014 19:07, Rob Adams <readams at readams.net> wrote:
> Here's some code from my project that does it. Unfortunately it's quite
> complicated.
>
> some helper methods:
> protected FlowBuilder base() {
> return new FlowBuilder()
> .setTableId(getTableId())
> .setBarrier(false)
> .setHardTimeout(0)
> .setIdleTimeout(0);
> }
>
>
> public static Instructions gotoTableInstructions(short tableId) {
> return new InstructionsBuilder()
> .setInstruction(ImmutableList.of(new InstructionBuilder()
> .setOrder(Integer.valueOf(0))
> .setInstruction(gotoTableIns(tableId))
> .build()))
> .build();
> }
> public static final InstanceIdentifier<Node>
> createNodePath(final NodeId nodeId) {
> return InstanceIdentifier.builder(Nodes.class)
> .child(Node.class, new NodeKey(nodeId))
> .build();
> }
>
> /**
> * Creates a table path from a node ID and table ID
> *
> * @param nodePath
> * @param tableKey
> * @return
> */
> public static final InstanceIdentifier<Table>
> createTablePath(final NodeId nodeId,
> final short tableId) {
> return createNodePath(nodeId).builder()
> .augmentation(FlowCapableNode.class)
> .child(Table.class, new TableKey(tableId))
> .build();
> }
>
> /**
> * Creates a path for particular flow, by appending flow-specific
> information
> * to table path.
> *
> * @param table
> * @param flowKey
> * @return
> */
> public static InstanceIdentifier<Flow>
> createFlowPath(final InstanceIdentifier<Table> table,
> final FlowKey flowKey) {
> return table.child(Flow.class, flowKey);
> }
>
> /**
> * Creates a path for particular flow, by appending flow-specific
> information
> * to table path.
> *
> * @param table
> * @param flowId
> * @return
> */
> public static InstanceIdentifier<Flow>
> createFlowPath(final InstanceIdentifier<Table> table,
> final FlowId flowId) {
> return createFlowPath(table, new FlowKey(flowId));
> }
>
> The actual code cobbled together from a few other helpers:
>
> ReadWriteTransaction t = ctx.dataBroker.newReadWriteTransaction();
> InstanceIdentifier<Table> tiid =
> FlowUtils.createTablePath(nodeId, getTableId());
> Optional<Table> r =
> t.read(LogicalDatastoreType.CONFIGURATION, tiid).get();
>
> FlowBuilder flowb = base()
> .setId(flowid)
> .setPriority(Integer.valueOf(200))
> .setMatch(new MatchBuilder()
> .setInPort(port)
> .build())
>
> .setInstructions(FlowUtils.gotoTableInstructions((short)(getTableId()+1)));
> writeFlow(t, tiid, flowb.build());
> t.put(LogicalDatastoreType.CONFIGURATION,
> FlowUtils.createFlowPath(tiid, flow.getId()),
> flow);
>
>
>
>
> On Wed, Jul 23, 2014 at 9:56 AM, Anhn Nguyen <nna4888 at gmail.com> wrote:
>
>> Dear all,
>>
>> Can anyone tell me how to add a flow with action "go to table" from
>> OpenDayLight controller to Open vSwitch, instead of doing this command from
>> mininet:
>> *sudo ovs-ofctl -O OpenFlow13 add-flow s1
>> table=0,in_port=2,actions=goto_table:1*
>>
>> I followed this instruction
>> https://wiki.opendaylight.org/view/OpenDaylight_OpenFlow_Plugin:End_to_End_Flows#Push_your_flow but
>> there is no action as I want.
>>
>> Thank you so much.
>>
>> Best regards,
>> Anhn Nguyen.
>>
>> _______________________________________________
>> controller-dev mailing list
>> controller-dev at lists.opendaylight.org
>> https://lists.opendaylight.org/mailman/listinfo/controller-dev
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://openvswitch.org/pipermail/ovs-discuss/attachments/20140724/ae695641/attachment-0002.html>
More information about the discuss
mailing list