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


Java IpPrefix.prefixLength方法代码示例

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


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

示例1: generateRibForwardingObj

import org.onlab.packet.IpPrefix; //导入方法依赖的package包/类
private ForwardingObjective.Builder generateRibForwardingObj(IpPrefix prefix,
                                                             Integer nextId) {
    TrafficSelector selector = DefaultTrafficSelector.builder()
            .matchEthType(Ethernet.TYPE_IPV4)
            .matchIPDst(prefix)
            .build();

    int priority = prefix.prefixLength() * PRIORITY_MULTIPLIER + PRIORITY_OFFSET;

    ForwardingObjective.Builder fwdBuilder = DefaultForwardingObjective.builder()
            .fromApp(routerAppId)
            .makePermanent()
            .withSelector(selector)
            .withPriority(priority)
            .withFlag(ForwardingObjective.Flag.SPECIFIC);

    if (nextId == null) {
        // Route withdraws are not specified with next hops. Generating
        // dummy treatment as there is no equivalent nextId info.
        fwdBuilder.withTreatment(DefaultTrafficTreatment.builder().build());
    } else {
        fwdBuilder.nextStep(nextId);
    }
    return fwdBuilder;
}
 
开发者ID:shlee89,项目名称:athena,代码行数:26,代码来源:SingleSwitchFibInstaller.java

示例2: createForwardingObjective

import org.onlab.packet.IpPrefix; //导入方法依赖的package包/类
/**
 * Creates a new forwarding objective with the given parameters.
 *
 * @param prefix IP prefix
 * @param add whether to create an add objective or a remove objective
 * @return new forwarding objective
 */
private ForwardingObjective createForwardingObjective(IpPrefix prefix,
                                                      boolean add) {
    TrafficSelector selector = DefaultTrafficSelector.builder()
            .matchEthType(Ethernet.TYPE_IPV4)
            .matchIPDst(prefix)
            .build();

    int priority = prefix.prefixLength() * 5 + 100;
    ForwardingObjective.Builder fwdBuilder = DefaultForwardingObjective.builder()
            .fromApp(APPID)
            .makePermanent()
            .withSelector(selector)
            .withPriority(priority)
            .withFlag(ForwardingObjective.Flag.SPECIFIC);

    if (add) {
        fwdBuilder.nextStep(NEXT_ID);
    } else {
        fwdBuilder.withTreatment(DefaultTrafficTreatment.builder().build());
    }

    return add ? fwdBuilder.add() : fwdBuilder.remove();
}
 
开发者ID:shlee89,项目名称:athena,代码行数:31,代码来源:SingleSwitchFibInstallerTest.java

示例3: createBinaryString

import org.onlab.packet.IpPrefix; //导入方法依赖的package包/类
/**
 * Creates the binary string representation of an IP prefix.
 * The prefix can be either IPv4 or IPv6.
 * The string length is equal to the prefix length + 1.
 *
 * For each string, we put a extra "0" in the front. The purpose of
 * doing this is to store the default route inside InvertedRadixTree.
 *
 * @param ipPrefix the IP prefix to use
 * @return the binary string representation
 */
public static String createBinaryString(IpPrefix ipPrefix) {
    if (ipPrefix.prefixLength() == 0) {
        return "0";
    }

    byte[] octets = ipPrefix.address().toOctets();
    StringBuilder result = new StringBuilder(ipPrefix.prefixLength());
    for (int i = 0; i < ipPrefix.prefixLength(); i++) {
        int byteOffset = i / Byte.SIZE;
        int bitOffset = i % Byte.SIZE;
        int mask = 1 << (Byte.SIZE - 1 - bitOffset);
        byte value = octets[byteOffset];
        boolean isSet = ((value & mask) != 0);
        result.append(isSet ? "1" : "0");
    }

    return "0" + result.toString();
}
 
开发者ID:shlee89,项目名称:athena,代码行数:30,代码来源:RouteEntry.java

示例4: createBinaryString

import org.onlab.packet.IpPrefix; //导入方法依赖的package包/类
private static String createBinaryString(IpPrefix ipPrefix) {
    byte[] octets = ipPrefix.address().toOctets();
    StringBuilder result = new StringBuilder(ipPrefix.prefixLength());
    result.append("0");
    for (int i = 0; i < ipPrefix.prefixLength(); i++) {
        int byteOffset = i / Byte.SIZE;
        int bitOffset = i % Byte.SIZE;
        int mask = 1 << (Byte.SIZE - 1 - bitOffset);
        byte value = octets[byteOffset];
        boolean isSet = ((value & mask) != 0);
        result.append(isSet ? "1" : "0");
    }

    return result.toString();
}
 
开发者ID:shlee89,项目名称:athena,代码行数:16,代码来源:LocalRouteStore.java

示例5: processSpecific

import org.onlab.packet.IpPrefix; //导入方法依赖的package包/类
/**
 * SoftRouter has a single specific table - the FIB Table. It emulates
 * LPM matching of dstIP by using higher priority flows for longer prefixes.
 * Flows are forwarded using flow-actions
 *
 * @param fwd The forwarding objective of type simple
 * @return A collection of flow rules meant to be delivered to the flowrule
 *         subsystem. Typically the returned collection has a single flowrule.
 *         May return empty collection in case of failures.
 *
 */
private Collection<FlowRule> processSpecific(ForwardingObjective fwd) {
    log.debug("Processing specific forwarding objective to next:{}", fwd.nextId());
    TrafficSelector selector = fwd.selector();
    EthTypeCriterion ethType =
            (EthTypeCriterion) selector.getCriterion(Criterion.Type.ETH_TYPE);
    // XXX currently supporting only the L3 unicast table
    if (ethType == null || ethType.ethType().toShort() != Ethernet.TYPE_IPV4) {
        fail(fwd, ObjectiveError.UNSUPPORTED);
        return Collections.emptySet();
    }

    IpPrefix ipPrefix = ((IPCriterion)
            selector.getCriterion(Criterion.Type.IPV4_DST)).ip();

    TrafficSelector.Builder filteredSelector = DefaultTrafficSelector.builder()
                    .matchEthType(Ethernet.TYPE_IPV4);

    if (ipPrefix.prefixLength() != 0) {
        filteredSelector.matchIPDst(ipPrefix);
    }

    TrafficTreatment tt = null;
    if (fwd.nextId() != null) {
        NextGroup next = flowObjectiveStore.getNextGroup(fwd.nextId());
        if (next == null) {
            log.error("next-id {} does not exist in store", fwd.nextId());
            return Collections.emptySet();
        }
        tt = appKryo.deserialize(next.data());
        if (tt == null)  {
            log.error("Error in deserializing next-id {}", fwd.nextId());
            return Collections.emptySet();
        }
    }

    FlowRule.Builder ruleBuilder = DefaultFlowRule.builder()
            .fromApp(fwd.appId())
            .withPriority(fwd.priority())
            .forDevice(deviceId)
            .withSelector(filteredSelector.build());

    if (tt != null) {
        ruleBuilder.withTreatment(tt);
    }

    if (fwd.permanent()) {
        ruleBuilder.makePermanent();
    } else {
        ruleBuilder.makeTemporary(fwd.timeout());
    }

    ruleBuilder.forTable(FIB_TABLE);
    return Collections.singletonList(ruleBuilder.build());
}
 
开发者ID:shlee89,项目名称:athena,代码行数:66,代码来源:SoftRouterPipeline.java

示例6: setAddr

import org.onlab.packet.IpPrefix; //导入方法依赖的package包/类
/**
 * PIM Encoded Source Address.
 *
 * @param spfx IPv4 or IPv6 address prefix
 */
public void setAddr(IpPrefix spfx) {
    this.addr = spfx.address();
    this.masklen = (byte) spfx.prefixLength();
    this.family = (byte) ((this.addr.isIp4()) ? PIM.ADDRESS_FAMILY_IP4 : PIM.ADDRESS_FAMILY_IP6);
}
 
开发者ID:shlee89,项目名称:athena,代码行数:11,代码来源:PIMAddrSource.java

示例7: setAddr

import org.onlab.packet.IpPrefix; //导入方法依赖的package包/类
/**
 * Set the encoded source address.
 *
 * @param pfx address prefix
 */
public void setAddr(IpPrefix pfx) {
    this.addr = pfx.address();
    this.masklen = (byte) pfx.prefixLength();
    this.family = (byte) ((this.addr.isIp4()) ? PIM.ADDRESS_FAMILY_IP4 : PIM.ADDRESS_FAMILY_IP6);
}
 
开发者ID:shlee89,项目名称:athena,代码行数:11,代码来源:PIMAddrGroup.java

示例8: getPriorityFromPrefix

import org.onlab.packet.IpPrefix; //导入方法依赖的package包/类
private int getPriorityFromPrefix(IpPrefix prefix) {
    return (prefix.isIp4()) ?
            2000 * prefix.prefixLength() + MIN_IP_PRIORITY :
            500 * prefix.prefixLength() + MIN_IP_PRIORITY;
}
 
开发者ID:shlee89,项目名称:athena,代码行数:6,代码来源:ControlPlaneRedirectManager.java

示例9: upStreamPacketProcessor

import org.onlab.packet.IpPrefix; //导入方法依赖的package包/类
private void upStreamPacketProcessor(IPv4 ipPacket, DeviceId deviceId) {
    IpAddress srcIp = IpAddress.valueOf(ipPacket.getSourceAddress());
    IpAddress dstIp = IpAddress.valueOf(ipPacket.getDestinationAddress());
    FloatingIp floatingIp = null;
    Collection<FloatingIp> floatingIps = floatingIpService
            .getFloatingIps();
    Set<FloatingIp> floatingIpSet = Sets.newHashSet(floatingIps)
            .stream().collect(Collectors.toSet());
    for (FloatingIp f : floatingIpSet) {
        IpAddress fixIp = f.fixedIp();
        if (fixIp != null && fixIp.equals(srcIp)) {
            floatingIp = f;
            break;
        }
    }
    if (floatingIp == null) {
        return;
    }
    Subnet subnet = getSubnetOfFloatingIP(floatingIp);
    IpAddress gwIp = subnet.gatewayIp();
    Port exportPort = exPortOfDevice.get(deviceId);
    MacAddress exPortMac = MacAddress.valueOf(exportPort.annotations()
            .value(AnnotationKeys.PORT_MAC));
    IpPrefix ipPrefix = subnet.cidr();
    if (ipPrefix == null) {
        return;
    }
    int mask = ipPrefix.prefixLength();
    if (mask <= 0) {
        return;
    }
    Ethernet ethernet = null;
    // if the same ip segment
    if (IpUtil.checkSameSegment(floatingIp.floatingIp(), dstIp, mask)) {
        ethernet = buildArpRequest(dstIp, floatingIp.floatingIp(),
                                   exPortMac);
    } else {
        ethernet = buildArpRequest(gwIp, floatingIp.floatingIp(),
                                   exPortMac);
    }
    if (ethernet != null) {
        sendPacketOut(deviceId, exportPort.number(), ethernet);
    }
}
 
开发者ID:shlee89,项目名称:athena,代码行数:45,代码来源:VtnManager.java

示例10: downloadSnatRules

import org.onlab.packet.IpPrefix; //导入方法依赖的package包/类
private boolean downloadSnatRules(DeviceId deviceId, MacAddress srcMac,
                                  IpAddress srcIp, MacAddress dstMac,
                                  IpAddress dstIp, FloatingIp floatingIp) {
    TenantNetwork exNetwork = tenantNetworkService
            .getNetwork(floatingIp.networkId());
    IpAddress fixedIp = floatingIp.fixedIp();
    VirtualPortId vmPortId = floatingIp.portId();
    VirtualPort vmPort = virtualPortService.getPort(vmPortId);
    if (vmPort == null) {
        vmPort = VtnData.getPort(vPortStore, vmPortId);
    }
    Subnet subnet = getSubnetOfFloatingIP(floatingIp);
    IpPrefix ipPrefix = subnet.cidr();
    IpAddress gwIp = subnet.gatewayIp();
    if (ipPrefix == null) {
        return false;
    }
    int mask = ipPrefix.prefixLength();
    if (mask <= 0) {
        return false;
    }
    TenantRouter tenantRouter = TenantRouter
            .tenantRouter(floatingIp.tenantId(), floatingIp.routerId());
    SegmentationId l3vni = vtnRscService.getL3vni(tenantRouter);
    // if the same ip segment
    if (IpUtil.checkSameSegment(srcIp, dstIp, mask)) {
        snatService.programSnatSameSegmentRules(deviceId, l3vni, fixedIp,
                                                dstIp, dstMac, srcMac,
                                                srcIp,
                                                exNetwork.segmentationId(),
                                                Objective.Operation.ADD);
        if (dstIp.equals(gwIp)) {
            snatService
                    .programSnatDiffSegmentRules(deviceId, l3vni, fixedIp,
                                                 dstMac, srcMac, srcIp,
                                                 exNetwork.segmentationId(),
                                                 Objective.Operation.ADD);
        }
    }
    return true;
}
 
开发者ID:shlee89,项目名称:athena,代码行数:42,代码来源:VtnManager.java

示例11: hostToHostIntentGenerator

import org.onlab.packet.IpPrefix; //导入方法依赖的package包/类
/**
 * Generates MultiPointToSinglePointIntent for both source host and
 * destination host located in local SDN network.
 *
 * @param dstIpAddress the destination IP address
 * @param dstConnectPoint the destination host connect point
 * @param dstMacAddress the MAC address of destination host
 * @param srcConnectPoint the connect point where packet-in from
 * @return the generated MultiPointToSinglePointIntent
 */
private MultiPointToSinglePointIntent hostToHostIntentGenerator(
        IpAddress dstIpAddress,
        ConnectPoint dstConnectPoint,
        MacAddress dstMacAddress,
        ConnectPoint srcConnectPoint) {
    checkNotNull(dstIpAddress);
    checkNotNull(dstConnectPoint);
    checkNotNull(dstMacAddress);
    checkNotNull(srcConnectPoint);

    Set<ConnectPoint> ingressPoints = new HashSet<>();
    ingressPoints.add(srcConnectPoint);
    IpPrefix dstIpPrefix = dstIpAddress.toIpPrefix();

    TrafficSelector.Builder selector = DefaultTrafficSelector.builder();
    if (dstIpAddress.isIp4()) {
        selector.matchEthType(Ethernet.TYPE_IPV4);
        selector.matchIPDst(dstIpPrefix);
    } else {
        selector.matchEthType(Ethernet.TYPE_IPV6);
        selector.matchIPv6Dst(dstIpPrefix);
    }

    // Rewrite the destination MAC address
    TrafficTreatment.Builder treatment =
            DefaultTrafficTreatment.builder().setEthDst(dstMacAddress);

    Key key = Key.of(dstIpPrefix.toString(), appId);
    int priority = dstIpPrefix.prefixLength() * PRIORITY_MULTIPLIER
            + PRIORITY_OFFSET;
    MultiPointToSinglePointIntent intent =
            MultiPointToSinglePointIntent.builder()
                    .appId(appId)
                    .key(key)
                    .selector(selector.build())
                    .treatment(treatment.build())
                    .ingressPoints(ingressPoints)
                    .egressPoint(dstConnectPoint)
                    .priority(priority)
                    .constraints(CONSTRAINTS)
                    .build();

    log.trace("Generates ConnectivityHostToHost = {} ", intent);
    return intent;
}
 
开发者ID:shlee89,项目名称:athena,代码行数:56,代码来源:ReactiveRoutingFib.java

示例12: getPriorityFromPrefix

import org.onlab.packet.IpPrefix; //导入方法依赖的package包/类
private int getPriorityFromPrefix(IpPrefix prefix) {
    return (prefix.isIp4()) ?
            2000 * prefix.prefixLength() + SegmentRoutingService.MIN_IP_PRIORITY :
            500 * prefix.prefixLength() + SegmentRoutingService.MIN_IP_PRIORITY;
}
 
开发者ID:shlee89,项目名称:athena,代码行数:6,代码来源:RoutingRulePopulator.java


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