本文整理汇总了Java中org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder.setKey方法的典型用法代码示例。如果您正苦于以下问题:Java FlowBuilder.setKey方法的具体用法?Java FlowBuilder.setKey怎么用?Java FlowBuilder.setKey使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder
的用法示例。
在下文中一共展示了FlowBuilder.setKey方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: createFlowBuilder
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder; //导入方法依赖的package包/类
public static FlowBuilder createFlowBuilder(final short table, final int priority, final BigInteger cookieValue,
final String flowName, final String flowIdStr, MatchBuilder match,
InstructionsBuilder isb) {
FlowBuilder flow = new FlowBuilder();
flow.setId(new FlowId(flowIdStr));
flow.setKey(new FlowKey(new FlowId(flowIdStr)));
flow.setTableId(table);
flow.setFlowName(flowName);
flow.setCookie(new FlowCookie(cookieValue));
flow.setCookieMask(new FlowCookie(cookieValue));
flow.setContainerName(null);
flow.setStrict(false);
flow.setMatch(match.build());
flow.setInstructions(isb.build());
flow.setPriority(priority);
flow.setHardTimeout(0);
flow.setIdleTimeout(0);
flow.setFlags(new FlowModFlags(false, false, false, false, false));
if (null == flow.isBarrier()) {
flow.setBarrier(Boolean.FALSE);
}
return flow;
}
示例2: createArpReplyToControllerFlow
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder; //导入方法依赖的package包/类
protected FlowBuilder createArpReplyToControllerFlow() {
final FlowBuilder arpFlow = new FlowBuilder()
.setPriority(OFRendererConstants.ARP_REPLY_TO_CONTROLLER_FLOW_PRIORITY)
.setIdleTimeout(0)
.setHardTimeout(0)
.setCookie(new FlowCookie(BigInteger.valueOf(flowCookie.incrementAndGet())))
.setFlags(new FlowModFlags(false, false, false, false, false));
final EthernetMatch ethernetMatch = FlowUtils.createEthernetMatch();
/** NOTE:
* Setting layer 3 match seems to be messing with the flow ID
* check for possible bug on openflow plugin side.
* Use following code for specific ARP REQUEST or REPLY packet capture
* ArpMatch arpMatch = FlowUtils.createArpMatch();
*/
final Match match = new MatchBuilder().setEthernetMatch(ethernetMatch).build();//.setLayer3Match(arpMatch).build();
arpFlow.setMatch(match);
final Instructions instructions = createOutputInstructions(OutputPortValues.CONTROLLER, OutputPortValues.NORMAL);
arpFlow.setInstructions(instructions);
final String flowName = createFlowName();
arpFlow.setFlowName(flowName);
final FlowId flowId = new FlowId(flowName);
arpFlow.setId(flowId);
arpFlow.setKey(new FlowKey(flowId));
return arpFlow;
}
示例3: createFlowBuilder
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder; //导入方法依赖的package包/类
private FlowBuilder createFlowBuilder(final MatchBuilder matchBuilder, final FlowId flowId) {
final Match match = matchBuilder.build();
final FlowKey key = new FlowKey(flowId);
final FlowBuilder flowBuilder = new FlowBuilder();
final BigInteger cookieId = new BigInteger("20", RADIX);
flowBuilder.setId(flowId);
flowBuilder.setKey(key);
flowBuilder.setFlowName(flowName);
flowBuilder.setCookie(new FlowCookie(cookieId));
flowBuilder.setCookieMask(new FlowCookie(cookieId));
flowBuilder.setContainerName(null);
flowBuilder.setStrict(false);
flowBuilder.setMatch(match);
flowBuilder.setFlags(new FlowModFlags(false, false, false, false, false));
flowBuilder.setBarrier(true);
flowBuilder.setPriority(OFRendererConstants.DEFAULT_PRIORITY);
flowBuilder.setHardTimeout(OFRendererConstants.DEFAULT_HARD_TIMEOUT);
flowBuilder.setIdleTimeout(OFRendererConstants.DEFAULT_IDLE_TIMEOUT);
return flowBuilder;
}
示例4: createFlow
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder; //导入方法依赖的package包/类
public FlowBuilder createFlow(final Dataflow dataFlow) throws DataflowCreationException {
FlowBuilder flowBuilder = new FlowBuilder();
try {
final FlowModFlags flowModFlags = new FlowModFlags(false, false, false, false, false);
final FlowId flowId = new FlowId(dataFlow.getId().toString());
final FlowKey flowKey = new FlowKey(flowId);
final MeterId meterId = new MeterId(dataFlow.getMeterId().longValue());
flowBuilder.setFlowName("NIC_METER" + meterId.getValue());
flowBuilder.setId(new FlowId(Long.toString(flowBuilder.hashCode())));
flowBuilder.setMatch(createMatch(dataFlow.getSourceIpAddress()));
flowBuilder.setInstructions(createInstruction(meterId));
flowBuilder.setPriority(OFRendererConstants.DEFAULT_PRIORITY);
flowBuilder.setCookie(new FlowCookie(BigInteger.valueOf(flowCookieInc.getAndIncrement())));
flowBuilder.setBufferId(OFP_NO_BUFFER);
flowBuilder.setHardTimeout((int) dataFlow.getTimeout());
flowBuilder.setIdleTimeout((int) dataFlow.getTimeout());
flowBuilder.setFlags(flowModFlags);
flowBuilder.setKey(flowKey);
} catch (Exception e) {
throw new DataflowCreationException(e.getMessage());
}
return flowBuilder;
}
示例5: addFlowGoto
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder; //导入方法依赖的package包/类
private void addFlowGoto(Node node, Short currentId, Short nextId) {
FlowBuilder flowBuilder = new FlowBuilder();
flowBuilder.setTableId(currentId);
flowBuilder.setHardTimeout(0);
flowBuilder.setPriority(0);
flowBuilder.setMatch(new MatchBuilder().build());
flowBuilder.setInstructions(
new InstructionsBuilder().setInstruction(Collections.singletonList(
new InstructionBuilder().setInstruction(
new GoToTableCaseBuilder().setGoToTable(
new GoToTableBuilder().setTableId(nextId).build()
).build()
).setOrder(0).build()
)).build());
String flowIdStr = "PipelineManager";
final FlowId flowId = new FlowId(flowIdStr);
final FlowKey key = new FlowKey(flowId);
flowBuilder.setKey(key);
InstanceIdentifier<Flow> flowIID = InstanceIdentifier.builder(Nodes.class)
.child(Node.class, new NodeKey(node.getId())).augmentation(FlowCapableNode.class)
.child(Table.class, new TableKey(flowBuilder.getTableId())).child(Flow.class, flowBuilder.getKey())
.build();
WriteTransaction transaction = dataBroker.newWriteOnlyTransaction();
transaction.put(LogicalDatastoreType.CONFIGURATION, flowIID, flowBuilder.build(), true);
transaction.submit();
}
示例6: programTrafficBehaviorRule
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder; //导入方法依赖的package包/类
public void programTrafficBehaviorRule(Long dpid, TrafficBehavior trafficBehavior, boolean isWriteFlow) {
MatchBuilder matchBuilder = new MatchBuilder();
FlowBuilder flowBuilder = new FlowBuilder();
if (dpid == null) {
return;
}
String nodeName = OPENFLOW + dpid;
NodeBuilder nodeBuilder = createNodeBuilder(nodeName);
// Create the OF Actions and Instructions
InstructionsBuilder isb = new InstructionsBuilder();
// Instructions List Stores Individual Instructions
List<Instruction> instructions = Lists.newArrayList();
// Call the InstructionBuilder Methods Containing Actions
InstructionBuilder ib = new InstructionBuilder();
if (trafficBehavior == TrafficBehavior.PolicyDriven) {
// If Traffic Behavior is NeedAcl, the Default action is drop, need
// Acl to allow traffic
ib = OfInstructionUtils.createDropInstructions(ib);
} else {
// Default Traffic Behavior is allow traffic goto next table, it has
// done in Pipeline initialization step
return;
}
ib.setOrder(instructions.size());
ib.setKey(new InstructionKey(instructions.size()));
instructions.add(ib.build());
// Add InstructionBuilder to the Instruction(s)Builder List
isb.setInstruction(instructions);
// Add InstructionsBuilder to FlowBuilder
flowBuilder.setInstructions(isb.build());
String flowId = "Acl_TrafficBehavior_" + getTable();
flowBuilder.setId(new FlowId(flowId));
FlowKey key = new FlowKey(new FlowId(flowId));
flowBuilder.setMatch(matchBuilder.build());
flowBuilder.setPriority(TRAFFIC_BEHAVIOR_RULE_PRIORITY);
flowBuilder.setBarrier(true);
flowBuilder.setTableId(getTable());
flowBuilder.setKey(key);
flowBuilder.setFlowName(flowId);
flowBuilder.setHardTimeout(0);
flowBuilder.setIdleTimeout(0);
if (isWriteFlow) {
writeFlow(flowBuilder, nodeBuilder);
} else {
removeFlow(flowBuilder, nodeBuilder);
}
}
示例7: programDefaultPermitVni
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder; //导入方法依赖的package包/类
public void programDefaultPermitVni(Long dpid, boolean isWriteFlow) {
MatchBuilder matchBuilder = new MatchBuilder();
FlowBuilder flowBuilder = new FlowBuilder();
if (dpid == null) {
return;
}
String nodeName = OPENFLOW + dpid;
NodeBuilder nodeBuilder = createNodeBuilder(nodeName);
// Create the OF Actions and Instructions
InstructionsBuilder isb = new InstructionsBuilder();
// Instructions List Stores Individual Instructions
List<Instruction> instructions = Lists.newArrayList();
// Call the InstructionBuilder Methods Containing Actions
InstructionBuilder ib = new InstructionBuilder();
OfMatchUtils.addNxRegMatch(matchBuilder, new OfMatchUtils.RegMatch(PipelineTrafficClassifier.REG_SRC_TUN_ID,
PipelineTrafficClassifier.REG2_DEFAULT_PERMIT_VNI));
ib = getMutablePipelineInstructionBuilder();
ib.setOrder(instructions.size());
ib.setKey(new InstructionKey(instructions.size()));
instructions.add(ib.build());
flowBuilder.setMatch(matchBuilder.build());
flowBuilder.setInstructions(isb.setInstruction(instructions).build());
String flowId = "Acl_DefaultPermitVni_" + getTable();
flowBuilder.setId(new FlowId(flowId));
FlowKey key = new FlowKey(new FlowId(flowId));
flowBuilder.setBarrier(true);
flowBuilder.setTableId(this.getTable());
flowBuilder.setKey(key);
flowBuilder.setPriority(DEFAULT_PERMIT_VNI_PRIORITY);
flowBuilder.setFlowName(flowId);
flowBuilder.setHardTimeout(0);
flowBuilder.setIdleTimeout(0);
if (isWriteFlow) {
writeFlow(flowBuilder, nodeBuilder);
} else {
removeFlow(flowBuilder, nodeBuilder);
}
}
示例8: programArpPacketAllow
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder; //导入方法依赖的package包/类
public void programArpPacketAllow(Long dpid, boolean isWriteFlow) {
String nodeName = OPENFLOW + dpid;
MatchBuilder matchBuilder = new MatchBuilder();
NodeBuilder nodeBuilder = createNodeBuilder(nodeName);
FlowBuilder flowBuilder = new FlowBuilder();
flowBuilder.setMatch(
OfMatchUtils.createEtherTypeMatch(matchBuilder, new EtherType(Constants.ARP_ETHERTYPE)).build());
String flowId = "Acl_ArpPacketAllow_" + getTable();
flowBuilder.setId(new FlowId(flowId));
FlowKey key = new FlowKey(new FlowId(flowId));
flowBuilder.setBarrier(true);
flowBuilder.setTableId(this.getTable());
flowBuilder.setKey(key);
flowBuilder.setPriority(ACL_MATCH_PRIORITY);
flowBuilder.setFlowName(flowId);
flowBuilder.setHardTimeout(0);
flowBuilder.setIdleTimeout(0);
if (isWriteFlow) {
InstructionBuilder ib = new InstructionBuilder();
InstructionsBuilder isb = new InstructionsBuilder();
List<Instruction> instructions = Lists.newArrayList();
ib = this.getMutablePipelineInstructionBuilder();
ib.setOrder(instructions.size());
ib.setKey(new InstructionKey(instructions.size()));
instructions.add(ib.build());
// Add InstructionBuilder to the Instruction(s)Builder List
isb.setInstruction(instructions);
// Add InstructionsBuilder to FlowBuilder
flowBuilder.setInstructions(isb.build());
writeFlow(flowBuilder, nodeBuilder);
} else {
removeFlow(flowBuilder, nodeBuilder);
}
}
示例9: programGpeTunnelInEntry
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder; //导入方法依赖的package包/类
public void programGpeTunnelInEntry(Long dpid, Long segmentationId, Long gpeTunnelOfPort, boolean isWriteFlow) {
String nodeName = OPENFLOW + dpid;
BigInteger tunnelId = BigInteger.valueOf(segmentationId.longValue());
MatchBuilder matchBuilder = new MatchBuilder();
NodeBuilder nodeBuilder = createNodeBuilder(nodeName);
FlowBuilder flowBuilder = new FlowBuilder();
// Create Match(es) and Set them in the FlowBuilder Object
flowBuilder.setMatch(OfMatchUtils.createTunnelIDMatch(matchBuilder, tunnelId).build());
flowBuilder.setMatch(OfMatchUtils.createInPortMatch(matchBuilder, dpid, gpeTunnelOfPort).build());
if (isWriteFlow) {
// Create the OF Actions and Instructions
InstructionBuilder ib = new InstructionBuilder();
InstructionsBuilder isb = new InstructionsBuilder();
// Instructions List Stores Individual Instructions
List<Instruction> instructions = Lists.newArrayList();
List<Action> actionList = Lists.newArrayList();
ActionBuilder ab = new ActionBuilder();
// pop_nsh
ab.setAction(OfActionUtils.nxPopNshAction());
ab.setOrder(actionList.size());
ab.setKey(new ActionKey(actionList.size()));
actionList.add(ab.build());
ApplyActionsBuilder aab = new ApplyActionsBuilder();
aab.setAction(actionList);
ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
ib.setOrder(instructions.size());
ib.setKey(new InstructionKey(instructions.size()));
instructions.add(ib.build());
// Append the default pipeline after the first classification
ib = this.getMutablePipelineInstructionBuilder();
ib.setOrder(instructions.size());
ib.setKey(new InstructionKey(instructions.size()));
instructions.add(ib.build());
// Add InstructionBuilder to the Instruction(s)Builder List
isb.setInstruction(instructions);
// Add InstructionsBuilder to FlowBuilder
flowBuilder.setInstructions(isb.build());
}
String flowId = "GpeTunnelIn_" + segmentationId + "_" + gpeTunnelOfPort;
// Add Flow Attributes
flowBuilder.setId(new FlowId(flowId));
FlowKey key = new FlowKey(new FlowId(flowId));
flowBuilder.setPriority(GPE_TUNNEL_IN_PRIORITY);
flowBuilder.setStrict(true);
flowBuilder.setBarrier(false);
flowBuilder.setTableId(getTable());
flowBuilder.setKey(key);
flowBuilder.setFlowName(flowId);
flowBuilder.setHardTimeout(0);
flowBuilder.setIdleTimeout(0);
if (isWriteFlow) {
writeFlow(flowBuilder, nodeBuilder);
} else {
removeFlow(flowBuilder, nodeBuilder);
}
}
示例10: programRouterInterface
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder; //导入方法依赖的package包/类
public void programRouterInterface(Long dpid, Long sourceSegId, Long destSegId, String macAddress,
IpAddress address, int mask, boolean isWriteFlow) {
String nodeName = Constants.OPENFLOW_NODE_PREFIX + dpid;
MatchBuilder matchBuilder = new MatchBuilder();
NodeBuilder nodeBuilder = Openflow13Provider.createNodeBuilder(nodeName);
FlowBuilder flowBuilder = new FlowBuilder();
// Instructions List Stores Individual Instructions
InstructionsBuilder isb = new InstructionsBuilder();
List<Instruction> instructions = Lists.newArrayList();
InstructionBuilder ib = new InstructionBuilder();
ApplyActionsBuilder aab = new ApplyActionsBuilder();
ActionBuilder ab = new ActionBuilder();
List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action> actionList = Lists
.newArrayList();
OfMatchUtils.createTunnelIDMatch(matchBuilder, BigInteger.valueOf(sourceSegId.longValue()));
SubnetUtils addressSubnetInfo = new SubnetUtils(address.getIpv4Address().getValue() + "/" + mask);
final String prefixString = addressSubnetInfo.getInfo().getNetworkAddress() + "/" + mask;
OfMatchUtils.createDstL3IPv4Match(matchBuilder, prefixString);
String flowId = "Routing_" + sourceSegId + "_" + destSegId + "_" + prefixString;
flowBuilder.setId(new FlowId(flowId));
FlowKey key = new FlowKey(new FlowId(flowId));
flowBuilder.setBarrier(true);
flowBuilder.setTableId(this.getTable());
flowBuilder.setKey(key);
flowBuilder.setPriority(BASE_ROUTING_PRIORITY + mask);
flowBuilder.setFlowName(flowId);
flowBuilder.setHardTimeout(0);
flowBuilder.setIdleTimeout(0);
flowBuilder.setMatch(matchBuilder.build());
if (isWriteFlow) {
// Set source Mac address
ab.setAction(OfActionUtils.setDlSrcAction(macAddress));
ab.setOrder(actionList.size());
ab.setKey(new ActionKey(actionList.size()));
actionList.add(ab.build());
// DecTTL
ab.setAction(OfActionUtils.decNwTtlAction());
ab.setOrder(actionList.size());
ab.setKey(new ActionKey(actionList.size()));
actionList.add(ab.build());
// Set Destination Tunnel ID
ab.setAction(OfActionUtils.setTunnelIdAction(BigInteger.valueOf(destSegId.longValue())));
ab.setOrder(actionList.size());
ab.setKey(new ActionKey(actionList.size()));
actionList.add(ab.build());
// Create Apply Actions Instruction
aab.setAction(actionList);
ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
ib.setOrder(instructions.size());
ib.setKey(new InstructionKey(instructions.size()));
instructions.add(ib.build());
// Goto Next Table
ib = getMutablePipelineInstructionBuilder();
ib.setOrder(instructions.size());
ib.setKey(new InstructionKey(instructions.size()));
instructions.add(ib.build());
flowBuilder.setInstructions(isb.setInstruction(instructions).build());
writeFlow(flowBuilder, nodeBuilder);
} else {
removeFlow(flowBuilder, nodeBuilder);
}
}
示例11: programStaticRoutingInRemoteDevice
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder; //导入方法依赖的package包/类
public void programStaticRoutingInRemoteDevice(Long dpid, String gwMacAddress, Ipv4Prefix destIpv4Prefix,
Long nexthopSegId, boolean isWriteFlow) {
String nodeName = Constants.OPENFLOW_NODE_PREFIX + dpid;
MatchBuilder matchBuilder = new MatchBuilder();
NodeBuilder nodeBuilder = Openflow13Provider.createNodeBuilder(nodeName);
FlowBuilder flowBuilder = new FlowBuilder();
// Instructions List Stores Individual Instructions
InstructionsBuilder isb = new InstructionsBuilder();
List<Instruction> instructions = Lists.newArrayList();
InstructionBuilder ib = new InstructionBuilder();
ApplyActionsBuilder aab = new ApplyActionsBuilder();
ActionBuilder ab = new ActionBuilder();
List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action> actionList = Lists
.newArrayList();
final String prefixString = destIpv4Prefix.getValue();
OfMatchUtils.createDmacDestIpMatch(matchBuilder, gwMacAddress, destIpv4Prefix);
String flowId = "StaticRoutingInRemoteDevice_" + nexthopSegId + "_" + prefixString;
flowBuilder.setId(new FlowId(flowId));
FlowKey key = new FlowKey(new FlowId(flowId));
flowBuilder.setBarrier(true);
flowBuilder.setTableId(this.getTable());
flowBuilder.setKey(key);
int mask = IpAddressUtils.getMask(destIpv4Prefix);
flowBuilder.setPriority(BASE_ROUTING_PRIORITY+mask);
flowBuilder.setFlowName(flowId);
flowBuilder.setHardTimeout(0);
flowBuilder.setIdleTimeout(0);
flowBuilder.setMatch(matchBuilder.build());
if (isWriteFlow) {
// DecTTL
ab.setAction(OfActionUtils.decNwTtlAction());
ab.setOrder(actionList.size());
ab.setKey(new ActionKey(actionList.size()));
actionList.add(ab.build());
ab.setAction(OfActionUtils.nxLoadRegAction(
new DstNxRegCaseBuilder().setNxReg(PipelineTrafficClassifier.REG_FIELD).build(),
BigInteger.valueOf(REG_VALUE_IS_STATIC_ROUTING)));
ab.setOrder(actionList.size());
ab.setKey(new ActionKey(actionList.size()));
actionList.add(ab.build());
// Create Apply Actions Instruction
aab.setAction(actionList);
ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
ib.setOrder(instructions.size());
ib.setKey(new InstructionKey(instructions.size()));
instructions.add(ib.build());
// Goto Next Table
ib = getMutablePipelineInstructionBuilder();
ib.setOrder(instructions.size());
ib.setKey(new InstructionKey(instructions.size()));
instructions.add(ib.build());
flowBuilder.setInstructions(isb.setInstruction(instructions).build());
writeFlow(flowBuilder, nodeBuilder);
} else {
removeFlow(flowBuilder, nodeBuilder);
}
}
示例12: programFloatingIpToFixedIp2
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder; //导入方法依赖的package包/类
public void programFloatingIpToFixedIp2(Long dpid, String dstfloatingIp,
Long floatingSegmentId, String toDstfixedIp, boolean isWriteFlow) {
String nodeName = OPENFLOW + dpid;
MatchBuilder matchBuilder = new MatchBuilder();
NodeBuilder nodeBuilder = createNodeBuilder(nodeName);
FlowBuilder flowBuilder = new FlowBuilder();
// Create the OF Match using MatchBuilder
OfMatchUtils.createDstL3IPv4Match(matchBuilder, OfMatchUtils.iPv4PrefixFromIPv4Address(dstfloatingIp));
flowBuilder.setMatch(matchBuilder.build());
String flowId = "InboundNat_"+dstfloatingIp+"_"+toDstfixedIp+"_"+floatingSegmentId;
// Add Flow Attributes
flowBuilder.setId(new FlowId(flowId));
FlowKey key = new FlowKey(new FlowId(flowId));
flowBuilder.setStrict(true);
flowBuilder.setBarrier(false);
flowBuilder.setTableId(getTable());
flowBuilder.setKey(key);
flowBuilder.setFlowName(flowId);
flowBuilder.setHardTimeout(0);
flowBuilder.setIdleTimeout(0);
if (isWriteFlow) {
// Instantiate the Builders for the OF Actions and Instructions
InstructionBuilder ib = new InstructionBuilder();
InstructionsBuilder isb = new InstructionsBuilder();
// Instructions List Stores Individual Instructions
List<Instruction> instructions = Lists.newArrayList();
// Set Dst Ip Address to fixed ip
OfInstructionUtils.createNwDstInstructions(ib,
OfMatchUtils.iPv4PrefixFromIPv4Address(toDstfixedIp), null);
ib.setOrder(instructions.size());
ib.setKey(new InstructionKey(instructions.size()));
instructions.add(ib.build());
OfInstructionUtils.createSetTunnelIdInstructions(ib, BigInteger.valueOf(floatingSegmentId.longValue()));
ib.setOrder(instructions.size());
ib.setKey(new InstructionKey(instructions.size()));
instructions.add(ib.build());
// Next service GOTO Instructions Need to be appended to the List
ib = this.getMutablePipelineInstructionBuilder();
ib.setOrder(instructions.size());
ib.setKey(new InstructionKey(instructions.size()));
instructions.add(ib.build());
// Add InstructionBuilder to the Instruction(s)Builder List
isb.setInstruction(instructions);
// Add InstructionsBuilder to FlowBuilder
flowBuilder.setInstructions(isb.build());
writeFlow(flowBuilder, nodeBuilder);
} else {
removeFlow(flowBuilder, nodeBuilder);
}
}
示例13: programFloatingIpToFixedIp
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder; //导入方法依赖的package包/类
public void programFloatingIpToFixedIp(Long dpid, String dstfloatingIp,
Long floatingSegmentId, String toDstfixedIp, boolean isWriteFlow) {
String nodeName = OPENFLOW + dpid;
MatchBuilder matchBuilder = new MatchBuilder();
NodeBuilder nodeBuilder = createNodeBuilder(nodeName);
FlowBuilder flowBuilder = new FlowBuilder();
// Create the OF Match using MatchBuilder
OfMatchUtils.createDstL3IPv4Match(matchBuilder, OfMatchUtils.iPv4PrefixFromIPv4Address(dstfloatingIp));
flowBuilder.setMatch(matchBuilder.build());
String flowId = "InboundNat_"+dstfloatingIp+"_"+toDstfixedIp+"_"+floatingSegmentId;
// Add Flow Attributes
flowBuilder.setId(new FlowId(flowId));
FlowKey key = new FlowKey(new FlowId(flowId));
flowBuilder.setStrict(true);
flowBuilder.setBarrier(false);
flowBuilder.setTableId(getTable());
flowBuilder.setKey(key);
flowBuilder.setFlowName(flowId);
flowBuilder.setHardTimeout(0);
flowBuilder.setIdleTimeout(0);
if (isWriteFlow) {
// Instantiate the Builders for the OF Actions and Instructions
InstructionBuilder ib = new InstructionBuilder();
InstructionsBuilder isb = new InstructionsBuilder();
// Instructions List Stores Individual Instructions
List<Instruction> instructions = Lists.newArrayList();
List<Action> actionList = new ArrayList<>();
ActionBuilder ab = new ActionBuilder();
// Set Dst Ip Address to fixed ip
SetNwDstActionBuilder setNwDstActionBuilder = new SetNwDstActionBuilder();
Ipv4Builder ipdst = new Ipv4Builder();
ipdst.setIpv4Address(OfMatchUtils.iPv4PrefixFromIPv4Address(toDstfixedIp));
setNwDstActionBuilder.setAddress(ipdst.build());
ab.setAction(new SetNwDstActionCaseBuilder().setSetNwDstAction(setNwDstActionBuilder.build()).build());
ab.setOrder(actionList.size());
ab.setKey(new ActionKey(actionList.size()));
actionList.add(ab.build());
// Build the Set Tunnel Field Action
SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
TunnelBuilder tunnel = new TunnelBuilder();
tunnel.setTunnelId(BigInteger.valueOf(floatingSegmentId.longValue()));
setFieldBuilder.setTunnel(tunnel.build());
ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
ab.setOrder(actionList.size());
ab.setKey(new ActionKey(actionList.size()));
actionList.add(ab.build());
ApplyActionsBuilder aab = new ApplyActionsBuilder();
aab.setAction(actionList);
ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
ib.setOrder(instructions.size());
ib.setKey(new InstructionKey(instructions.size()));
instructions.add(ib.build());
// Next service GOTO Instructions Need to be appended to the List
ib = this.getMutablePipelineInstructionBuilder();
ib.setOrder(instructions.size());
ib.setKey(new InstructionKey(instructions.size()));
instructions.add(ib.build());
// Add InstructionBuilder to the Instruction(s)Builder List
isb.setInstruction(instructions);
// Add InstructionsBuilder to FlowBuilder
flowBuilder.setInstructions(isb.build());
writeFlow(flowBuilder, nodeBuilder);
} else {
removeFlow(flowBuilder, nodeBuilder);
}
}
示例14: programVlanInPort
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder; //导入方法依赖的package包/类
public void programVlanInPort(Long dpid, Long vlanId, Long segmentationId, Long inPort, boolean isWriteFlow) {
String nodeName = OPENFLOW + dpid;
MatchBuilder matchBuilder = new MatchBuilder();
NodeBuilder nodeBuilder = createNodeBuilder(nodeName);
FlowBuilder flowBuilder = new FlowBuilder();
// Create the OF Match using MatchBuilder
flowBuilder.setMatch(OfMatchUtils.createInPortMatch(matchBuilder, dpid, inPort).build());
flowBuilder.setMatch(OfMatchUtils.createVlanIdMatch(matchBuilder, new VlanId(vlanId.intValue()), true).build());
String flowId = "VlanIn_" + vlanId + "_" + inPort + "_" + segmentationId;
// Add Flow Attributes
flowBuilder.setId(new FlowId(flowId));
FlowKey key = new FlowKey(new FlowId(flowId));
flowBuilder.setStrict(true);
flowBuilder.setBarrier(false);
flowBuilder.setTableId(getTable());
flowBuilder.setKey(key);
flowBuilder.setPriority(16384);
flowBuilder.setFlowName(flowId);
flowBuilder.setHardTimeout(0);
flowBuilder.setIdleTimeout(0);
if (isWriteFlow) {
// Instantiate the Builders for the OF Actions and Instructions
InstructionBuilder ib = new InstructionBuilder();
InstructionsBuilder isb = new InstructionsBuilder();
// Instructions List Stores Individual Instructions
List<Instruction> instructions = Lists.newArrayList();
OfInstructionUtils.createSetTunnelIdInstructions(ib, BigInteger.valueOf(segmentationId.longValue()));
ApplyActionsCase aac = (ApplyActionsCase) ib.getInstruction();
List<Action> actionList = aac.getApplyActions().getAction();
ActionBuilder ab = new ActionBuilder();
ab.setAction(OfActionUtils.nxLoadRegAction(new DstNxRegCaseBuilder().setNxReg(REG_FIELD).build(),
BigInteger.valueOf(REG_VALUE_FROM_VLAN)));
ab.setOrder(actionList.size());
ab.setKey(new ActionKey(actionList.size()));
actionList.add(ab.build());
ab.setAction(OfActionUtils.nxLoadRegAction(new DstNxRegCaseBuilder().setNxReg(REG_SRC_TUN_ID).build(),
BigInteger.valueOf(REG2_DEFAULT_PERMIT_VNI)));
ab.setOrder(actionList.size());
ab.setKey(new ActionKey(actionList.size()));
actionList.add(ab.build());
ib.setOrder(instructions.size());
ib.setKey(new InstructionKey(instructions.size()));
instructions.add(ib.build());
// Next service GOTO Instructions Need to be appended to the List
ib = this.getMutablePipelineInstructionBuilder();
ib.setOrder(instructions.size());
ib.setKey(new InstructionKey(instructions.size()));
instructions.add(ib.build());
// Add InstructionBuilder to the Instruction(s)Builder List
isb.setInstruction(instructions);
// Add InstructionsBuilder to FlowBuilder
flowBuilder.setInstructions(isb.build());
writeFlow(flowBuilder, nodeBuilder);
} else {
removeFlow(flowBuilder, nodeBuilder);
}
}
示例15: programRemoteBcastOutToLocalPort
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder; //导入方法依赖的package包/类
public void programRemoteBcastOutToLocalPort(Long dpid, Long segmentationId, Long localPort, boolean isWriteFlow) {
String nodeName = OPENFLOW + dpid;
MatchBuilder matchBuilder = new MatchBuilder();
NodeBuilder nodeBuilder = createNodeBuilder(nodeName);
FlowBuilder flowBuilder = new FlowBuilder();
// Create the OF Match using MatchBuilder
OfMatchUtils.addNxRegMatch(matchBuilder, new OfMatchUtils.RegMatch(PipelineTrafficClassifier.REG_FIELD,
PipelineTrafficClassifier.REG_VALUE_FROM_REMOTE));
flowBuilder.setMatch(
OfMatchUtils.createTunnelIDMatch(matchBuilder, BigInteger.valueOf(segmentationId.longValue())).build());
flowBuilder.setMatch(
OfMatchUtils.createDestEthMatch(matchBuilder, "01:00:00:00:00:00", "01:00:00:00:00:00").build());
String flowId = "BcastOut_" + segmentationId;
// Add Flow Attributes
flowBuilder.setId(new FlowId(flowId));
FlowKey key = new FlowKey(new FlowId(flowId));
flowBuilder.setStrict(true);
flowBuilder.setBarrier(false);
flowBuilder.setTableId(getTable());
flowBuilder.setKey(key);
flowBuilder.setPriority(16384);
flowBuilder.setFlowName(flowId);
flowBuilder.setHardTimeout(0);
flowBuilder.setIdleTimeout(0);
Flow flow = this.getFlow(flowBuilder, nodeBuilder);
// Instantiate the Builders for the OF Actions and Instructions
InstructionBuilder ib = new InstructionBuilder();
InstructionsBuilder isb = new InstructionsBuilder();
List<Instruction> instructions = Lists.newArrayList();
List<Instruction> existingInstructions = null;
if (flow != null) {
Instructions ins = flow.getInstructions();
if (ins != null) {
existingInstructions = ins.getInstruction();
}
}
if (isWriteFlow) {
// Create output port list
createOutputPortInstructions(ib, dpid, localPort, existingInstructions);
ib.setOrder(instructions.size());
ib.setKey(new InstructionKey(instructions.size()));
instructions.add(ib.build());
// Add InstructionBuilder to the Instruction(s)Builder List
isb.setInstruction(instructions);
// Add InstructionsBuilder to FlowBuilder
flowBuilder.setInstructions(isb.build());
writeFlow(flowBuilder, nodeBuilder);
} else {
boolean flowRemove = OfInstructionUtils.removeOutputPortFromInstructions(ib, dpid, localPort,
existingInstructions);
if (flowRemove) {
/* if all ports are removed, remove flow */
removeFlow(flowBuilder, nodeBuilder);
} else {
/* Install instruction with new output port list */
ib.setOrder(instructions.size());
ib.setKey(new InstructionKey(instructions.size()));
instructions.add(ib.build());
// Add InstructionBuilder to the Instruction(s)Builder List
isb.setInstruction(instructions);
// Add InstructionsBuilder to FlowBuilder
flowBuilder.setInstructions(isb.build());
writeFlow(flowBuilder, nodeBuilder);
}
}
}