## -----------------------------------------------------------------------
## Copyright 2021-2023 Open Networking Foundation (ONF) and the ONF Contributors
##
## Licensed under the Apache License, Version 2.0 (the "License");
## you may not use this file except in compliance with the License.
## You may obtain a copy of the License at
##
## http://www.apache.org/licenses/LICENSE-2.0
##
## Unless required by applicable law or agreed to in writing, software
## distributed under the License is distributed on an "AS IS" BASIS,
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
## See the License for the specific language governing permissions and
## limitations under the License.
## -----------------------------------------------------------------------

voltha/bbsim
voltha/bbsim-sadis-server
volthacore/voltha-rw-core
voltha/voltha-adapter-simulated-olt
voltha/voltha-adapter-simulated-onu
voltha/voltha-afrouter
voltha/voltha-afrouterd
voltha/voltha-bbsim
voltha/voltha-ci-tools
voltha/voltha-cli
voltha/voltha-dashd
voltha/voltha-envoy
voltha/voltha-netconf
voltha/voltha-ofagent-go
voltha/voltha-ofagent
voltha/voltha-onos
voltha/voltha-openolt-adapter
voltha/voltha-openonu-adapter
voltha/voltha-openonu-adapter-go
voltha/voltha-ponsim
voltha/voltha-ro-core
voltha/voltha-rw-core
voltha/voltha-shovel
voltha/voltha-tester
voltha/voltha-voltha

# [EOF]
