Search in sources :

Example 41 with IpWildcard

use of org.batfish.datamodel.IpWildcard in project batfish by batfish.

the class IpAccessListSpecializerTest method testSpecializeIpAccessListLine_singleDst.

@Test
public void testSpecializeIpAccessListLine_singleDst() {
    IpAccessListLine ipAccessListLine = IpAccessListLine.builder().setDstIps(ImmutableSet.of(new IpWildcard("1.2.3.0/24"))).build();
    assertThat(TRIVIAL_SPECIALIZER.specialize(ipAccessListLine), equalTo(Optional.of(ipAccessListLine)));
    assertThat(BLACKLIST_ANY_DST_SPECIALIZER.specialize(ipAccessListLine), equalTo(Optional.empty()));
    assertThat(WHITELIST_ANY_DST_SPECIALIZER.specialize(ipAccessListLine), equalTo(Optional.of(ipAccessListLine)));
    assertThat(BLACKLIST_ANY_SRC_SPECIALIZER.specialize(ipAccessListLine), equalTo(Optional.empty()));
    assertThat(WHITELIST_ANY_SRC_SPECIALIZER.specialize(ipAccessListLine), equalTo(Optional.of(ipAccessListLine)));
    // specialize to a headerspace that whitelists part of the dstIp
    IpAccessListSpecializer specializer = new IpAccessListSpecializer(IpAccessListLine.builder().setDstIps(ImmutableSet.of(new IpWildcard("1.2.3.4"))).build());
    assertThat(specializer.specialize(ipAccessListLine), equalTo(Optional.of(ALWAYS_TRUE_LINE)));
    // specialize to a headerspace that blacklists part of the dstIp
    specializer = new IpAccessListSpecializer(IpAccessListLine.builder().setNotDstIps(ImmutableSet.of(new IpWildcard("1.2.3.4"))).build());
    assertThat(specializer.specialize(ipAccessListLine), equalTo(Optional.of(ipAccessListLine)));
}
Also used : IpWildcard(org.batfish.datamodel.IpWildcard) IpAccessListLine(org.batfish.datamodel.IpAccessListLine) Test(org.junit.Test)

Example 42 with IpWildcard

use of org.batfish.datamodel.IpWildcard in project batfish by batfish.

the class IpAccessListSpecializerTest method testSpecializeIpAccessListLine_singleSrc.

@Test
public void testSpecializeIpAccessListLine_singleSrc() {
    IpAccessListLine ipAccessListLine = IpAccessListLine.builder().setSrcIps(ImmutableSet.of(new IpWildcard("1.2.3.0/24"))).build();
    assertThat(TRIVIAL_SPECIALIZER.specialize(ipAccessListLine), equalTo(Optional.of(ipAccessListLine)));
    assertThat(BLACKLIST_ANY_DST_SPECIALIZER.specialize(ipAccessListLine), equalTo(Optional.empty()));
    assertThat(WHITELIST_ANY_DST_SPECIALIZER.specialize(ipAccessListLine), equalTo(Optional.of(ipAccessListLine)));
    assertThat(BLACKLIST_ANY_SRC_SPECIALIZER.specialize(ipAccessListLine), equalTo(Optional.empty()));
    assertThat(WHITELIST_ANY_SRC_SPECIALIZER.specialize(ipAccessListLine), equalTo(Optional.of(ipAccessListLine)));
    // specialize to a headerspace that whitelists part of the srcIp
    IpAccessListSpecializer specializer = new IpAccessListSpecializer(IpAccessListLine.builder().setSrcIps(ImmutableSet.of(new IpWildcard("1.2.3.4"))).build());
    assertThat(specializer.specialize(ipAccessListLine), equalTo(Optional.of(ALWAYS_TRUE_LINE)));
    // specialize to a headerspace that blacklists part of the srcIp
    specializer = new IpAccessListSpecializer(IpAccessListLine.builder().setNotSrcIps(ImmutableSet.of(new IpWildcard("1.2.3.4"))).build());
    assertThat(specializer.specialize(ipAccessListLine), equalTo(Optional.of(ipAccessListLine)));
}
Also used : IpWildcard(org.batfish.datamodel.IpWildcard) IpAccessListLine(org.batfish.datamodel.IpAccessListLine) Test(org.junit.Test)

Example 43 with IpWildcard

use of org.batfish.datamodel.IpWildcard in project batfish by batfish.

the class IpSpaceSimplifierTest method testVisitIpWildcard.

@Test
public void testVisitIpWildcard() {
    assertThat(IpSpaceSimplifier.simplify(IpWildcard.ANY), equalTo(UniverseIpSpace.INSTANCE));
    IpWildcard ipWildcard = new IpWildcard(new Ip("1.2.0.5"), new Ip(0xFFFF00FFL));
    assertThat(IpSpaceSimplifier.simplify(ipWildcard), equalTo(ipWildcard));
}
Also used : IpWildcard(org.batfish.datamodel.IpWildcard) Ip(org.batfish.datamodel.Ip) Test(org.junit.Test)

Example 44 with IpWildcard

use of org.batfish.datamodel.IpWildcard in project batfish by batfish.

the class IpSpaceSpecializerTest method testSpecializeAclIpSpace.

@Test
public void testSpecializeAclIpSpace() {
    AclIpSpace ipSpace = AclIpSpace.builder().thenPermitting(Prefix.parse("0.0.1.0/24")).thenRejecting(Prefix.parse("0.0.1.4/30")).thenPermitting(Prefix.parse("0.0.1.6/31")).build();
    assertThat(trivialSpecializer.visitAclIpSpace(ipSpace), equalTo(ipSpace));
    assertThat(whitelistAnySpecializer.visitAclIpSpace(ipSpace), equalTo(ipSpace));
    assertThat(blacklistAnySpecializer.visitAclIpSpace(ipSpace), equalTo(AclIpSpace.builder().thenPermitting(EmptyIpSpace.INSTANCE).thenRejecting(EmptyIpSpace.INSTANCE).thenPermitting(EmptyIpSpace.INSTANCE).build()));
    // headerspace is contained in all lines
    IpSpaceSpecializer specializer = new IpSpaceSpecializer(ImmutableSortedSet.of(new IpWildcard("0.0.1.6/32")), ImmutableSortedSet.of());
    assertThat(specializer.visitAclIpSpace(ipSpace), equalTo(AclIpSpace.builder().thenPermitting(UniverseIpSpace.INSTANCE).thenRejecting(UniverseIpSpace.INSTANCE).thenPermitting(UniverseIpSpace.INSTANCE).build()));
    // headerspace is outside of all lines
    specializer = new IpSpaceSpecializer(ImmutableSortedSet.of(new IpWildcard("1.1.1.1/32")), ImmutableSortedSet.of());
    assertThat(specializer.visitAclIpSpace(ipSpace), equalTo(AclIpSpace.builder().thenPermitting(EmptyIpSpace.INSTANCE).thenRejecting(EmptyIpSpace.INSTANCE).thenPermitting(EmptyIpSpace.INSTANCE).build()));
    // not contained in any line, and intersects the first only
    specializer = new IpSpaceSpecializer(ImmutableSortedSet.of(new IpWildcard(new Ip(0x00000100L), new Ip(0xFF0FFF00L))), ImmutableSortedSet.of());
    assertThat(specializer.visitAclIpSpace(ipSpace), equalTo(AclIpSpace.builder().thenPermitting(Prefix.parse("0.0.1.0/24")).thenRejecting(EmptyIpSpace.INSTANCE).thenPermitting(EmptyIpSpace.INSTANCE).build()));
}
Also used : IpWildcard(org.batfish.datamodel.IpWildcard) AclIpSpace(org.batfish.datamodel.AclIpSpace) Ip(org.batfish.datamodel.Ip) Test(org.junit.Test)

Example 45 with IpWildcard

use of org.batfish.datamodel.IpWildcard in project batfish by batfish.

the class IpSpaceSpecializerTest method testSpecializeIpWildcard_supersetOfWhitelisted.

@Test
public void testSpecializeIpWildcard_supersetOfWhitelisted() {
    IpWildcard ip = new IpWildcard("1.2.0.0/16");
    IpSpaceSpecializer specializer = new IpSpaceSpecializer(ImmutableSet.of(new IpWildcard("1.2.3.0/24")), ImmutableSet.of());
    assertThat(specializer.specialize(ip), equalTo(UniverseIpSpace.INSTANCE));
}
Also used : IpWildcard(org.batfish.datamodel.IpWildcard) Test(org.junit.Test)

Aggregations

IpWildcard (org.batfish.datamodel.IpWildcard)63 Test (org.junit.Test)38 Ip (org.batfish.datamodel.Ip)18 IpAccessListLine (org.batfish.datamodel.IpAccessListLine)17 SubRange (org.batfish.datamodel.SubRange)16 HeaderSpace (org.batfish.datamodel.HeaderSpace)12 Prefix (org.batfish.datamodel.Prefix)9 LinkedList (java.util.LinkedList)8 Configuration (org.batfish.datamodel.Configuration)8 Context (com.microsoft.z3.Context)7 Interface (org.batfish.datamodel.Interface)7 IpAccessList (org.batfish.datamodel.IpAccessList)6 IpProtocol (org.batfish.datamodel.IpProtocol)6 BoolExpr (com.microsoft.z3.BoolExpr)5 TreeSet (java.util.TreeSet)5 BatfishException (org.batfish.common.BatfishException)5 RouteFilterList (org.batfish.datamodel.RouteFilterList)5 ImmutableSortedMap (com.google.common.collect.ImmutableSortedMap)4 Status (com.microsoft.z3.Status)4 Map (java.util.Map)4