本文整理汇总了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;
}
示例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();
}
示例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();
}
示例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();
}
示例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());
}
示例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);
}
示例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);
}
示例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;
}
示例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);
}
}
示例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;
}
示例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;
}
示例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;
}