areas.computeIfAbsent(areaNum, areaNumber -> OspfArea.builder().setNumber(areaNumber)); ImmutableSortedSet.Builder<String> newAreaInterfacesBuilder = areaInterfacesBuilders.computeIfAbsent(areaNum, n -> ImmutableSortedSet.naturalOrder()); areas.get(areaNum).addInterfaces(interfacesBuilder.build())); proc.getNssas() .forEach( areas.get(areaId).setStubType(StubType.NSSA); areas.get(areaId).setNssaSettings(toNssaSettings(nssaSettings)); }); areas.get(areaId).setStubType(StubType.STUB); areas.get(areaId).setStubSettings(toStubSettings(stubSettings)); }); c.getRouteFilterLists().put(summaryFilterName, summaryFilter); if (area == null) { area = OspfArea.builder().setNumber(areaLong); areas.put(areaLong, area); area.setSummaryFilter(summaryFilterName); for (Entry<Prefix, OspfAreaSummary> e2 : summaries.entrySet()) { Prefix prefix = e2.getKey(); area.addSummaries(ImmutableSortedMap.copyOf(summaries)); summaryFilter.addLine( new RouteFilterLine(
private void placeInterfaceIntoArea( Map<Long, org.batfish.datamodel.ospf.OspfArea.Builder> newAreas, String interfaceName, Interface iface, String vrfName) { Vrf vrf = _c.getVrfs().get(vrfName); org.batfish.datamodel.Interface newIface = vrf.getInterfaces().get(interfaceName); Ip ospfArea = iface.getOspfArea(); if (ospfArea == null) { return; } if (newIface.getAddress() == null) { _w.redFlag( String.format( "Cannot assign interface %s to area %s because it has no IP address.", interfaceName, ospfArea)); return; } long ospfAreaLong = ospfArea.asLong(); org.batfish.datamodel.ospf.OspfArea.Builder newArea = newAreas.get(ospfAreaLong); newArea.addInterface(interfaceName); newIface.setOspfEnabled(true); newIface.setOspfPassive(iface.getOspfPassive()); Integer ospfCost = iface.getOspfCost(); if (ospfCost == null && newIface.isLoopback(ConfigurationFormat.FLAT_JUNIPER)) { ospfCost = 0; } newIface.setOspfCost(ospfCost); }
org.batfish.datamodel.ospf.OspfArea.Builder newAreaBuilder = org.batfish.datamodel.ospf.OspfArea.builder(); newAreaBuilder.setNumber(area.getName()); newAreaBuilder.setNssaSettings(toNssaSettings(area.getNssaSettings())); newAreaBuilder.setStubSettings(toStubSettings(area.getStubSettings())); newAreaBuilder.setStubType(area.getStubType()); newAreaBuilder.addSummaries(area.getSummaries()); newAreaBuilder.setInjectDefaultRoute(area.getInjectDefaultRoute()); newAreaBuilder.setMetricOfDefaultRoute(area.getMetricOfDefaultRoute()); new IpWildcard(Prefix.ZERO), new SubRange(0, Prefix.MAX_PREFIX_LENGTH))); newAreaBuilder.setSummaryFilter(summaryFilter.getName()); return newAreaBuilder;
.collect( ImmutableSortedMap.toImmutableSortedMap( Comparator.naturalOrder(), Entry::getKey, entry -> entry.getValue().build())));
OspfArea.Builder oab = nf.ospfAreaBuilder().setNonStub().setNumber(0L); OspfArea area0 = oab.build(); OspfArea area1 = oab.setNumber(1L).build();
@Test public void testGetOspfEdges() { OspfProcess ospf1 = OspfProcess.builder().setReferenceBandwidth(1e8).build(); OspfProcess ospf2 = OspfProcess.builder().setReferenceBandwidth(1e8).build(); NetworkFactory nf = new NetworkFactory(); OspfArea.builder(nf).setNumber(1L).setOspfProcess(ospf1).addInterface("int1").build(); OspfArea.builder(nf).setNumber(1L).setOspfProcess(ospf2).addInterface("int2").build(); Vrf vrf1 = new Vrf("vrf1"); vrf1.setOspfProcess(ospf1); Vrf vrf2 = new Vrf("vrf2"); vrf2.setOspfProcess(ospf2); _host1.setVrfs(ImmutableSortedMap.of("vrf1", vrf1)); _host2.setVrfs(ImmutableSortedMap.of("vrf2", vrf2)); _host1.getAllInterfaces().get("int1").setVrf(vrf1); _host2.getAllInterfaces().get("int2").setVrf(vrf2); Multiset<Row> rows = getOspfEdges(_configurations, _includeNodes, _includeRemoteNodes, _topology); assertThat( rows, contains( allOf( hasColumn( COL_INTERFACE, equalTo(new NodeInterfacePair("host1", "int1")), Schema.INTERFACE), hasColumn( COL_REMOTE_INTERFACE, equalTo(new NodeInterfacePair("host2", "int2")), Schema.INTERFACE)))); }
Vrf v1 = _vb.setOwner(c1).build(); OspfProcess op1 = _opb.setVrf(v1).build(); OspfArea oa1 = _oab.setOspfProcess(op1).build(); Vrf v2 = _vb.setOwner(c2).build(); OspfProcess op2 = _opb.setVrf(v2).build(); OspfArea oa2 = _oab.setOspfProcess(op2).build();
@Test public void testOspfAreaBuilder() { NetworkFactory nf = new NetworkFactory(); Configuration c = nf.configurationBuilder().setConfigurationFormat(CONFIG_FORMAT).build(); Vrf vrf = nf.vrfBuilder().setOwner(c).build(); OspfProcess.Builder ob = nf.ospfProcessBuilder(); OspfProcess ospfProcess = ob.setVrf(vrf).build(); OspfArea.Builder oab = nf.ospfAreaBuilder(); OspfArea oa1 = oab.build(); OspfArea oa2 = oab.setOspfProcess(ospfProcess).build(); Interface iface = nf.interfaceBuilder().setOwner(c).setActive(false).setVrf(vrf).setOspfArea(oa2).build(); assertThat(oa1.getAreaNumber(), not(equalTo(oa2.getAreaNumber()))); assertThat(oa1, not(sameInstance(oa2))); assertThat(ospfProcess.getAreas().get(oa2.getAreaNumber()), sameInstance(oa2)); assertThat(oa2, OspfAreaMatchers.hasInterfaces(hasItem(iface.getName()))); assertThat(iface.getOspfAreaName(), equalTo(oa2.getAreaNumber())); } }
@Override public OspfArea build() { long number = _number != null ? _number : generateLong(); OspfArea ospfArea = new OspfArea( number, _injectDefaultRoute, _interfaces.build(), _metricOfDefaultRoute, _nssa, _stub, _stubType, _summaries.build(), _summaryFilter); if (_ospfProcess != null) { _ospfProcess.addArea(ospfArea); } return ospfArea; }
public static Builder builder(NetworkFactory networkFactory) { return new Builder(networkFactory); }
public static Builder builder() { return new Builder(null); }
@Before public void setup() { _nf = new NetworkFactory(); _cb = _nf.configurationBuilder().setConfigurationFormat(ConfigurationFormat.CISCO_IOS); _ib = _nf.interfaceBuilder().setOspfCost(100); _oab = _nf.ospfAreaBuilder().setNumber(0L); _opb = _nf.ospfProcessBuilder(); _vb = _nf.vrfBuilder(); }