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


Java PacketContext.block方法代码示例

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


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

示例1: process

import org.onosproject.net.packet.PacketContext; //导入方法依赖的package包/类
@Override
public void process(PacketContext context) {
    if (context == null || context.isHandled()) {
        return;
    }

    Ethernet eth = context.inPacket().parsed();
    if (eth == null || (eth.getEtherType() != TYPE_LLDP && eth.getEtherType() != TYPE_BSN)) {
        return;
    }

    LinkDiscovery ld = discoverers.get(context.inPacket().receivedFrom().deviceId());
    if (ld == null) {
        return;
    }

    if (ld.handleLldp(context)) {
        context.block();
    }
}
 
开发者ID:shlee89,项目名称:athena,代码行数:21,代码来源:LldpLinkProvider.java

示例2: sendReply

import org.onosproject.net.packet.PacketContext; //导入方法依赖的package包/类
private void sendReply(PacketContext context, Ethernet ethReply) {
    if (ethReply == null) {
        return;
    }
    ConnectPoint srcPoint = context.inPacket().receivedFrom();
    TrafficTreatment treatment = DefaultTrafficTreatment
            .builder()
            .setOutput(srcPoint.port())
            .build();

    packetService.emit(new DefaultOutboundPacket(
            srcPoint.deviceId(),
            treatment,
            ByteBuffer.wrap(ethReply.serialize())));
    context.block();
}
 
开发者ID:opencord,项目名称:vtn,代码行数:17,代码来源:CordVtnDhcpProxy.java

示例3: handleNdp

import org.onosproject.net.packet.PacketContext; //导入方法依赖的package包/类
private boolean handleNdp(PacketContext context, Ethernet ethPkt) {
    IPv6 ipv6 = (IPv6) ethPkt.getPayload();

    if (ipv6.getNextHeader() != IPv6.PROTOCOL_ICMP6) {
        return false;
    }
    ICMP6 icmpv6 = (ICMP6) ipv6.getPayload();
    if (icmpv6.getIcmpType() == ICMP6.NEIGHBOR_ADVERTISEMENT) {
        forward(ethPkt, context.inPacket().receivedFrom());
    } else if (icmpv6.getIcmpType() == ICMP6.NEIGHBOR_SOLICITATION) {
        reply(ethPkt, context.inPacket().receivedFrom());
    } else {
        return false;
    }
    context.block();
    return true;
}
 
开发者ID:ravikumaran2015,项目名称:ravikumaran201504,代码行数:18,代码来源:ProxyArpManager.java

示例4: process

import org.onosproject.net.packet.PacketContext; //导入方法依赖的package包/类
@Override
public void process(PacketContext context) {
    if (context.isHandled()) {
        return;
    }

    if (interfaceService.getInterfacesByPort(context.inPacket().receivedFrom()).isEmpty()) {
        // Don't handle packets that don't come from one of our configured interfaces
        return;
    }

    Ethernet eth = context.inPacket().parsed();
    if (eth == null) {
        return;
    }

    if (!handle(eth)) {
        return;
    }

    context.block();
}
 
开发者ID:opennetworkinglab,项目名称:onos,代码行数:23,代码来源:DirectHostManager.java

示例5: handlePacket

import org.onosproject.net.packet.PacketContext; //导入方法依赖的package包/类
private void handlePacket(PacketContext context) {
    InboundPacket pkt = context.inPacket();
    Ethernet ethPkt = pkt.parsed();

    NeighbourMessageContext msgContext =
            DefaultNeighbourMessageContext.createContext(ethPkt, pkt.receivedFrom(), actions);

    if (msgContext == null) {
        return;
    }

    if (handleMessage(msgContext)) {
        context.block();
    }

}
 
开发者ID:opennetworkinglab,项目名称:onos,代码行数:17,代码来源:NeighbourResolutionManager.java

示例6: flood

import org.onosproject.net.packet.PacketContext; //导入方法依赖的package包/类
private void flood(PacketContext context) {
    if (topologyService.isBroadcastPoint(topologyService.currentTopology(),
            context.inPacket().receivedFrom())) {
        packetOut(context, PortNumber.FLOOD);
    } else {
        context.block();
    }
}
 
开发者ID:shlee89,项目名称:athena,代码行数:9,代码来源:ReactiveForwarding.java

示例7: sendReply

import org.onosproject.net.packet.PacketContext; //导入方法依赖的package包/类
/**
 * Sends the Ethernet reply frame via the Packet Service.
 *
 * @param context the context of the incoming frame
 * @param reply the Ethernet reply frame
 */
private void sendReply(PacketContext context, Ethernet reply) {
    if (reply != null) {
        TrafficTreatment.Builder builder = DefaultTrafficTreatment.builder();
        ConnectPoint sourcePoint = context.inPacket().receivedFrom();
        builder.setOutput(sourcePoint.port());
        context.block();
        packetService.emit(new DefaultOutboundPacket(sourcePoint.deviceId(),
                builder.build(), ByteBuffer.wrap(reply.serialize())));
    }
}
 
开发者ID:shlee89,项目名称:athena,代码行数:17,代码来源:DhcpManager.java

示例8: flood

import org.onosproject.net.packet.PacketContext; //导入方法依赖的package包/类
private void flood(PacketContext context) {
    if (topologyService.isBroadcastPoint(topologyService.currentTopology(),
                                         context.inPacket().receivedFrom())) {
        packetOut(context, PortNumber.FLOOD);
    } else {
        context.block();
    }
}
 
开发者ID:shlee89,项目名称:athena,代码行数:9,代码来源:ReactiveForwarding.java

示例9: handlePacket

import org.onosproject.net.packet.PacketContext; //导入方法依赖的package包/类
@Override
public boolean handlePacket(PacketContext context) {
    checkPermission(PACKET_WRITE);

    InboundPacket pkt = context.inPacket();
    Ethernet ethPkt = pkt.parsed();

    if (ethPkt == null) {
        return false;
    }

    MessageContext msgContext = createContext(ethPkt, pkt.receivedFrom());

    if (msgContext == null) {
        return false;
    }

    switch (msgContext.type()) {
    case REPLY:
        forward(msgContext.packet(), msgContext.inPort());
        break;
    case REQUEST:
        replyInternal(msgContext);
        break;
    default:
        return false;
    }

    context.block();
    return true;
}
 
开发者ID:shlee89,项目名称:athena,代码行数:32,代码来源:ProxyArpManager.java

示例10: processArpRequest

import org.onosproject.net.packet.PacketContext; //导入方法依赖的package包/类
/**
 * Emits ARP reply with fake MAC address for a given ARP request.
 * It only handles requests for the registered gateway IPs and host IPs.
 *
 * @param context packet context
 * @param ethPacket ethernet packet
 */
private void processArpRequest(PacketContext context, Ethernet ethPacket) {
    ARP arpPacket = (ARP) ethPacket.getPayload();
    Ip4Address targetIp = Ip4Address.valueOf(arpPacket.getTargetProtocolAddress());

    MacAddress gatewayMac = gateways.get(targetIp);
    MacAddress replyMac = gatewayMac != null ? gatewayMac :
            getMacFromHostService(targetIp);

    if (replyMac.equals(MacAddress.NONE)) {
        forwardArpRequest(context, ethPacket);
        return;
    }

    Ethernet ethReply = ARP.buildArpReply(
            targetIp,
            replyMac,
            ethPacket);

    TrafficTreatment treatment = DefaultTrafficTreatment.builder()
            .setOutput(context.inPacket().receivedFrom().port())
            .build();

    packetService.emit(new DefaultOutboundPacket(
            context.inPacket().receivedFrom().deviceId(),
            treatment,
            ByteBuffer.wrap(ethReply.serialize())));

    context.block();
}
 
开发者ID:opencord,项目名称:vtn,代码行数:37,代码来源:CordVtnArpProxy.java

示例11: processArpReply

import org.onosproject.net.packet.PacketContext; //导入方法依赖的package包/类
private void processArpReply(PacketContext context, Ethernet ethPacket) {
    ARP arpPacket = (ARP) ethPacket.getPayload();
    Ip4Address targetIp = Ip4Address.valueOf(arpPacket.getTargetProtocolAddress());

    DeviceId deviceId = context.inPacket().receivedFrom().deviceId();
    Host host = hostService.getHostsByIp(targetIp).stream()
            .filter(h -> h.location().deviceId().equals(deviceId))
            .findFirst()
            .orElse(null);

    if (host == null) {
        // do nothing for the unknown ARP reply
        log.trace("No host found for {} in {}", targetIp, deviceId);
        context.block();
        return;
    }

    TrafficTreatment treatment = DefaultTrafficTreatment.builder()
            .setOutput(host.location().port())
            .build();

    packetService.emit(new DefaultOutboundPacket(
            deviceId,
            treatment,
            ByteBuffer.wrap(ethPacket.serialize())));

    context.block();
}
 
开发者ID:opencord,项目名称:vtn,代码行数:29,代码来源:CordVtnArpProxy.java

示例12: forwardArpRequest

import org.onosproject.net.packet.PacketContext; //导入方法依赖的package包/类
private void forwardArpRequest(PacketContext context, Ethernet ethPacket) {
    DeviceId deviceId = context.inPacket().receivedFrom().deviceId();
    PortNumber inputPort = context.inPacket().receivedFrom().port();

    Host host = hostService.getHost(HostId.hostId(ethPacket.getSourceMAC()));
    NetworkType networkType = Instance.of(host).netType();
    if (host == null || (networkType != MANAGEMENT_HOST &&
            networkType != FLAT)) {
        context.block();
        log.trace("Failed to handle ARP request");
        return;
    }

    PortNumber outputPort = networkType == MANAGEMENT_HOST ?
            hostMgmtPort(deviceId) : dataPort(deviceId);
    if (inputPort.equals(outputPort)) {
        context.block();
        return;
    }

    if (outputPort != null) {
        TrafficTreatment treatment = DefaultTrafficTreatment.builder()
                .setOutput(outputPort)
                .build();

        packetService.emit(new DefaultOutboundPacket(
                context.inPacket().receivedFrom().deviceId(),
                treatment,
                ByteBuffer.wrap(ethPacket.serialize())));
    } else {
        log.trace("Failed to handle ARP request");
    }

    context.block();
}
 
开发者ID:opencord,项目名称:vtn,代码行数:36,代码来源:CordVtnArpProxy.java

示例13: process

import org.onosproject.net.packet.PacketContext; //导入方法依赖的package包/类
@Override
public void process(PacketContext context) {
    if (context == null) {
        return;
    }
    LinkDiscovery ld = discoverers.get(
            context.inPacket().receivedFrom().deviceId());
    if (ld == null) {
        return;
    }

    if (ld.handleLLDP(context)) {
        context.block();
    }
}
 
开发者ID:ravikumaran2015,项目名称:ravikumaran201504,代码行数:16,代码来源:LLDPLinkProvider.java

示例14: handleArp

import org.onosproject.net.packet.PacketContext; //导入方法依赖的package包/类
private boolean handleArp(PacketContext context, Ethernet ethPkt) {
    ARP arp = (ARP) ethPkt.getPayload();

    if (arp.getOpCode() == ARP.OP_REPLY) {
        forward(ethPkt, context.inPacket().receivedFrom());
    } else if (arp.getOpCode() == ARP.OP_REQUEST) {
        reply(ethPkt, context.inPacket().receivedFrom());
    } else {
        return false;
    }
    context.block();
    return true;
}
 
开发者ID:ravikumaran2015,项目名称:ravikumaran201504,代码行数:14,代码来源:ProxyArpManager.java

示例15: processArpPacket

import org.onosproject.net.packet.PacketContext; //导入方法依赖的package包/类
private void processArpPacket(PacketContext context, Ethernet ethernet) {
    ARP arp = (ARP) ethernet.getPayload();
    if (arp.getOpCode() != ARP.OP_REQUEST) {
        return;
    }

    if (log.isTraceEnabled()) {
        log.trace("ARP request received from {} for {}",
                Ip4Address.valueOf(arp.getSenderProtocolAddress()).toString(),
                Ip4Address.valueOf(arp.getTargetProtocolAddress()).toString());
    }

    IpAddress targetIp = Ip4Address.valueOf(arp.getTargetProtocolAddress());
    if (!isServiceIp(targetIp.getIp4Address())) {
        log.trace("Unknown target ARP request for {}, ignore it", targetIp);
        return;
    }

    MacAddress targetMac = Constants.DEFAULT_EXTERNAL_ROUTER_MAC;
    Ethernet ethReply = ARP.buildArpReply(targetIp.getIp4Address(),
            targetMac, ethernet);

    TrafficTreatment treatment = DefaultTrafficTreatment.builder()
            .setOutput(context.inPacket().receivedFrom().port())
            .build();

    packetService.emit(new DefaultOutboundPacket(
            context.inPacket().receivedFrom().deviceId(),
            treatment,
            ByteBuffer.wrap(ethReply.serialize())));

    context.block();
}
 
开发者ID:opennetworkinglab,项目名称:onos,代码行数:34,代码来源:OpenstackRoutingArpHandler.java


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