/** * Converts byte array of prefix value to IpPrefix object. * * @param value byte array of prefix value * @param length prefix length in bits * @return object of IpPrefix */ public static IpPrefix bytesToPrefix(byte[] value, int length) { if (value.length != IPV4_SIZE) { value = Arrays.copyOf(value, IPV4_SIZE); } IpPrefix ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET, value, length); return ipPrefix; } }
/** * Add the specified s,g to join field. * * @param saddr the source address of the route * @param gaddr the group address of the route * @param join true for a join, false for a prune. */ public void addJoinPrune(String saddr, String gaddr, boolean join) { IpPrefix gpfx = IpPrefix.valueOf(gaddr); IpPrefix spfx = IpPrefix.valueOf(saddr); addJoinPrune(spfx, gpfx, join); }
/** * PIM Encoded Source Address. * * @param addr IPv4 or IPv6 */ public void setAddr(String addr) { IpPrefix spfx = IpPrefix.valueOf(addr); setAddr(spfx); }
/** * PIM encoded source address. * * @param addr IPv4 or IPv6 */ public void setAddr(String addr) { setAddr(IpPrefix.valueOf(addr)); }
@Override public Criterion decodeCriterion(ObjectNode json) { String ip = nullIsIllegal(json.get(CriterionCodec.IP), CriterionCodec.IP + MISSING_MEMBER_MESSAGE).asText(); return Criteria.matchIPSrc(IpPrefix.valueOf(ip)); } }
/** * Creates a OpenstackSecurityGroupRule instance. * * @return OpenstackSecurityGroupRule object */ public OpenstackSecurityGroupRule build() { int portRangeMinInt = (portRangeMin == null || portRangeMin.equals("null")) ? -1 : Integer.parseInt(portRangeMax); int portRangeMaxInt = (portRangeMax == null || portRangeMax.equals("null")) ? -1 : Integer.parseInt(portRangeMax); IpPrefix ipPrefix = (remoteIpPrefix == null || remoteIpPrefix.equals("null")) ? null : IpPrefix.valueOf(remoteIpPrefix); return new OpenstackSecurityGroupRule(Direction.valueOf(direction.toUpperCase()), etherType, id, portRangeMaxInt, portRangeMinInt, protocol, remoteGroupId, ipPrefix, secuityGroupId, tenantId); } }
@Override public Criterion decodeCriterion(ObjectNode json) { String ip = nullIsIllegal(json.get(CriterionCodec.IP), CriterionCodec.IP + MISSING_MEMBER_MESSAGE).asText(); return Criteria.matchIPv6Src(IpPrefix.valueOf(ip)); } }
@Override public Criterion decodeCriterion(ObjectNode json) { String ip = nullIsIllegal(json.get(CriterionCodec.IP), CriterionCodec.IP + MISSING_MEMBER_MESSAGE).asText(); return Criteria.matchIPv6Dst(IpPrefix.valueOf(ip)); } }
private void buildMatchDirection(TrafficSelector.Builder sBuilder, OpenstackSecurityGroupRule.Direction direction, Ip4Address vmIp) { if (direction.equals(OpenstackSecurityGroupRule.Direction.EGRESS)) { sBuilder.matchIPSrc(IpPrefix.valueOf(vmIp, 32)); } else { sBuilder.matchIPDst(IpPrefix.valueOf(vmIp, 32)); } }
@Override public Criterion decodeCriterion(ObjectNode json) { String ip = nullIsIllegal(json.get(CriterionCodec.IP), CriterionCodec.IP + MISSING_MEMBER_MESSAGE).asText(); return Criteria.matchIPDst(IpPrefix.valueOf(ip)); } }
/** * Creates a OpenstackSecurityGroupRule instance. * * @return OpenstackSecurityGroupRule object */ public OpenstackSecurityGroupRule build() { int portRangeMinInt = (portRangeMin == null || portRangeMin.equals("null")) ? -1 : Integer.parseInt(portRangeMin); int portRangeMaxInt = (portRangeMax == null || portRangeMax.equals("null")) ? -1 : Integer.parseInt(portRangeMax); IpPrefix ipPrefix = (remoteIpPrefix == null || remoteIpPrefix.equals("null")) ? null : IpPrefix.valueOf(remoteIpPrefix); return new OpenstackSecurityGroupRule(Direction.valueOf(direction.toUpperCase()), etherType, id, portRangeMaxInt, portRangeMinInt, protocol, remoteGroupId, ipPrefix, secuityGroupId, tenantId); } }
@Override public IpPrefix read(Kryo kryo, Input input, Class<IpPrefix> type) { int octLen = input.readInt(); checkArgument(octLen <= IpAddress.INET6_BYTE_LENGTH); byte[] octs = new byte[octLen]; input.readBytes(octs); int prefLen = input.readInt(); // Use the address size to decide whether it is IPv4 or IPv6 address if (octLen == IpAddress.INET_BYTE_LENGTH) { return IpPrefix.valueOf(IpAddress.Version.INET, octs, prefLen); } if (octLen == IpAddress.INET6_BYTE_LENGTH) { return IpPrefix.valueOf(IpAddress.Version.INET6, octs, prefLen); } return null; // Shouldn't be reached } }
/** * Generates an IP prefix. * * @return the IP prefix of the IP address */ public IpPrefix toIpPrefix() { if (isIp4()) { return IpPrefix.valueOf(new IpAddress(Version.INET, octets), Ip4Address.BIT_LENGTH); } else { return IpPrefix.valueOf(new IpAddress(Version.INET6, octets), Ip6Address.BIT_LENGTH); } }
@Override public boolean isIpAddressLocal(IpAddress ipAddress) { if (ipAddress.isIp4()) { return localPrefixTable4.getValuesForKeysPrefixing( createBinaryString( IpPrefix.valueOf(ipAddress, Ip4Address.BIT_LENGTH))) .iterator().hasNext(); } else { return localPrefixTable6.getValuesForKeysPrefixing( createBinaryString( IpPrefix.valueOf(ipAddress, Ip6Address.BIT_LENGTH))) .iterator().hasNext(); } }
/** * Gets the set of configured local IPv4 prefixes. * * @return IPv4 prefixes */ public Set<LocalIpPrefixEntry> localIp4PrefixEntries() { Set<LocalIpPrefixEntry> prefixes = Sets.newHashSet(); JsonNode prefixesNode = object.get(IP4LOCALPREFIXES); if (prefixesNode == null) { log.warn("ip4LocalPrefixes is null!"); return prefixes; } prefixesNode.forEach(jsonNode -> { prefixes.add(new LocalIpPrefixEntry( IpPrefix.valueOf(jsonNode.get(IPPREFIX).asText()), IpPrefixType.valueOf(jsonNode.get(TYPE).asText()), IpAddress.valueOf(jsonNode.get(GATEWAYIP).asText()))); }); return prefixes; }
@Override public RouteEntry getLongestMatchableRouteEntry(IpAddress ipAddress) { RouteEntry routeEntry = null; Iterable<RouteEntry> routeEntries; if (ipAddress.isIp4()) { routeEntries = ribTable4.getValuesForKeysPrefixing( createBinaryString( IpPrefix.valueOf(ipAddress, Ip4Address.BIT_LENGTH))); } else { routeEntries = ribTable6.getValuesForKeysPrefixing( createBinaryString( IpPrefix.valueOf(ipAddress, Ip6Address.BIT_LENGTH))); } if (routeEntries == null) { return null; } Iterator<RouteEntry> it = routeEntries.iterator(); while (it.hasNext()) { routeEntry = it.next(); } return routeEntry; }
@Override protected void execute() { SubnetService service = get(SubnetService.class); if (id == null || networkId == null || tenantId == null) { print("id,networkId,tenantId can not be null"); return; } Subnet subnet = new DefaultSubnet(SubnetId.subnetId(id), subnetName, TenantNetworkId.networkId(networkId), TenantId.tenantId(tenantId), ipVersion, cidr == null ? null : IpPrefix.valueOf(cidr), gatewayIp == null ? null : IpAddress.valueOf(gatewayIp), dhcpEnabled, shared, hostRoutes, ipV6AddressMode == null ? null : Mode.valueOf(ipV6AddressMode), ipV6RaMode == null ? null : Mode.valueOf(ipV6RaMode), allocationPools); Set<Subnet> subnetsSet = Sets.newHashSet(); subnetsSet.add(subnet); service.updateSubnets(subnetsSet); }
@Override protected void execute() { SubnetService service = get(SubnetService.class); if (id == null || networkId == null || tenantId == null) { print("id,networkId,tenantId can not be null"); return; } Subnet subnet = new DefaultSubnet(SubnetId.subnetId(id), subnetName, TenantNetworkId.networkId(networkId), TenantId.tenantId(tenantId), ipVersion, cidr == null ? null : IpPrefix.valueOf(cidr), gatewayIp == null ? null : IpAddress.valueOf(gatewayIp), dhcpEnabled, shared, hostRoutes, ipV6AddressMode == null ? null : Mode.valueOf(ipV6AddressMode), ipV6RaMode == null ? null : Mode.valueOf(ipV6RaMode), allocationPools); Set<Subnet> subnetsSet = Sets.newHashSet(subnet); service.createSubnets(subnetsSet); }
@Override protected void execute() { SubnetService service = get(SubnetService.class); if (id == null || networkId == null || tenantId == null) { print("id,networkId,tenantId can not be null"); return; } Subnet subnet = new DefaultSubnet(SubnetId.subnetId(id), subnetName, TenantNetworkId.networkId(networkId), TenantId.tenantId(tenantId), ipVersion, cidr == null ? null : IpPrefix.valueOf(cidr), gatewayIp == null ? null : IpAddress.valueOf(gatewayIp), dhcpEnabled, shared, hostRoutes, ipV6AddressMode == null ? null : Mode.valueOf(ipV6AddressMode), ipV6RaMode == null ? null : Mode.valueOf(ipV6RaMode), allocationPools); Set<Subnet> subnetsSet = Sets.newHashSet(subnet); service.createSubnets(subnetsSet); }
ForwardingObjective.Builder buildFlowObjective(DeviceId id, OpenstackSecurityGroupRule sgRule, Ip4Address vmIp, IpPrefix remoteIp) { if (remoteIp != null && remoteIp.equals(IpPrefix.valueOf(vmIp, 32))) { return null; } TrafficSelector.Builder sBuilder = DefaultTrafficSelector.builder(); TrafficTreatment.Builder tBuilder = DefaultTrafficTreatment.builder(); buildMatchs(sBuilder, sgRule, vmIp, remoteIp); ForwardingObjective.Builder foBuilder = DefaultForwardingObjective.builder() .withSelector(sBuilder.build()) .withTreatment(tBuilder.build()) .withPriority(ACL_RULE_PRIORITY) .withFlag(ForwardingObjective.Flag.SPECIFIC) .fromApp(appId); return foBuilder; }