Search in sources :

Example 6 with LiteralOrigin

use of org.batfish.datamodel.routing_policy.expr.LiteralOrigin in project batfish by batfish.

the class VirtualRouterTest method computeBgpAdvertisementsSTOEbgpAdvertiseInactive.

@Test
public void computeBgpAdvertisementsSTOEbgpAdvertiseInactive() {
    RoutingPolicy exportPolicy = _routingPolicyBuilder.setStatements(ImmutableList.of(new SetOrigin(new LiteralOrigin(OriginType.INCOMPLETE, null)), _exitAcceptStatement)).build();
    _bgpNeighborBuilder.setRemoteAs(TEST_AS2).setExportPolicy(exportPolicy.getName()).setAdvertiseInactive(true).build();
    _testVirtualRouter._bgpBestPathRib.mergeRoute(_bgpRouteBuilder.setNextHopIp(TEST_NEXT_HOP_IP1).setReceivedFromIp(TEST_NEXT_HOP_IP1).setAsPath(AsPath.ofSingletonAsSets(TEST_AS3).getAsSets()).build());
    // adding a connected route in main rib
    _testVirtualRouter._mainRib.mergeRoute(new ConnectedRoute(TEST_NETWORK, Route.UNSET_NEXT_HOP_INTERFACE));
    // checking that the inactive BGP route got advertised along with the active OSPF route
    assertThat(_testVirtualRouter.computeBgpAdvertisementsToOutside(_ipOwners), equalTo(2));
    // checking that both bgp advertisements have the same network and correct AS Paths
    Set<AsPath> asPaths = new HashSet<>();
    _testVirtualRouter._sentBgpAdvertisements.stream().forEach(bgpAdvertisement -> {
        assertThat(bgpAdvertisement, hasNetwork(TEST_NETWORK));
        asPaths.add(bgpAdvertisement.getAsPath());
    });
    // next Hop IP for the active OSPF route  will be the neighbor's local IP
    assertThat("AS Paths not valid in BGP advertisements", asPaths, equalTo(ImmutableSet.of(AsPath.ofSingletonAsSets(TEST_AS1, TEST_AS3), AsPath.ofSingletonAsSets(TEST_AS1))));
}
Also used : ConnectedRoute(org.batfish.datamodel.ConnectedRoute) AsPath(org.batfish.datamodel.AsPath) LiteralOrigin(org.batfish.datamodel.routing_policy.expr.LiteralOrigin) SetOrigin(org.batfish.datamodel.routing_policy.statement.SetOrigin) RoutingPolicy(org.batfish.datamodel.routing_policy.RoutingPolicy) HashSet(java.util.HashSet) LinkedHashSet(java.util.LinkedHashSet) Test(org.junit.Test)

Aggregations

LiteralOrigin (org.batfish.datamodel.routing_policy.expr.LiteralOrigin)6 SetOrigin (org.batfish.datamodel.routing_policy.statement.SetOrigin)5 RoutingPolicy (org.batfish.datamodel.routing_policy.RoutingPolicy)4 BgpNeighbor (org.batfish.datamodel.BgpNeighbor)2 BgpProcess (org.batfish.datamodel.BgpProcess)2 InterfaceAddress (org.batfish.datamodel.InterfaceAddress)2 Ip (org.batfish.datamodel.Ip)2 MatchProtocol (org.batfish.datamodel.routing_policy.expr.MatchProtocol)2 If (org.batfish.datamodel.routing_policy.statement.If)2 Test (org.junit.Test)2 ArrayList (java.util.ArrayList)1 HashSet (java.util.HashSet)1 LinkedHashSet (java.util.LinkedHashSet)1 BatfishException (org.batfish.common.BatfishException)1 AsPath (org.batfish.datamodel.AsPath)1 BgpAdvertisement (org.batfish.datamodel.BgpAdvertisement)1 BgpAuthenticationSettings (org.batfish.datamodel.BgpAuthenticationSettings)1 Configuration (org.batfish.datamodel.Configuration)1 ConnectedRoute (org.batfish.datamodel.ConnectedRoute)1 IkeGateway (org.batfish.datamodel.IkeGateway)1