public Builder excluding(IpWildcard... wildcards) { return excluding(Arrays.asList(wildcards)); }
return IpWildcardSetIpSpace.builder().including(whitelist).excluding(blacklist).build();
IpWildcardSetIpSpace.builder() .including(IpWildcard.ANY) .excluding(new IpWildcard(Ip.MAX)) .build(); IpWildcardSetIpSpace none1 = IpWildcardSetIpSpace.builder().build(); IpWildcardSetIpSpace none2 = IpWildcardSetIpSpace.builder().including(IpWildcard.ANY).excluding(IpWildcard.ANY).build(); IpWildcardSetIpSpace someButNotMax = IpWildcardSetIpSpace.builder().including(new IpWildcard("1.2.3.4")).build();
.collect(ImmutableSet.toImmutableSet()); IpWildcardSetIpSpace ipSpace = IpWildcardSetIpSpace.builder().including(whitelist).excluding(blacklist).build(); interfaces.stream() .flatMap(i -> sourceNatPoolIps(i.getOutgoingTransformation()))
assertThat( SIMPLIFIER.simplify( IpWildcardSetIpSpace.builder().excluding(new IpWildcard("1.2.3.0/24")).build()), equalTo(EmptyIpSpace.INSTANCE)); IpWildcardSetIpSpace.builder() .including(IpWildcard.ANY) .excluding(IpWildcard.ANY) .build()), equalTo(EmptyIpSpace.INSTANCE)); IpWildcardSetIpSpace.builder() .including(new IpWildcard("1.2.1.0/24"), new IpWildcard("2.2.2.2")) .excluding(new IpWildcard("1.2.0.0/16")) .build(); IpSpace simplifiedIpSpace = new IpWildcard("2.2.2.2").toIpSpace(); IpWildcardSetIpSpace.builder() .including(new IpWildcard("2.2.2.2")) .excluding(new IpWildcard("1.0.0.0/8")) .build(); assertThat(SIMPLIFIER.simplify(ipSpace), equalTo(simplifiedIpSpace));
IpWildcardSetIpSpace.builder() .including(IpWildcard.ANY) .excluding(new IpWildcard(Ip.parse("0.1.0.0"), Ip.parse("255.0.255.255"))) .build()) .visit(ipSpace),
@Test public void testVisitIpWildcardSetIpSpace() { IpSpace ipSpace = IpWildcardSetIpSpace.builder() .including(new IpWildcard("1.0.0.0:1.0.1.0")) .excluding(new IpWildcard("2.0.0.0:0.1.0.1")) .build(); IpSpaceDescriber describerWithMetadata = new IpSpaceDescriber( new AclTracer( _flow, null, ImmutableMap.of(), ImmutableMap.of(TEST_NAME, ipSpace), ImmutableMap.of(TEST_NAME, TEST_METADATA))); assertThat(ipSpace.accept(_describerNoNamesNorMetadata), equalTo(ipSpace.toString())); assertThat(ipSpace.accept(describerWithMetadata), equalTo(TEST_METADATA_DESCRIPTION)); }
@Test public void testConstantWildcardSetIpSpaceSpecifierFactory() { assertThat( load(ConstantWildcardSetIpSpaceSpecifierFactory.NAME), Matchers.instanceOf(ConstantWildcardSetIpSpaceSpecifierFactory.class)); assertThat( new ConstantWildcardSetIpSpaceSpecifierFactory() .buildIpSpaceSpecifier("1.2.3.0/24 - 1.2.3.4"), equalTo( new ConstantIpSpaceSpecifier( IpWildcardSetIpSpace.builder() .including(new IpWildcard("1.2.3.0/24")) .excluding(new IpWildcard("1.2.3.4")) .build()))); } }
@Test public void testDestinationIpSpaceSpecification() { SpecifiersReachabilityQuestion question = SpecifiersReachabilityQuestion.builder() .setHeaderConstraints( PacketHeaderConstraints.builder().setDstIp("1.2.3.0/24 - 1.2.3.4").build()) .build(); assertThat( question.getReachabilityParameters().getDestinationIpSpaceSpecifier(), equalTo( new ConstantIpSpaceSpecifier( IpWildcardSetIpSpace.builder() .including(new IpWildcard("1.2.3.0/24")) .excluding(new IpWildcard("1.2.3.4")) .build()))); }
@Test public void testSourceIpWildcardDifferenceAccepted() { SpecifiersReachabilityQuestion question = SpecifiersReachabilityQuestion.builder() .setHeaderConstraints( PacketHeaderConstraints.builder().setSrcIp("1.2.3.0/24 \\ 1.2.3.4").build()) .build(); assertThat( question.getReachabilityParameters().getSourceIpSpaceSpecifier(), equalTo( new ConstantIpSpaceSpecifier( IpWildcardSetIpSpace.builder() .including(new IpWildcard("1.2.3.0/24")) .excluding(new IpWildcard("1.2.3.4")) .build()))); }
@VisibleForTesting static IpWildcardSetIpSpace parseIpSpace(@Nonnull String input) { String[] strs = input.split("-|\\\\"); if (strs.length == 1) { return IpWildcardSetIpSpace.builder().including(parseWildcards(strs[0])).build(); } if (strs.length == 2) { return IpWildcardSetIpSpace.builder() .including(parseWildcards(strs[0])) .excluding(parseWildcards(strs[1])) .build(); } throw new IllegalArgumentException( "Error parsing IpWildcards: only 1 subtraction operator ('-' or '\\') allowed"); }
@Test public void testParseIpSpace_blacklist() { assertThat( parseIpSpace("1.0.0.0,2.0.0.0/8 - 3.0.0.0,4.0.0.0/32"), equalTo( IpWildcardSetIpSpace.builder() .including(ImmutableList.of(new IpWildcard("1.0.0.0"), new IpWildcard("2.0.0.0/8"))) .excluding( ImmutableList.of(new IpWildcard("3.0.0.0"), new IpWildcard("4.0.0.0/32"))) .build())); }
private void excludeRoutableIps(IpWildcardSetIpSpace.Builder builder) { if (hasForwardingRoute()) { builder.excluding(new IpWildcard(_prefix)); } else { if (_left != null) { _left.excludeRoutableIps(builder); } if (_right != null) { _right.excludeRoutableIps(builder); } } }
@Test public void testParseIpSpace_blacklist_backslash() { assertThat( parseIpSpace("1.0.0.0,2.0.0.0/8 \\ 3.0.0.0,4.0.0.0/32"), equalTo( IpWildcardSetIpSpace.builder() .including(ImmutableList.of(new IpWildcard("1.0.0.0"), new IpWildcard("2.0.0.0/8"))) .excluding( ImmutableList.of(new IpWildcard("3.0.0.0"), new IpWildcard("4.0.0.0/32"))) .build())); }