Tagged by CORD Jenkins version-tag job: 6662, for Gerrit patchset: 24897
[VOL-4123] Fix no flows being discarded by ofAgent

This commit fixes an issue in ofAgent where it fails to send
stats to ONOS if there are no flows/ no ports/ no port desc.  This
situation arises if the rw-core does not persist flows and is

This fix was tested with a rw-core that does not persist flows,
meters and groups.  The rw-core was restarted after 512 ONUs were
already activated and had their flows pushed.  After the rw-core
retart, with this fix, the flows were pushed from ONOS.

Change-Id: I10ee627e4153134ec5a5d12d1dcd67f64213e83d
2 files changed
tree: 1c42d6bf33531490bfdd7c44bfde42dce1d7db9e
  1. .gitignore
  2. .gitreview
  3. .golangci.yml
  5. Makefile
  6. README.md
  8. cmd/
  9. docker/
  10. go.mod
  11. go.sum
  12. internal/
  13. run.sh
  14. vendor/


Ofagent-go provides an OpenFlow management interface for Voltha. It is a rewrite in Golang of the original ofagent that was written in python / twisted. The main driver behind the work was to introduce true concurrency to the agent for performance/scalability reasons.


  1. Outside $GOPATH

    1. Read-only git clone https://github.com/opencord/ofagent-go.git
    2. To Contribute git clone https://gerrit.opencord.org/ofagent-go
  2. Compile go build -mod=vendor -o ./build/ofagent-go


  • Normal Logging
    • ./build/ofagent-go -ofaddress=localhost openflowPort=6653 -volthaAddress=localhost -volthaPort=50057
  • Debug Logging
    • ./build/ofagent-go -debug -ofaddress=localhost openflowPort=6653 -volthaAddress=localhost -volthaPort=50057

Building with a Local Copy of voltha-protos or voltha-lib-go

If you want to build/test using a local copy or voltha-protos or voltha-lib-go this can be accomplished by using the environment variables LOCAL_PROTOS and LOCAL_LIB_GO. These environment variables should be set to the filesystem path where the local source is located, e.g.


When these environment variables are set the vendored versions of these packages will be removed from the vendor directory and replaced by coping the files from the specified locations to the vendor directory. NOTE: this means that the files in the vendor directory are no longer what is in the git repository and it will take manual git intervention to put the original files back.