本文整理汇总了Java中org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef类的典型用法代码示例。如果您正苦于以下问题:Java NodeRef类的具体用法?Java NodeRef怎么用?Java NodeRef使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
NodeRef类属于org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819包,在下文中一共展示了NodeRef类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。
示例1: installGroupOnDpn
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; //导入依赖的package包/类
private void installGroupOnDpn(long groupId, BigInteger dpnId, String groupName, List<BucketInfo> bucketsInfo,
String nextHopKey, GroupTypes groupType) {
NodeRef nodeRef = FibUtil.buildNodeRef(dpnId);
Buckets buckets = FibUtil.buildBuckets(bucketsInfo);
GroupRef groupRef = new GroupRef(FibUtil.buildGroupInstanceIdentifier(groupId, dpnId));
AddGroupInput input = new AddGroupInputBuilder().setNode(nodeRef).setGroupId(new GroupId(groupId))
.setBuckets(buckets).setGroupRef(groupRef).setGroupType(groupType)
.setGroupName(groupName).build();
Future<RpcResult<AddGroupOutput>> groupStats = salGroupService.addGroup(input);
RpcResult<AddGroupOutput> rpcResult = null;
try {
rpcResult = groupStats.get();
if (rpcResult != null && rpcResult.isSuccessful()) {
LOG.info("Group {} with key {} has been successfully installed directly on dpn {}.", groupId,
nextHopKey, dpnId);
} else {
LOG.error("Unable to install group {} with key {} directly on dpn {} due to {}.", groupId, nextHopKey,
dpnId, rpcResult != null ? rpcResult.getErrors() : null);
}
} catch (InterruptedException | ExecutionException e) {
LOG.error("Error while installing group {} directly on dpn {}", groupId, dpnId);
}
}
开发者ID:opendaylight,项目名称:netvirt,代码行数:24,代码来源:NexthopManager.java
示例2: transmitRtrAdvertisement
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; //导入依赖的package包/类
public boolean transmitRtrAdvertisement(Ipv6RtrAdvertType raType, VirtualPort routerPort,
List<NodeConnectorRef> outportList, RouterSolicitationPacket rsPdu) {
RouterAdvertisementPacketBuilder raPacket = new RouterAdvertisementPacketBuilder();
updateRAResponse(raType, rsPdu, raPacket, routerPort);
// Serialize the response packet
byte[] txPayload = fillRouterAdvertisementPacket(raPacket.build());
for (NodeConnectorRef outport: outportList) {
InstanceIdentifier<Node> outNode = outport.getValue().firstIdentifierOf(Node.class);
TransmitPacketInput input = new TransmitPacketInputBuilder().setPayload(txPayload)
.setNode(new NodeRef(outNode))
.setEgress(outport).build();
LOG.debug("Transmitting the Router Advt packet out {}", outport);
JdkFutures.addErrorLogging(packetService.transmitPacket(input), LOG, "transmitPacket");
}
return true;
}
开发者ID:opendaylight,项目名称:netvirt,代码行数:17,代码来源:Ipv6RouterAdvt.java
示例3: sendPacketOut
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; //导入依赖的package包/类
private void sendPacketOut(byte[] payload, NodeConnectorRef egress) {
if (egress == null) {
LOG.info("Egress is null");
return;
}
InstanceIdentifier<Node> egressNodePath = getNodePath(egress.getValue());
TransmitPacketInput input = new TransmitPacketInputBuilder() //
.setPayload(payload) //
.setNode(new NodeRef(egressNodePath)) //
.setEgress(egress) //
.build();
Future<RpcResult<Void>> future = packetService.transmitPacket(input);
JdkFutureAdapters.listenInPoolThread(future);
}
开发者ID:onfsdn,项目名称:atrium-odl,代码行数:18,代码来源:TunnellingConnectivityManager.java
示例4: deleteFibEntry
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; //导入依赖的package包/类
/**
* Delete fib entry.
*
* @param withdraws
* the withdraws
*/
private synchronized void deleteFibEntry(Collection<AtriumFibUpdate> withdraws) {
for (AtriumFibUpdate update : withdraws) {
AtriumFibEntry entry = update.entry();
NodeRef nodeRef = new NodeRef(
InstanceIdentifier.builder(Nodes.class).child(Node.class, new NodeKey(deviceId)).build());
ForwardingObjectiveBuilder forwardingObjBuilder = generateRibForwardingObj(entry.prefix(), null);
if (forwardingObjBuilder != null) {
ForwardInputBuilder inputBuilder = new ForwardInputBuilder();
forwardingObjBuilder.setOperation(Operation.Remove);
inputBuilder.setNode(nodeRef);
inputBuilder.setForwardingObjective(forwardingObjBuilder.build());
LOG.info("Invoking forward objective in DIDM for fibEntry delete");
LOG.info("FIB Entry: " + forwardingObjBuilder.build());
flowObjectivesService.forward(inputBuilder.build());
FibDataModelWriter.deleteFib(update, dataBroker);
} else {
continue;
}
}
}
开发者ID:onfsdn,项目名称:atrium-odl,代码行数:31,代码来源:Bgprouter.java
示例5: addArpFlowToController
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; //导入依赖的package包/类
public void addArpFlowToController(NodeId dpnId) {
NodeRef nodeRef = new NodeRef(
InstanceIdentifier.builder(Nodes.class).child(Node.class, new NodeKey(dpnId)).build());
ForwardingObjectiveBuilder fwdObjBuilder = new ForwardingObjectiveBuilder();
fwdObjBuilder.setOperation(Operation.Add);
fwdObjBuilder.setFlag(Flag.Versatile);
MatchBuilder matchBuilder = new MatchBuilder();
EthernetMatch etherMatch = AtriumUtils.getEtherMatch(Bgprouter.ARP_ETH_TYPE);
matchBuilder.setEthernetMatch(etherMatch);
ActionData puntAction = new ActionData(ActionUtils.punt_to_controller, new String[] { null });
fwdObjBuilder.setMatch(matchBuilder.build());
List<Action> actions = new ArrayList<>();
actions.add(puntAction.buildAction());
fwdObjBuilder.setAction(actions);
ForwardInputBuilder forwardInputBuilderSrc = new ForwardInputBuilder();
forwardInputBuilderSrc.setNode(nodeRef);
forwardInputBuilderSrc.setForwardingObjective(fwdObjBuilder.build());
flowObjectivesService.forward(forwardInputBuilderSrc.build());
}
开发者ID:onfsdn,项目名称:atrium-odl,代码行数:26,代码来源:Bgprouter.java
示例6: sendArpResponse
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; //导入依赖的package包/类
public ListenableFuture<RpcResult<Void>> sendArpResponse(ArpMessageAddress senderAddress,
ArpMessageAddress receiverAddress, InstanceIdentifier<NodeConnector> egressNc, Header8021q vlan) {
checkNotNull(senderAddress);
checkNotNull(receiverAddress);
checkNotNull(egressNc);
final Ethernet arpFrame = createArpFrame(senderAddress, receiverAddress, vlan);
byte[] arpFrameAsBytes;
try {
arpFrameAsBytes = arpFrame.serialize();
} catch (PacketException e) {
LOG.warn("Serializition of ARP packet is not successful.", e);
if (LOG.isDebugEnabled()) {
LOG.debug("ARP packet: {}", ArpUtils.getArpFrameToStringFormat(arpFrame));
}
return Futures.immediateFailedFuture(e);
}
// Generate packet with destination switch and port
LOG.debug("Egress for ARP packetOut: " + new NodeConnectorRef(egressNc).toString());
TransmitPacketInput packet = new TransmitPacketInputBuilder().setEgress(new NodeConnectorRef(egressNc))
.setNode(new NodeRef(egressNc.firstIdentifierOf(Node.class))).setPayload(arpFrameAsBytes).build();
if (LOG.isTraceEnabled()) {
LOG.trace("Sending ARP RESPONSE \n{}", ArpUtils.getArpFrameToStringFormat(arpFrame));
}
Future<RpcResult<Void>> futureTransmitPacketResult = packetProcessingService.transmitPacket(packet);
return JdkFutureAdapters.listenInPoolThread(futureTransmitPacketResult);
}
开发者ID:onfsdn,项目名称:atrium-odl,代码行数:27,代码来源:ArpSender.java
示例7: onPacketReceived
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; //导入依赖的package包/类
@Override
public void onPacketReceived(PacketReceived notification) {
NodeConnectorRef ingressNodeConnectorRef = notification.getIngress();
NodeRef ingressNodeRef = InventoryUtils.getNodeRef(ingressNodeConnectorRef);
// NodeConnectorId ingressNodeConnectorId = InventoryUtils.getNodeConnectorId(ingressNodeConnectorRef);
NodeId ingressNodeId = InventoryUtils.getNodeId(ingressNodeConnectorRef);
// Useful to create it beforehand
NodeConnectorId floodNodeConnectorId = InventoryUtils.getNodeConnectorId(ingressNodeId, FLOOD_PORT_NUMBER);
NodeConnectorRef floodNodeConnectorRef = InventoryUtils.getNodeConnectorRef(floodNodeConnectorId);
//Ignore LLDP packets, or you will be in big trouble
byte[] etherTypeRaw = PacketParsingUtils.extractEtherType(notification.getPayload());
int etherType = (0x0000ffff & ByteBuffer.wrap(etherTypeRaw).getShort());
if (etherType == 0x88cc) {
return;
}
// Flood packet
packetOut(ingressNodeRef, floodNodeConnectorRef, notification.getPayload());
}
开发者ID:sdnhub,项目名称:SDNHub_Opendaylight_Tutorial,代码行数:22,代码来源:TutorialACL.java
示例8: nodeAdded
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; //导入依赖的package包/类
public NodeUpdated nodeAdded(ConnectionAdapter connectionAdapter) {
NodeUpdatedBuilder builder = new NodeUpdatedBuilder();
BigInteger datapathId = this.connectionRegistry.getDatapathID(connectionAdapter);
builder.setId(nodeIdFromDatapathId(datapathId));
InstanceIdentifier<Node> identifier = identifierFromDatapathId(datapathId);
builder.setNodeRef(new NodeRef(identifier));
FlowCapableNodeUpdatedBuilder builder2 = new FlowCapableNodeUpdatedBuilder();
try {
builder2.setIpAddress(getIpAddressOf(connectionAdapter));
} catch (Exception e) {
LOG.warn("IP address of the node cannot be obtained.");
}
GetFeaturesOutput features = this.connectionRegistry.getFeaturesOutput(connectionAdapter);
builder2.setSwitchFeatures(swFeaturesUtil.buildSwitchFeatures(features));
builder.addAugmentation(FlowCapableNodeUpdated.class, builder2.build());
return builder.build();
}
开发者ID:fp7-netide,项目名称:Engine,代码行数:21,代码来源:ShimSwitchConnectionHandlerImpl.java
示例9: getJoinTopicInputArgument
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; //导入依赖的package包/类
private JoinTopicInput getJoinTopicInputArgument(final InstanceIdentifier<?> path) {
final NodeRef nodeRef = new NodeRef(path);
final JoinTopicInput jti =
new JoinTopicInputBuilder()
.setNode(nodeRef.getValue())
.setTopicId(topicId)
.setNotificationPattern(notificationPattern)
.build();
return jti;
}
开发者ID:hashsdn,项目名称:hashsdn-controller,代码行数:11,代码来源:EventSourceTopic.java
示例10: getDisJoinTopicInputArgument
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; //导入依赖的package包/类
private DisJoinTopicInput getDisJoinTopicInputArgument(final InstanceIdentifier<?> eventSourceNodeId){
final NodeRef nodeRef = new NodeRef(eventSourceNodeId);
final DisJoinTopicInput dji = new DisJoinTopicInputBuilder()
.setNode(nodeRef.getValue())
.setTopicId(topicId)
.build();
return dji;
}
开发者ID:hashsdn,项目名称:hashsdn-controller,代码行数:9,代码来源:EventSourceTopic.java
示例11: pollDirectStatisticsForAllNodes
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; //导入依赖的package包/类
private void pollDirectStatisticsForAllNodes() {
LOG.trace("Polling direct statistics from nodes");
for (Entry<BigInteger, ConcurrentMap<String, QosAlertPortData>> entry : qosAlertDpnPortNumberMap.entrySet()) {
BigInteger dpn = entry.getKey();
LOG.trace("Polling DPN ID {}", dpn);
GetNodeConnectorStatisticsInputBuilder input = new GetNodeConnectorStatisticsInputBuilder()
.setNode(new NodeRef(InstanceIdentifier.builder(Nodes.class)
.child(Node.class, new NodeKey(new NodeId(IfmConstants.OF_URI_PREFIX + dpn))).build()))
.setStoreStats(false);
Future<RpcResult<GetNodeConnectorStatisticsOutput>> rpcResultFuture =
odlDirectStatisticsService.getNodeConnectorStatistics(input.build());
RpcResult<GetNodeConnectorStatisticsOutput> rpcResult = null;
try {
rpcResult = rpcResultFuture.get();
} catch (InterruptedException | ExecutionException e) {
LOG.error("Exception {} occurred with node {} Direct-Statistics get", e, dpn);
}
if (rpcResult != null && rpcResult.isSuccessful() && rpcResult.getResult() != null) {
GetNodeConnectorStatisticsOutput nodeConnectorStatisticsOutput = rpcResult.getResult();
List<NodeConnectorStatisticsAndPortNumberMap> nodeConnectorStatisticsAndPortNumberMapList =
nodeConnectorStatisticsOutput.getNodeConnectorStatisticsAndPortNumberMap();
ConcurrentMap<String, QosAlertPortData> portDataMap = entry.getValue();
for (NodeConnectorStatisticsAndPortNumberMap stats : nodeConnectorStatisticsAndPortNumberMapList) {
QosAlertPortData portData = portDataMap.get(stats.getNodeConnectorId().getValue());
if (portData != null) {
portData.updatePortStatistics(stats);
}
}
} else {
LOG.error("Direct-Statistics not available for node {}", dpn);
}
}
}
开发者ID:opendaylight,项目名称:netvirt,代码行数:40,代码来源:QosAlertManager.java
示例12: transmitNeighborSolicitation
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; //导入依赖的package包/类
public boolean transmitNeighborSolicitation(BigInteger dpnId, NodeConnectorRef nodeRef,
MacAddress srcMacAddress, Ipv6Address srcIpv6Address,
Ipv6Address targetIpv6Address) {
byte[] txPayload = frameNeighborSolicitationRequest(srcMacAddress, srcIpv6Address, targetIpv6Address);
NodeConnectorRef nodeConnectorRef = MDSALUtil.getNodeConnRef(dpnId, "0xfffffffd");
TransmitPacketInput input = new TransmitPacketInputBuilder().setPayload(txPayload)
.setNode(new NodeRef(InstanceIdentifier.builder(Nodes.class)
.child(Node.class, new NodeKey(new NodeId("openflow:" + dpnId))).toInstance()))
.setEgress(nodeRef).setIngress(nodeConnectorRef).build();
// Tx the packet out of the controller.
LOG.debug("Transmitting the Neighbor Solicitation packet out on {}", dpnId);
JdkFutures.addErrorLogging(packetService.transmitPacket(input), LOG, "transmitPacket");
return true;
}
开发者ID:opendaylight,项目名称:netvirt,代码行数:16,代码来源:Ipv6NeighborSolicitation.java
示例13: getNodeConnectorStatisticsInputBuilder
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; //导入依赖的package包/类
private GetNodeConnectorStatisticsInput getNodeConnectorStatisticsInputBuilder(NodeId nodeId,
NodeConnectorId nodeConnectorId) {
NodeRef nodeRef = new NodeRef(
InstanceIdentifier.builder(Nodes.class).child(Node.class, new NodeKey(nodeId)).toInstance());
GetNodeConnectorStatisticsInputBuilder nodeConnectorBuilder =
new GetNodeConnectorStatisticsInputBuilder().setNode(nodeRef).setNodeConnectorId(nodeConnectorId);
GetNodeConnectorStatisticsInput gncsi = nodeConnectorBuilder.build();
return gncsi;
}
开发者ID:opendaylight,项目名称:netvirt,代码行数:10,代码来源:CounterRetriever.java
示例14: getSwitchFlowCountersDirect
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; //导入依赖的package包/类
public CounterResultDataStructure getSwitchFlowCountersDirect(BigInteger dpId, Match match, short tableId) {
NodeRef nodeRef = new NodeRef(InstanceIdentifier.builder(Nodes.class)
.child(Node.class, new NodeKey(new NodeId(CountersUtils.getNodeId(dpId)))).toInstance());
GetFlowStatisticsInputBuilder gfsib = new GetFlowStatisticsInputBuilder();
gfsib.setNode(nodeRef);
gfsib.setMatch(match);
gfsib.setStoreStats(false);
Future<RpcResult<GetFlowStatisticsOutput>> rpcResultFuture =
odlDirectStatsService.getFlowStatistics(gfsib.build());
RpcResult<GetFlowStatisticsOutput> rpcResult = null;
try {
rpcResult = rpcResultFuture.get();
} catch (InterruptedException | ExecutionException e) {
counters.failedGettingFlowCounters.inc();
LOG.warn("Unable to retrieve flow counters for match {}", match);
return null;
}
if (rpcResult != null && rpcResult.isSuccessful() && rpcResult.getResult() != null) {
GetFlowStatisticsOutput flowStatsOutput = rpcResult.getResult();
return createSwitchFlowResultMapDirect(flowStatsOutput);
} else {
counters.failedGettingFlowCounters.inc();
LOG.warn("Unable to retrieve flow counters for match {}", match);
return null;
}
}
开发者ID:opendaylight,项目名称:netvirt,代码行数:29,代码来源:CounterRetriever.java
示例15: notifySwitchAvailable
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; //导入依赖的package包/类
/**
* Pushes the flow rules for forwarding BGP TCP packets to controller. It is
* called when switches are connected and available.
*/
public void notifySwitchAvailable() {
checkNotNull(flowObjectivesService, "FlowObjectivesService in DIDM not initialized");
checkNotNull(bgpSpeaker);
NodeRef nodeRef = new NodeRef(InstanceIdentifier.builder(Nodes.class)
.child(Node.class, new NodeKey(bgpSpeaker.getAttachmentDpId())).build());
// Adding slight delay so that flow objective can identify the device
// and register
try {
Thread.sleep(2000);
} catch (Exception ex) {
}
// For BGP_PORT Source
ForwardingObjective forwardingObjSrc = generateForwardingObjective(true);
ForwardInputBuilder forwardInputBuilderSrc = new ForwardInputBuilder();
forwardInputBuilderSrc.setNode(nodeRef);
forwardInputBuilderSrc.setForwardingObjective(forwardingObjSrc);
flowObjectivesService.forward(forwardInputBuilderSrc.build());
// For BGP_PORT Dest
ForwardingObjective forwardingObjDest = generateForwardingObjective(false);
ForwardInputBuilder forwardInputBuilderDest = new ForwardInputBuilder();
forwardInputBuilderDest.setNode(nodeRef);
forwardInputBuilderDest.setForwardingObjective(forwardingObjDest);
flowObjectivesService.forward(forwardInputBuilderDest.build());
LOG.info("Punt to controller for BGP packets sent");
}
开发者ID:onfsdn,项目名称:atrium-odl,代码行数:40,代码来源:TunnellingConnectivityManager.java
示例16: installFlows
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; //导入依赖的package包/类
/**
* Install flows.
*
* @param entriesToInstall
* the entries to install
*/
private void installFlows(Map<AtriumFibEntry, Integer> entriesToInstall) {
checkNotNull(flowObjectivesService, "FlowObjectives Service not initialized");
for (Map.Entry<AtriumFibEntry, Integer> entry : entriesToInstall.entrySet()) {
AtriumFibEntry fibEntry = entry.getKey();
Integer nextId = entry.getValue();
ForwardingObjectiveBuilder forwardingObjBuilder = generateRibForwardingObj(fibEntry.prefix(), nextId);
NodeRef nodeRef = new NodeRef(
InstanceIdentifier.builder(Nodes.class).child(Node.class, new NodeKey(deviceId)).build());
if (forwardingObjBuilder != null) {
ForwardInputBuilder inputBuilder = new ForwardInputBuilder();
forwardingObjBuilder.setOperation(Operation.Add);
inputBuilder.setNode(nodeRef);
inputBuilder.setForwardingObjective(forwardingObjBuilder.build());
LOG.info("Invoking forward objective in DIDM for fibEntry update");
LOG.info("FIB Entry: " + forwardingObjBuilder.build());
try {
Future<RpcResult<Void>> result = flowObjectivesService.forward(inputBuilder.build());
RpcResult<Void> rpcResult = result.get();
if (rpcResult.isSuccessful()) {
LOG.info("FibEntry update sent to flowObjective");
} else {
LOG.info("Failed to send FibEntry to flowObjective");
}
} catch (Exception ex) {
LOG.info("", ex);
}
} else {
continue;
}
}
}
开发者ID:onfsdn,项目名称:atrium-odl,代码行数:42,代码来源:Bgprouter.java
示例17: processIntfFilters
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; //导入依赖的package包/类
/**
* Process intf filters.
*
* @param install
* the install
* @param intfs
* the intfs
*/
private void processIntfFilters(boolean install, Set<AtriumInterface> intfs) {
LOG.info("Processing {} router interfaces", intfs.size());
for (AtriumInterface intf : intfs) {
NodeConnector connector = intf.connectPoint();
if (connector == null) {
continue;
}
String dpn = AtriumUtils.getDpnFromNodeConnectorId(connector.getId());
BigInteger dpnId = new BigInteger(dpn);
LOG.info("DpnId: " + deviceId);
NodeId routerId = AtriumUtils.buildDpnNodeId(dpnId);
LOG.info("RouterId: " + routerId);
if (!routerId.equals(deviceId)) {
// Ignore interfaces if they are not on the router switch
continue;
}
NodeRef nodeRef = new NodeRef(
InstanceIdentifier.builder(Nodes.class).child(Node.class, new NodeKey(deviceId)).build());
FilterObjectiveBuilder filterObjBuilder = gnerateFilterObjectiveBuilder(intf);
FilterInputBuilder filterBuilder = new FilterInputBuilder();
filterBuilder.setFilterObjective(filterObjBuilder.build());
filterBuilder.setNode(nodeRef);
LOG.info("Invoking filter objective with values: " + filterBuilder.build());
flowObjectivesService.filter(filterBuilder.build());
}
}
开发者ID:onfsdn,项目名称:atrium-odl,代码行数:39,代码来源:Bgprouter.java
示例18: addIcmpFlowToController
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; //导入依赖的package包/类
public void addIcmpFlowToController(NodeId dpnId) {
NodeRef nodeRef = new NodeRef(
InstanceIdentifier.builder(Nodes.class).child(Node.class, new NodeKey(dpnId)).build());
ForwardingObjectiveBuilder fwdObjBuilder = new ForwardingObjectiveBuilder();
fwdObjBuilder.setOperation(Operation.Add);
fwdObjBuilder.setFlag(Flag.Versatile);
MatchBuilder matchBuilder = new MatchBuilder();
// set Ethernet type - IPv4
EthernetMatch etherMatch = AtriumUtils.getEtherMatch(Bgprouter.IPV4_ETH_TYPE);
matchBuilder.setEthernetMatch(etherMatch);
// Ip type Match
IpMatch ipMatch = AtriumUtils.getIcmpIpMatchType();
matchBuilder.setIpMatch(ipMatch);
ActionData puntAction = new ActionData(ActionUtils.punt_to_controller, new String[] { null });
fwdObjBuilder.setMatch(matchBuilder.build());
List<Action> actions = new ArrayList<>();
actions.add(puntAction.buildAction());
fwdObjBuilder.setAction(actions);
ForwardInputBuilder forwardInputBuilderSrc = new ForwardInputBuilder();
forwardInputBuilderSrc.setNode(nodeRef);
forwardInputBuilderSrc.setForwardingObjective(fwdObjBuilder.build());
flowObjectivesService.forward(forwardInputBuilderSrc.build());
}
开发者ID:onfsdn,项目名称:atrium-odl,代码行数:32,代码来源:Bgprouter.java
示例19: sendArp
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; //导入依赖的package包/类
/**
* Sends ARP Request as packet-out from the given port (node connector).
*
* @param senderAddress
* the addresses used in sender part of ARP packet
* @param tpa
* the target protocol address, in this case IPv4 address for
* which MAC should be discovered
* @param egressNc
* the path to node connector from where the ARP packet will be
* sent
* @return future result about success of packet-out
*/
public ListenableFuture<RpcResult<Void>> sendArp(ArpMessageAddress senderAddress, Ipv4Address tpa,
InstanceIdentifier<NodeConnector> egressNc) {
checkNotNull(senderAddress);
checkNotNull(tpa);
checkNotNull(egressNc);
final Ethernet arpFrame = createArpFrame(senderAddress, tpa);
byte[] arpFrameAsBytes;
try {
arpFrameAsBytes = arpFrame.serialize();
} catch (PacketException e) {
LOG.warn("Serializition of ARP packet is not successful.", e);
if (LOG.isDebugEnabled()) {
LOG.debug("ARP packet: {}", ArpUtils.getArpFrameToStringFormat(arpFrame));
}
return Futures.immediateFailedFuture(e);
}
// Generate packet with destination switch and port
TransmitPacketInput packet = new TransmitPacketInputBuilder().setEgress(new NodeConnectorRef(egressNc))
.setNode(new NodeRef(egressNc.firstIdentifierOf(Node.class))).setPayload(arpFrameAsBytes).build();
if (LOG.isTraceEnabled()) {
LOG.trace("Sending ARP REQUEST \n{}", ArpUtils.getArpFrameToStringFormat(arpFrame));
}
Future<RpcResult<Void>> futureTransmitPacketResult = packetProcessingService.transmitPacket(packet);
return JdkFutureAdapters.listenInPoolThread(futureTransmitPacketResult);
}
开发者ID:onfsdn,项目名称:atrium-odl,代码行数:40,代码来源:ArpSender.java
示例20: createNodeRefTest
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; //导入依赖的package包/类
@Test
public void createNodeRefTest() throws Exception {
NodeKey mockNodeKey = mock(NodeKey.class);
InstanceIdentifier<?> iid = InstanceIdentifier.builder(Nodes.class).child(Node.class, mockNodeKey).build();
NodeRef nodeRef = new NodeRef(iid);
assertEquals(nodeRef, IidFactory.createNodeRef(iid));
}
开发者ID:opendaylight,项目名称:nic,代码行数:8,代码来源:IidFactoryTest.java
注:本文中的org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论