@Override public Future<RpcResult<Void>> testFlow(TestFlowInput input) { AddFlowInputBuilder flow = new AddFlowInputBuilder(); flow.setPriority(2); flow.setMatch(createMatchBld().build()); flow.setInstructions(createDecNwTtlInstructionsBld().build()); flow.setBarrier(Boolean.FALSE); BigInteger value = BigInteger.valueOf(10L); flow.setCookie(new FlowCookie(value)); flow.setCookieMask(new FlowCookie(value)); flow.setHardTimeout(0); flow.setIdleTimeout(0); flow.setInstallHw(false); flow.setStrict(false); flow.setContainerName(null); flow.setFlags(new FlowModFlags(false, false, false, false, true)); flow.setTableId((short) 0); flow.setFlowName("NiciraFLOW"); // Construct the flow instance id final InstanceIdentifier<Node> flowInstanceId = InstanceIdentifier .builder(Nodes.class) // File under nodes .child(Node.class, new NodeKey(new NodeId("openflow:1"))).build(); // A particular node identified by nodeKey flow.setNode(new NodeRef(flowInstanceId)); pushFlowViaRpc(flow.build()); return Futures.immediateFuture(RpcResultBuilder.<Void>status(true).build()); }
/** * Construct an RPC input to install the specified flow entry. * * @param flowId A VTN flow ID. * @param vfent A {@link VtnFlowEntry} instance. * @return A {@link AddFlowInput} instance. */ public static AddFlowInput createAddFlowInput(VtnFlowId flowId, VtnFlowEntry vfent) { SalNode snode = SalNode.create(vfent.getNode()); Short table = vfent.getTableId(); FlowTableRef tref = new FlowTableRef(snode.getFlowTableIdentifier(table)); // Associate a unique MD-SAL flow ID. FlowId fid = createMdFlowId(flowId.getValue(), vfent.getOrder()); FlowRef fref = new FlowRef(snode.getFlowIdentifier(table, fid)); return new AddFlowInputBuilder((Flow)vfent). setNode(snode.getNodeRef()). setFlowRef(fref). setFlowTable(tref). setTransactionUri(createTxUri(vfent, "add-flow:")). setStrict(true). build(); }