@Override public void exitPoplt_network(Poplt_networkContext ctx) { Prefix prefix = Prefix.parse(ctx.network.getText()); _currentPrefixList.getPrefixes().add(prefix); }
/** * Parse a {@link Prefix} from a string. * * @throws IllegalArgumentException if the string does not represent a prefix in canonical form. */ public static @Nonnull Prefix strict(String prefixStr) { Prefix prefix = parse(prefixStr); checkArgument(prefix.toString().equals(prefixStr), "Non-canonical prefix: %s", prefixStr); return prefix; }
@Override public void exitPlrt_prefix(Plrt_prefixContext ctx) { Prefix prefix = Prefix.parse(ctx.prefix.getText()); _currentPrefixListRule.setPrefix(prefix); }
public Vpc(JSONObject jObj) throws JSONException { _vpcId = jObj.getString(JSON_KEY_VPC_ID); _cidrBlock = Prefix.parse(jObj.getString(JSON_KEY_CIDR_BLOCK)); _cidrBlockAssociations = new HashSet<>(); JSONArray cidrArray = jObj.getJSONArray(JSON_KEY_CIDR_BLOCK_ASSOCIATION_SET); for (int index = 0; index < cidrArray.length(); index++) { String cidrBlock = cidrArray.getJSONObject(index).getString(JSON_KEY_CIDR_BLOCK); _cidrBlockAssociations.add(Prefix.parse(cidrBlock)); } }
@Override public void enterRoa_route(Roa_routeContext ctx) { if (ctx.prefix != null) { Prefix prefix = Prefix.parse(ctx.IP_PREFIX().getText()); Map<Prefix, AggregateRoute> aggregateRoutes = _currentRib.getAggregateRoutes(); _currentAggregateRoute = aggregateRoutes.computeIfAbsent(prefix, AggregateRoute::new); } else { _currentAggregateRoute = DUMMY_AGGREGATE_ROUTE; } }
@Override public void exitRoa_range(Roa_rangeContext ctx) { Prefix prefix = Prefix.parse(ctx.prefix.getText()); boolean advertise = ctx.NOT_ADVERTISE() == null; Long cost = ctx.cost == null ? null : toLong(ctx.cost); Map<Prefix, OspfAreaSummary> area = currentVrf() .getOspfProcess() .getSummaries() .computeIfAbsent(_currentOspfArea, k -> new TreeMap<>()); area.put(prefix, new OspfAreaSummary(advertise, cost)); }
@Test public void testRfAddressMask() { Prefix acceptedPrefix1 = Prefix.parse("1.5.3.127/24"); Prefix deniedPrefix1 = Prefix.parse("2.5.6.127/24"); Prefix deniedPrefix2 = Prefix.parse("1.5.3.127/26"); assertThat(_rfAddressMask, permits(acceptedPrefix1)); assertThat(_rfAddressMask, rejects(deniedPrefix1)); assertThat(_rfAddressMask, rejects(deniedPrefix2)); }
@Test public void testPrefixLength() { // all prefix lengths are allowed new ShiftIpAddressIntoSubnet(DEST_NAT, DESTINATION, Prefix.parse("1.1.1.1/0")); new ShiftIpAddressIntoSubnet(DEST_NAT, DESTINATION, Prefix.parse("1.1.1.1/10")); new ShiftIpAddressIntoSubnet(DEST_NAT, DESTINATION, Prefix.parse("1.1.1.1/31")); new ShiftIpAddressIntoSubnet(DEST_NAT, DESTINATION, Prefix.parse("1.1.1.1/32")); } }
@Override public void enterRos_route(Ros_routeContext ctx) { if (ctx.IP_PREFIX() != null) { Prefix prefix = Prefix.parse(ctx.IP_PREFIX().getText()); Map<Prefix, StaticRoute> staticRoutes = _currentRib.getStaticRoutes(); _currentStaticRoute = staticRoutes.computeIfAbsent(prefix, StaticRoute::new); } else if (ctx.IPV6_PREFIX() != null) { _currentStaticRoute = DUMMY_STATIC_ROUTE; } }
@Override public void enterOa_area_range(FlatJuniperParser.Oa_area_rangeContext ctx) { // Set up defaults: no overridden metric, routes advertised. _currentAreaRangeMetric = null; _currentAreaRangePrefix = null; _currentAreaRangeRestrict = false; if (ctx.IP_PREFIX() != null) { _currentAreaRangePrefix = Prefix.parse(ctx.IP_PREFIX().getText()); } else { todo(ctx); } }
public Subnet(JSONObject jObj) throws JSONException { _cidrBlock = Prefix.parse(jObj.getString(JSON_KEY_CIDR_BLOCK)); _subnetId = jObj.getString(JSON_KEY_SUBNET_ID); _vpcId = jObj.getString(JSON_KEY_VPC_ID); // skipping (startIp+1) as it is used as the default gateway for instances in this subnet _lastGeneratedIp = _cidrBlock.getStartIp().asLong() + 1; }
@Test public void testRouteIsClassful() { List<String> classful = Lists.newArrayList("16.0.0.0/8", "128.0.0.0/16", "192.168.1.0/24"); for (String prefixStr : classful) { Prefix network = Prefix.parse(prefixStr); assertThat(network + " is classful", evaluateIsClassful(network), equalTo(true)); } }
@Test public void testPrefixIpSpace() { IpSpace ipSpace = Prefix.parse("255.0.0.0/8").toIpSpace(); BDD bdd = ipSpace.accept(_ipSpaceToBdd); assertThat(bdd, equalTo(_bddOps.and(Arrays.asList(_ipAddrBdd.getBitvec()).subList(0, 8)))); }
@Test public void testPrefixIpSpace_andNonOverlapping() { IpSpace ipSpace1 = Prefix.parse("0.0.0.0/8").toIpSpace(); IpSpace ipSpace2 = Prefix.parse("1.0.0.0/8").toIpSpace(); BDD bdd1 = ipSpace1.accept(_ipSpaceToBdd); BDD bdd2 = ipSpace2.accept(_ipSpaceToBdd); assertThat(_bddOps.and(bdd1, bdd2), equalTo(_factory.zero())); }
@Test public void testDontSpecializeToUniverse() { IpSpace ipSpace = Prefix.parse("1.0.0.0/8").toIpSpace(); Ip ip = Ip.parse("1.1.1.1"); IpSpaceSpecializer specializer = new BDDIpSpaceSpecializer(_toBdd.toBDD(ip), ImmutableMap.of(), _toBdd, false); assertThat(specializer.specialize(ipSpace), equalTo(ipSpace)); } }
@Test public void testJsonSerialization() throws IOException { GeneratedRoute gr = GeneratedRoute.builder().setNetwork(Prefix.parse("1.1.1.0/24")).setMetric(1L).build(); assertThat(BatfishObjectMapper.clone(gr, GeneratedRoute.class), equalTo(gr)); }
@Test public void testCanonicalization() { Prefix p = Prefix.parse("255.255.255.255/15"); assertThat(p.getStartIp(), equalTo(Ip.parse("255.254.0.0"))); assertThat(p.getPrefixLength(), equalTo(15)); }
/** * Tests that getting a range more specific than a /32 does not crash and is empty -- or at least * does not contain the initial /32. */ @Test public void testEmptyRange() { Prefix slash32 = Prefix.parse("1.2.3.4/32"); PrefixRange empty = PrefixRange.moreSpecificThan(slash32); assertFalse(empty.includesPrefixRange(PrefixRange.fromPrefix(slash32))); } }
@Test public void testJsonSerialization() throws IOException { BgpRoute br = BgpRoute.builder() .setNetwork(Prefix.parse("1.1.1.0/24")) .setOriginatorIp(Ip.parse("1.1.1.1")) .setOriginType(OriginType.IGP) .setProtocol(RoutingProtocol.BGP) .build(); assertThat(BatfishObjectMapper.clone(br, BgpRoute.class), equalTo(br)); }
@Test public void testThrowsWithoutOriginatorIp() { thrown.expect(IllegalArgumentException.class); BgpRoute.builder() .setNetwork(Prefix.parse("1.1.1.0/24")) .setProtocol(RoutingProtocol.BGP) .setOriginType(OriginType.IGP) .build(); }