当前位置: 首页>>代码示例>>Java>>正文


Java RawPacket.getPacketData方法代码示例

本文整理汇总了Java中org.opendaylight.controller.sal.packet.RawPacket.getPacketData方法的典型用法代码示例。如果您正苦于以下问题:Java RawPacket.getPacketData方法的具体用法?Java RawPacket.getPacketData怎么用?Java RawPacket.getPacketData使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.opendaylight.controller.sal.packet.RawPacket的用法示例。


在下文中一共展示了RawPacket.getPacketData方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: decodeDataPacket

import org.opendaylight.controller.sal.packet.RawPacket; //导入方法依赖的package包/类
@Override
public Packet decodeDataPacket(RawPacket pkt) {
    // Sanity checks
    if (pkt == null) {
        return null;
    }
    byte[] data = pkt.getPacketData();
    if (data.length <= 0) {
        return null;
    }
    if (pkt.getEncap().equals(LinkEncap.ETHERNET)) {
        Ethernet res = new Ethernet();
        try {
            res.deserialize(data, 0, data.length * NetUtils.NumBitsInAByte);
        } catch (Exception e) {
            logger.warn("Failed to decode packet: {}", e.getMessage());
        }
        return res;
    }
    return null;
}
 
开发者ID:lbchen,项目名称:ODL,代码行数:22,代码来源:DataPacketService.java

示例2: transmitDataPacket

import org.opendaylight.controller.sal.packet.RawPacket; //导入方法依赖的package包/类
@Override
public void transmitDataPacket(RawPacket outPkt) {
    // Sanity check area
    if (outPkt == null) {
        logger.debug("outPkt is null!");
        return;
    }

    NodeConnector outPort = outPkt.getOutgoingNodeConnector();
    if (outPort == null) {
        logger.debug("outPort is null! outPkt: {}", outPkt);
        return;
    }

    if (!connectionOutService.isLocal(outPort.getNode())) {
        logger.debug("data packets will not be sent to {} in a non-master controller", outPort.toString());
        return;
    }


    if (!outPort.getType().equals(
            NodeConnector.NodeConnectorIDType.OPENFLOW)) {
        // The output Port is not of type OpenFlow
        logger.debug("outPort is not OF Type! outPort: {}", outPort);
        return;
    }

    Short port = (Short) outPort.getID();
    Long swID = (Long) outPort.getNode().getID();
    ISwitch sw = this.swID2ISwitch.get(swID);

    if (sw == null) {
        // If we cannot get the controller descriptor we cannot even
        // send out the frame
        logger.debug("swID: {} - sw is null!", swID);
        return;
    }

    byte[] data = outPkt.getPacketData();
    // build action
    OFActionOutput action = new OFActionOutput().setPort(port);
    // build packet out
    OFPacketOut po = new OFPacketOut()
            .setBufferId(OFPacketOut.BUFFER_ID_NONE)
            .setInPort(OFPort.OFPP_NONE)
            .setActions(Collections.singletonList((OFAction) action))
            .setActionsLength((short) OFActionOutput.MINIMUM_LENGTH);

    po.setLengthU(OFPacketOut.MINIMUM_LENGTH + po.getActionsLength()
            + data.length);
    po.setPacketData(data);

    // send PACKET_OUT at high priority
    sw.asyncFastSend(po);
    logger.trace("Transmitted a frame of size: {}", data.length);
}
 
开发者ID:lbchen,项目名称:ODL,代码行数:57,代码来源:DataPacketMuxDemux.java

示例3: receiveDataPacket

import org.opendaylight.controller.sal.packet.RawPacket; //导入方法依赖的package包/类
@Override
public PacketResult receiveDataPacket(RawPacket inPkt) {
    if (inPkt == null) {
        logger.debug("Ignoring null packet");
        return PacketResult.IGNORED;
    }

    byte[] data = inPkt.getPacketData();
    if (data.length <= 0) {
        logger.trace("Ignoring zero length packet");
        return PacketResult.IGNORED;
    }

    if (!inPkt.getEncap().equals(LinkEncap.ETHERNET)) {
        logger.trace("Ignoring non ethernet packet");
        return PacketResult.IGNORED;
    }

    NodeConnector nodeConnector = inPkt.getIncomingNodeConnector();
    if (((Short) nodeConnector.getID()).equals(NodeConnector.SPECIALNODECONNECTORID)) {
        logger.trace("Ignoring ethernet packet received on special port: "
                + inPkt.getIncomingNodeConnector().toString());
        return PacketResult.IGNORED;
    }

    if (!connectionOutService.isLocal(nodeConnector.getNode())) {
        logger.debug("Discoery packets will not be processed from {} in a non-master controller", nodeConnector.toString());
        return PacketResult.IGNORED;
    }

    Ethernet ethPkt = new Ethernet();
    try {
        ethPkt.deserialize(data, 0, data.length * NetUtils.NumBitsInAByte);
    } catch (Exception e) {
        logger.warn("Failed to decode LLDP packet from {}: {}", inPkt.getIncomingNodeConnector(), e);
        return PacketResult.IGNORED;
    }

    if (ethPkt.getPayload() instanceof LLDP) {
        NodeConnector dst = inPkt.getIncomingNodeConnector();
        if (isEnabled(dst)) {
            if (!processDiscoveryPacket(dst, ethPkt)) {
                // Snoop the discovery pkt if not generated from us
                snoopDiscoveryPacket(dst, ethPkt);
            }
            return PacketResult.CONSUME;
        }
    }
    return PacketResult.IGNORED;
}
 
开发者ID:lbchen,项目名称:ODL,代码行数:51,代码来源:DiscoveryService.java


注:本文中的org.opendaylight.controller.sal.packet.RawPacket.getPacketData方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。