class OspfProcess implements Serializable {

  public void initInterfaceCosts(Configuration c) {
    _areas.values().stream()
        .flatMap(a -> a.getInterfaces().stream())
        .map(interfaceName -> c.getAllInterfaces().get(interfaceName))
        .filter(Interface::getActive)
        .filter(i -> i.getOspfSettings() != null)
        .forEach(i -> i.getOspfSettings().setCost(computeInterfaceCost(i)));
  }

  private  OspfProcess(
      Map<RoutingProtocol, Integer> adminCosts,
      Map<Long, OspfArea> areas,
      @Nullable String exportPolicy,
      Set<String> exportPolicySources,
      Set<GeneratedRoute> generatedRoutes,
      @Nullable Long maxMetricExternalNetworks,
      @Nullable Long maxMetricStubNetworks,
      @Nullable Long maxMetricSummaryNetworks,
      @Nullable Long maxMetricTransitLinks,
      Map<OspfNeighborConfigId, OspfNeighborConfig> ospfNeighborConfigs,
      String processId,
      Double referenceBandwidth,
      @Nullable Boolean rfc1583Compatible,
      Ip routerId,
      Integer summaryAdminCost);

}