WIP [VOL-2811] - Incorporate preliminary onu-adapter-go code into opencord repo
- reason "discovery-mibsync-complete" reached (via full MibUpload only, received data won't be stored yet)
- first review comments of patchset #4 considered
(please have a look into our inline-comments in Gerrit to know more about the current state)
- no refactoring done yet
Change-Id: Iac47817f8ce4bd28dd8132f530b0570d57ae99b8
Signed-off-by: Holger Hildebrandt <holger.hildebrandt@adtran.com>
diff --git a/vendor/github.com/opencord/omci-lib-go/.gitignore b/vendor/github.com/opencord/omci-lib-go/.gitignore
new file mode 100644
index 0000000..4549812
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/.gitignore
@@ -0,0 +1,94 @@
+# Binaries for programs and plugins
+*.exe
+*.exe~
+*.dll
+*.so
+*.dylib
+
+# Test binary, build with `go test -c`
+*.test
+
+# Test output
+tests/
+
+# Output of the go coverage tool, specifically when used with LiteIDE
+*.out
+
+# PyCharm / Goland
+.idea/
+### Go template
+# Binaries for programs and plugins
+*.exe
+*.exe~
+*.dll
+*.so
+*.dylib
+
+# Test binary, build with `go test -c`
+*.test
+
+# Output of the go coverage tool, specifically when used with LiteIDE
+*.out
+### JetBrains template
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/usage.statistics.xml
+.idea/**/dictionaries
+.idea/**/shelf
+
+# Sensitive or high-churn files
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+.idea/**/dbnavigator.xml
+
+# Gradle
+.idea/**/gradle.xml
+.idea/**/libraries
+
+# Gradle and Maven with auto-import
+# When using Gradle or Maven with auto-import, you should exclude module files,
+# since they will be recreated, and may cause churn. Uncomment if using
+# auto-import.
+# .idea/modules.xml
+# .idea/*.iml
+# .idea/modules
+
+# CMake
+cmake-build-*/
+
+# Mongo Explorer plugin
+.idea/**/mongoSettings.xml
+
+# File-based project format
+*.iws
+
+# IntelliJ
+out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Cursive Clojure plugin
+.idea/replstate.xml
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+
+# Editor-based Rest Client
+.idea/httpRequests
+
+/coverage.html
diff --git a/vendor/github.com/opencord/omci-lib-go/.gitreview b/vendor/github.com/opencord/omci-lib-go/.gitreview
new file mode 100644
index 0000000..27a7992
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/.gitreview
@@ -0,0 +1,6 @@
+[gerrit]
+host=gerrit.opencord.org
+port=29418
+project=omci-lib-go.git
+defaultremote=origin
+
diff --git a/vendor/github.com/opencord/omci-lib-go/LICENSE b/vendor/github.com/opencord/omci-lib-go/LICENSE
new file mode 100644
index 0000000..261eeb9
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/LICENSE
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ 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.
diff --git a/vendor/github.com/opencord/omci-lib-go/Makefile b/vendor/github.com/opencord/omci-lib-go/Makefile
new file mode 100644
index 0000000..166a13f
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/Makefile
@@ -0,0 +1,105 @@
+#
+# Copyright 2016 the original author or authors.
+#
+# 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.
+#
+
+# set default shell
+SHELL = bash -e -o pipefail
+
+# Variables
+VERSION ?= $(shell cat ./VERSION)
+
+# tool containers
+VOLTHA_TOOLS_VERSION ?= 1.0.3
+
+GO = docker run --rm --user $$(id -u):$$(id -g) -v ${CURDIR}:/app $(shell test -t 0 && echo "-it") -v gocache:/.cache -v gocache-${VOLTHA_TOOLS_VERSION}:/go/pkg voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-golang go
+GO_JUNIT_REPORT = docker run --rm --user $$(id -u):$$(id -g) -v ${CURDIR}:/app -i voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-go-junit-report go-junit-report
+GOCOVER_COBERTURA = docker run --rm --user $$(id -u):$$(id -g) -v ${CURDIR}:/app -i voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-gocover-cobertura gocover-cobertura
+GOFMT = docker run --rm --user $$(id -u):$$(id -g) -v ${CURDIR}:/app $(shell test -t 0 && echo "-it") voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-golang gofmt
+GOLANGCI_LINT = docker run --rm --user $$(id -u):$$(id -g) -v ${CURDIR}:/app $(shell test -t 0 && echo "-it") -v gocache:/.cache -v gocache-${VOLTHA_TOOLS_VERSION}:/go/pkg voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-golangci-lint golangci-lint
+
+# This should to be the first and default target in this Makefile
+help:
+ @echo "Usage: make [<target>]"
+ @echo "where available targets are:"
+ @echo
+ @echo "build : Build the library"
+ @echo "clean : Remove files created by the build"
+ @echo "distclean : Remove build and testing artifacts and reports"
+ @echo "lint-style : Verify code is properly gofmt-ed"
+ @echo "lint-sanity : Verify that 'go vet' doesn't report any issues"
+ @echo "lint-mod : Verify the integrity of the 'mod' files"
+ @echo "lint : Shorthand for lint-style & lint-sanity"
+ @echo "mod-update : Update go.mod and the vendor directory"
+ @echo "test : Generate reports for all go tests"
+ @echo
+
+## build the library
+build:
+ ${GO} build -mod=vendor ./...
+
+## lint and unit tests
+
+lint-style:
+ @echo "Running style check..."
+ @gofmt_out="$$(${GOFMT} -l $$(find . -name '*.go' -not -path './vendor/*'))" ;\
+ if [ ! -z "$$gofmt_out" ]; then \
+ echo "$$gofmt_out" ;\
+ echo "Style check failed on one or more files ^, run 'go fmt' to fix." ;\
+ exit 1 ;\
+ fi
+ @echo "Style check OK"
+
+lint-sanity:
+ @echo "Running sanity check..."
+ @${GO} vet -mod=vendor ./...
+ @echo "Sanity check OK"
+
+lint-mod:
+ @echo "Running dependency check..."
+ @${GO} mod verify
+ @echo "Dependency check OK. Running vendor check..."
+ @git status > /dev/null
+ @git diff-index --quiet HEAD -- go.mod go.sum vendor || (echo "ERROR: Staged or modified files must be committed before running this test" && echo "`git status`" && exit 1)
+ @[[ `git ls-files --exclude-standard --others go.mod go.sum vendor` == "" ]] || (echo "ERROR: Untracked files must be cleaned up before running this test" && echo "`git status`" && exit 1)
+ ${GO} mod tidy
+ ${GO} mod vendor
+ @git status > /dev/null
+ @git diff-index --quiet HEAD -- go.mod go.sum vendor || (echo "ERROR: Modified files detected after running go mod tidy / go mod vendor" && echo "`git status`" && exit 1)
+ @[[ `git ls-files --exclude-standard --others go.mod go.sum vendor` == "" ]] || (echo "ERROR: Untracked files detected after running go mod tidy / go mod vendor" && echo "`git status`" && exit 1)
+ @echo "Vendor check OK."
+
+lint: lint-style lint-sanity lint-mod
+
+sca:
+ rm -rf ./sca-report
+ @mkdir -p ./sca-report
+ ${GOLANGCI_LINT} run --out-format junit-xml ./... | tee ./sca-report/sca-report.xml
+
+test:
+ @mkdir -p ./tests/results
+ @${GO} test -mod=vendor -v -coverprofile ./tests/results/go-test-coverage.out -covermode count ./... 2>&1 | tee ./tests/results/go-test-results.out ;\
+ RETURN=$$? ;\
+ ${GO_JUNIT_REPORT} < ./tests/results/go-test-results.out > ./tests/results/go-test-results.xml ;\
+ ${GOCOVER_COBERTURA} < ./tests/results/go-test-coverage.out > ./tests/results/go-test-coverage.xml ;\
+ exit $$RETURN
+
+clean: distclean
+
+distclean:
+ rm -rf ./sca-report ./tests
+
+mod-update:
+ ${GO} mod tidy
+ ${GO} mod vendor
\ No newline at end of file
diff --git a/vendor/github.com/opencord/omci-lib-go/README.md b/vendor/github.com/opencord/omci-lib-go/README.md
new file mode 100644
index 0000000..fa5499f
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/README.md
@@ -0,0 +1,133 @@
+# OMCI
+
+OMCI gopacket library supports the encoding and decoding of ITU G.988 OMCI
+messages.
+
+## Message Types supported and under unit test
+The following OMCI message types currently have been coded and are covered
+satisfactory by unit tests.
+
+ - CreateRequest
+ - CreateResponse
+ - DeleteRequest
+ - DeleteResponse
+ - SetRequest
+ - GetRequest
+ - GetAllAlarmsRequest
+ - GetAllAlarmsResponse
+ - GetAllAlarmsNextRequest
+ - MibUploadRequest
+ - MibUploadResponse
+ - MibUploadNextRequest
+ - MibResetRequest
+ - MibResetResponse
+ - SynchronizeTimeRequest
+
+## Message Types supported but lacking full unit test
+The following OMCI message types currently have been coded and are partially covered
+by unit tests, but work still remains for sufficient/better unit test coverage.
+
+ - SetResponse
+ - GetResponse
+ - GetAllAlarmsNextResponse
+ - MibUploadNextResponse
+ - SynchronizeTimeResponse
+ - AttributeValueChange
+ - RebootRequest
+ - RebootResponse
+ - StartSoftwareDownloadRequest
+ - GetNextRequest
+ - GetNextResponse
+
+## Message Types supported but lacking any unit test
+The following OMCI message types currently have been coded but do not
+have any unit test coverage.
+
+ - StartSoftwareDownloadResponse
+ - DownloadSectionRequest
+ - DownloadSectionResponse
+ - EndSoftwareDownloadRequest
+ - EndSoftwareDownloadResponse
+ - ActivateSoftwareRequest
+ - ActivateSoftwareResponse
+ - CommitSoftwareRequest
+ - CommitSoftwareResponse
+ - GetCurrentDataRequest
+ - GetCurrentDataResponse
+ - AlarmNotification
+
+## Message Types not yet supported
+
+The following OMCI message types currently have not been coded.
+
+ - TestResult
+ - TestRequest
+ - TestResponse
+ - SetTableRequest
+ - SetTableResponse
+
+## Current user-test coverage
+
+The _coverage.sh_ and _coverage.cmd_ scripts can be used to create code coverage support for the
+library. The current coverage (as of 2/11/2020) is:
+
+| File | Statement Coverage |
+| --------------: | :---: |
+| layers.go | 100% |
+| mebase.go | 87.5% |
+| meframe.go | 54.8% |
+| messagetypes.go | 48.1% |
+| omci.go | 81.6% |
+
+## Other outstanding items
+
+Besides OMCI Message decode/serialization, and associated unit tests, the following items
+would be needed or useful in a first official release of this library. Some changes are
+to be done in the generated OMCI ME code as well.
+
+ - Specific examples of how to use this library (expand upon DecodeEncode.go examples)
+ Include unknown ME examples and how to catch various common or expected errors. Until
+ this is available, please take a look at how this library is used in my
+ [onumock](https://github.com/cboling/onumock/README.md). There is a utilities subdirectory
+ in the _onumock_ project that has some examples. One is a **very** crude OLT simulator that
+ I wrote to help test the ONU Mock.
+ - Support optional msg-types. (This was very recently fixed in the code generator).
+ - Constraint checking (these are not yet fully parsed/provided by the OMCI code generated
+ structs). This feature will hopefully be available in the near future.
+ - Add Alarm Table Support (generated MEs also)
+ - Add AVC flag for appropriate attributes
+ - Support of the extended message format
+ - For serialization, check early for message size exceeded
+ - Add some type of logging support
+
+The following would be 'nice' to have but are not necessary for initial code release
+ - Extended message support
+ - MIC Encode/Decode support
+
+Also searching through the code for _TODO_ statements will also yeild additional areas of
+work to be performed.
+
+## What is not provided by this library
+
+This library is not a full OMCI stack for either an OLT or an ONU. It is focused primarily on
+packet decode/serialization and a variety of structs and functions that are useful for handling
+the creation of OMCI frames and handling decoded frames from the PON.
+
+For an OLT-side OMCI stack, you would still need to write:
+ - OMCI CC sender & receiver with appropriate timeout support
+ - OLT State machines to support
+ - MIB Uploads/Audits/Resynchronization (and a MIB database implemention),
+ - More sophisticated get & get-next support to make handle of MEs with
+ lots of attributes or table attributes easy to handle and code,
+ - Alarm Table support,
+ - OMCI ME/Msg-Type capabilities inquiry,
+ - Performance Monitoring collection (and initial time synchronization),
+ - Service implementation
+
+For an ONU-side OMCI stack, you would still need to write:
+ - OMCC implementation,
+ - MIB Database,
+ - Get-Next cache for table attributes,
+ - MIB upload next cache for MIB uploads,
+ - Generation of any alarms/AVC notifications,
+ - Actually acting on the create/delete/get/set/... requests from an OLT
\ No newline at end of file
diff --git a/vendor/github.com/opencord/omci-lib-go/VERSION b/vendor/github.com/opencord/omci-lib-go/VERSION
new file mode 100644
index 0000000..c317a91
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/VERSION
@@ -0,0 +1 @@
+0.13.1
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/aal5performancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/aal5performancemonitoringhistorydata.go
new file mode 100644
index 0000000..c35225a
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/aal5performancemonitoringhistorydata.go
@@ -0,0 +1,118 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// Aal5PerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity AAL5 performance monitoring history data
+const Aal5PerformanceMonitoringHistoryDataClassID ClassID = ClassID(18)
+
+var aal5performancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// Aal5PerformanceMonitoringHistoryData (class ID #18)
+// This ME collects PM data as a result of performing segmentation and reassembly (SAR) and
+// convergence sublayer (CS) level protocol monitoring. Instances of this ME are created and
+// deleted by the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an instance of an IW VCC TP that represents AAL5
+// functions.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the IW VCC TP. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 ME that
+// contains PM threshold values. Since no threshold value attribute number exceeds 7, a threshold
+// data 2 ME is optional. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Sum Of Invalid Cs Field Errors
+// Sum of invalid CS field errors: This attribute counts the sum of invalid CS field errors. For
+// AAL type 5, this attribute is a single count of the number of CS PDUs discarded due to one of
+// the following error conditions: invalid common part indicator (CPI), oversized received SDU, or
+// length violation. (R) (mandatory) (4-bytes)
+//
+// Crc Violations
+// CRC violations: This attribute counts CRC violations detected on incoming SAR PDUs. (R)
+// (mandatory) (4-bytes)
+//
+// Reassembly Timer Expirations
+// Reassembly timer expirations: This attribute counts reassembly timer expirations. (R) (mandatory
+// if reassembly timer is implemented) (4-bytes)
+//
+// Buffer Overflows
+// Buffer overflows: This attribute counts the number of times where there was not enough buffer
+// space for a reassembled packet. (R) (mandatory) (4-bytes)
+//
+// Encap Protocol Errors
+// Encap protocol errors: This attribute counts the number of times that [IETF RFC 2684]
+// encapsulation protocol detected a bad header. (R) (mandatory) (4-bytes)
+//
+type Aal5PerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ aal5performancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "Aal5PerformanceMonitoringHistoryData",
+ ClassID: 18,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfe00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("SumOfInvalidCsFieldErrors", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("CrcViolations", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("ReassemblyTimerExpirations", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("BufferOverflows", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("EncapProtocolErrors", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewAal5PerformanceMonitoringHistoryData (class ID 18) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewAal5PerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*aal5performancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/aal5profile.go b/vendor/github.com/opencord/omci-lib-go/generated/aal5profile.go
new file mode 100644
index 0000000..5f23c88
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/aal5profile.go
@@ -0,0 +1,90 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// Aal5ProfileClassID is the 16-bit ID for the OMCI
+// Managed entity AAL5 profile
+const Aal5ProfileClassID ClassID = ClassID(16)
+
+var aal5profileBME *ManagedEntityDefinition
+
+// Aal5Profile (class ID #16)
+// This ME organizes data that describe the AAL type 5 processing functions of the ONU. It is used
+// with the IW VCC TP ME.
+//
+// This ME is created and deleted by the OLT.
+//
+// Relationships
+// An instance of this ME may be associated with zero or more instances of the IW VCC TP.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Max Cpcs Pdu Size
+// Max CPCS PDU size: This attribute specifies the maximum CPCS PDU size to be transmitted over the
+// connection in both upstream and downstream directions. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Aal Mode
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Sscs Type
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+type Aal5Profile struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ aal5profileBME = &ManagedEntityDefinition{
+ Name: "Aal5Profile",
+ ClassID: 16,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xe000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("MaxCpcsPduSize", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: ByteField("AalMode", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: ByteField("SscsType", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewAal5Profile (class ID 16) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewAal5Profile(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*aal5profileBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/ani-g.go b/vendor/github.com/opencord/omci-lib-go/generated/ani-g.go
new file mode 100644
index 0000000..3cee643
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/ani-g.go
@@ -0,0 +1,165 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// AniGClassID is the 16-bit ID for the OMCI
+// Managed entity ANI-G
+const AniGClassID ClassID = ClassID(263)
+
+var anigBME *ManagedEntityDefinition
+
+// AniG (class ID #263)
+// This ME organizes data associated with each access network interface supported by a GPON ONU.
+// The ONU automatically creates one instance of this ME for each PON physical port.
+//
+// Relationships
+// An instance of this ME is associated with each instance of a physical PON interface.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Its value
+// indicates the physical position of the PON interface. The first byte is the slot ID, defined in
+// clause 9.1.5. The second byte is the port ID. (R) (mandatory) (2-bytes)
+//
+// Sr Indication
+// SR indication: This Boolean attribute indicates the ONU's capability to report queue status for
+// DBA. The value true means that status reporting is available for all TCONTs that are associated
+// with the ANI. (R) (mandatory) (1-byte)
+//
+// Total TCont Number
+// Total TCONT number: This attribute indicates the total number of T-CONTs that can be supported
+// on this ANI. (R) (mandatory) (2-bytes)
+//
+// Gem Block Length
+// In all other ITU-T PON systems, the unit for queue occupancy reporting is fixed in at 4-bytes by
+// the respective TC layer specification.
+//
+// Piggyback Dba Reporting
+// (R) (mandatory) (1-byte)
+//
+// Deprecated
+// Deprecated: This attribute should be set to 0 by the ONU and ignored by the OLT. (R) (mandatory)
+// (1-byte)
+//
+// Signal Fail Threshold
+// Signal fail (SF) threshold: This attribute specifies the downstream bit error rate (BER)
+// threshold to detect the SF alarm. When this value is y, the BER threshold is 10-y. Valid values
+// are 3..8. Upon ME instantiation, the ONU sets this attribute to 5. (R,-W) (mandatory) (1-byte)
+//
+// Signal Degrade Threshold
+// Signal degrade (SD) threshold: This attribute specifies the downstream BER threshold to detect
+// the SD alarm. When this value is x, the BER threshold for SD is 10-x. Valid values are 4..10.
+// The SD threshold must be lower than the SF threshold; i.e., x-> y. Upon ME instantiation, the
+// ONU sets this attribute to 9. (R,-W) (mandatory) (1-byte)
+//
+// Arc
+// ARC: See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+// Arc Interval
+// ARC interval: See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+// Optical Signal Level
+// Optical signal level: This attribute reports the current measurement of the total downstream
+// optical signal level. Its value is a 2s complement integer referred to 1- mW (i.e., 1-dBm), with
+// 0.002 dB granularity. (R) (optional) (2-bytes)
+//
+// Lower Optical Threshold
+// Lower optical threshold: This attribute specifies the optical level the ONU uses to declare the
+// downstream low received optical power alarm. Valid values are -127 dBm (coded as 254) to 0 dBm
+// (coded as 0) in 0.5 dB increments. The default value 0xFF selects the ONU's internal policy.
+// (R,-W) (optional) (1-byte)
+//
+// Upper Optical Threshold
+// Upper optical threshold: This attribute specifies the optical level the ONU uses to declare the
+// downstream high received optical power alarm. Valid values are -127 dBm (coded as 254) to 0 dBm
+// (coded as 0) in 0.5 dB increments. The default value 0xFF selects the ONU's internal policy.
+// (R,-W) (optional) (1-byte)
+//
+// Onu Response Time
+// (R) (optional) (2-bytes)
+//
+// Transmit Optical Level
+// Transmit optical level: This attribute reports the current measurement of mean optical launch
+// power. Its value is a 2s complement integer referred to 1-mW (i.e., 1-dBm), with 0.002 dB
+// granularity. (R) (optional) (2-bytes)
+//
+// Lower Transmit Power Threshold
+// Lower transmit power threshold: This attribute specifies the minimum mean optical launch power
+// that the ONU uses to declare the low transmit optical power alarm. Its value is a 2s complement
+// integer referred to 1-mW (i.e., dBm), with 0.5-dB granularity. The default value -63.5 (0x81)
+// selects the ONU's internal policy. (R,-W) (optional) (1-byte)
+//
+// Upper Transmit Power Threshold
+// Upper transmit power threshold: This attribute specifies the maximum mean optical launch power
+// that the ONU uses to declare the high transmit optical power alarm. Its value is a 2s complement
+// integer referred to 1-mW (i.e., dBm), with 0.5-dB granularity. The default value -63.5 (0x81)
+// selects the ONU's internal policy. (R,-W) (optional) (1-byte)
+//
+type AniG struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ anigBME = &ManagedEntityDefinition{
+ Name: "AniG",
+ ClassID: 263,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ Test,
+ ),
+ AllowedAttributeMask: 0xffff,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("SrIndication", EnumerationAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("TotalTcontNumber", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read), false, false, false, 2),
+ 3: Uint16Field("GemBlockLength", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), false, false, false, 3),
+ 4: ByteField("PiggybackDbaReporting", EnumerationAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: ByteField("Deprecated", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, true, 5),
+ 6: ByteField("SignalFailThreshold", UnsignedIntegerAttributeType, 0x0400, 5, mapset.NewSetWith(Read, Write), false, false, false, 6),
+ 7: ByteField("SignalDegradeThreshold", UnsignedIntegerAttributeType, 0x0200, 9, mapset.NewSetWith(Read, Write), false, false, false, 7),
+ 8: ByteField("Arc", EnumerationAttributeType, 0x0100, 0, mapset.NewSetWith(Read, Write), true, true, false, 8),
+ 9: ByteField("ArcInterval", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, Write), false, true, false, 9),
+ 10: Uint16Field("OpticalSignalLevel", SignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, true, false, 10),
+ 11: ByteField("LowerOpticalThreshold", SignedIntegerAttributeType, 0x0020, 255, mapset.NewSetWith(Read, Write), false, true, false, 11),
+ 12: ByteField("UpperOpticalThreshold", SignedIntegerAttributeType, 0x0010, 255, mapset.NewSetWith(Read, Write), false, true, false, 12),
+ 13: Uint16Field("OnuResponseTime", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, true, false, 13),
+ 14: Uint16Field("TransmitOpticalLevel", SignedIntegerAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, true, false, 14),
+ 15: ByteField("LowerTransmitPowerThreshold", SignedIntegerAttributeType, 0x0002, 129, mapset.NewSetWith(Read, Write), false, true, false, 15),
+ 16: ByteField("UpperTransmitPowerThreshold", SignedIntegerAttributeType, 0x0001, 129, mapset.NewSetWith(Read, Write), false, true, false, 16),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewAniG (class ID 263) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewAniG(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*anigBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/attribute.go b/vendor/github.com/opencord/omci-lib-go/generated/attribute.go
new file mode 100644
index 0000000..c73d970
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/attribute.go
@@ -0,0 +1,776 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import (
+ "encoding/base64"
+ "encoding/binary"
+ "errors"
+ "fmt"
+ "github.com/deckarep/golang-set"
+ "github.com/google/gopacket"
+ "reflect"
+ "sort"
+ "strings"
+)
+
+// Attribute types
+type AttributeType uint8
+
+const (
+ UnknownAttributeType AttributeType = iota // Not known
+ OctetsAttributeType // Series of zero or more octets
+ StringAttributeType // Readable String
+ UnsignedIntegerAttributeType // Integer (0..max)
+ TableAttributeType // Table (of Octets)
+ SignedIntegerAttributeType // Signed integer, often expressed as 2's complement
+ PointerAttributeType // Managed Entity ID or pointer to a Managed instance
+ BitFieldAttributeType // Bitfield
+ EnumerationAttributeType // Fixed number of values (Unsigned Integers)
+ CounterAttributeType // Incrementing counter
+)
+
+// AttributeDefinitionMap is a map of attribute definitions with the attribute index (0..15)
+// as the key
+type AttributeDefinitionMap map[uint]AttributeDefinition
+
+// AttributeDefinition defines a single specific Managed Entity's attributes
+type AttributeDefinition struct {
+ Name string
+ AttributeType AttributeType
+ Index uint
+ Mask uint16
+ DefValue interface{}
+ Size int // Size of attribute in bytes. 0 indicates variable/unknown
+ Access mapset.Set // AttributeAccess...
+ Constraint func(interface{}) *ParamError
+ Avc bool // If true, an AVC notification can occur for the attribute
+ Tca bool // If true, a threshold crossing alert alarm notification can occur for the attribute
+ Optional bool // If true, attribute is option, else mandatory
+ Deprecated bool // If true, attribute is deprecated
+}
+
+func (attr *AttributeDefinition) String() string {
+ return fmt.Sprintf("AttributeDefinition: %v (%v/%v): Size: %v, Default: %v, Access: %v",
+ attr.GetName(), attr.AttributeType, attr.GetIndex(), attr.GetSize(), attr.GetDefault(), attr.GetAccess())
+}
+
+// GetName returns the attribute's name
+func (attr AttributeDefinition) GetName() string { return attr.Name }
+
+// GetIndex returns the attribute index )0..15)
+func (attr AttributeDefinition) GetIndex() uint { return attr.Index }
+
+// GetDefault provides the default value for an attribute if not specified
+// during its creation
+func (attr AttributeDefinition) GetDefault() interface{} { return attr.DefValue }
+
+// GetSize returns the size of the attribute. For table attributes, the size is
+// the size of a single table.
+func (attr AttributeDefinition) GetSize() int { return attr.Size }
+
+// GetAccess provides the access information (Read, Write, ...)
+func (attr AttributeDefinition) GetAccess() mapset.Set { return attr.Access }
+
+// GetConstraints returns a function that can be called for the attribute
+// that will validate the value. An appropriate error is returned if the
+// constraint fails, otherwise nil is returned to indicate that the value
+// is valid.
+func (attr AttributeDefinition) GetConstraints() func(interface{}) *ParamError {
+ return attr.Constraint
+}
+
+// IsTableAttribute returns true if the attribute is a table
+func (attr AttributeDefinition) IsTableAttribute() bool {
+ return attr.AttributeType == TableAttributeType
+}
+
+// IsCounter returns true if the attribute is a counter (usually expressed as an
+// unsigned integer)
+func (attr AttributeDefinition) IsCounter() bool {
+ return attr.AttributeType == CounterAttributeType
+}
+
+// IsBitField returns true if the attribute is a bitfield
+func (attr AttributeDefinition) IsBitField() bool {
+ return attr.AttributeType == BitFieldAttributeType
+}
+
+// IsString returns true if the attribute is a string. Strings are typically encoded
+// into fixed length files and padded with 0's
+func (attr AttributeDefinition) IsString() bool {
+ return attr.AttributeType == StringAttributeType
+}
+
+// Decode takes a slice of bytes and converts them into a value appropriate for
+// the attribute, or returns an error on failure
+func (attr *AttributeDefinition) Decode(data []byte, df gopacket.DecodeFeedback, msgType byte) (interface{}, error) {
+ if attr.IsTableAttribute() {
+ value, err := attr.tableAttributeDecode(data, df, msgType)
+ if err != nil {
+ return nil, err
+ }
+ if attr.GetConstraints() != nil {
+ if omciErr := attr.GetConstraints()(value); omciErr != nil {
+ return nil, omciErr.GetError()
+ }
+ }
+ return value, nil
+ }
+ size := attr.GetSize()
+
+ if len(data) < size {
+ df.SetTruncated()
+ return nil, NewMessageTruncatedError("packet too small for field")
+ }
+ switch attr.AttributeType {
+ case StringAttributeType, OctetsAttributeType, UnknownAttributeType:
+ value := make([]byte, size)
+ copy(value, data[:size])
+ if attr.GetConstraints() != nil {
+ if omciErr := attr.GetConstraints()(value); omciErr != nil {
+ return nil, omciErr.GetError()
+ }
+ }
+ return value, nil
+
+ default:
+ switch attr.GetSize() {
+ default:
+ value := make([]byte, size)
+ copy(value, data[:size])
+ if attr.GetConstraints() != nil {
+ if omciErr := attr.GetConstraints()(value); omciErr != nil {
+ return nil, omciErr.GetError()
+ }
+ }
+ return value, nil
+ case 1:
+ value := data[0]
+ if attr.GetConstraints() != nil {
+ if omciErr := attr.GetConstraints()(value); omciErr != nil {
+ return nil, omciErr.GetError()
+ }
+ }
+ return value, nil
+ case 2:
+ value := binary.BigEndian.Uint16(data[0:2])
+ if attr.GetConstraints() != nil {
+ if omciErr := attr.GetConstraints()(value); omciErr != nil {
+ return nil, omciErr.GetError()
+ }
+ }
+ return value, nil
+ case 4:
+ value := binary.BigEndian.Uint32(data[0:4])
+ if attr.GetConstraints() != nil {
+ if omciErr := attr.GetConstraints()(value); omciErr != nil {
+ return nil, omciErr.GetError()
+ }
+ }
+ return value, nil
+ case 8:
+ value := binary.BigEndian.Uint64(data[0:8])
+ if attr.GetConstraints() != nil {
+ omciErr := attr.GetConstraints()(value)
+ if omciErr != nil {
+ return nil, omciErr.GetError()
+ }
+ }
+ return value, nil
+ }
+ }
+}
+
+// IOctetStream interface defines a way to convert a custom type to/from an octet
+// stream.
+type IOctetStream interface {
+ ToOctetString() ([]byte, error)
+ FromOctetString([]byte) (interface{}, error)
+}
+
+// InterfaceToOctets converts an attribute value to a string of octets
+func InterfaceToOctets(input interface{}) ([]byte, error) {
+ switch values := input.(type) {
+ case []byte:
+ return values, nil
+
+ case []uint16:
+ stream := make([]byte, 2*len(values))
+ for index, value := range values {
+ binary.BigEndian.PutUint16(stream[index*2:], value)
+ }
+ return stream, nil
+
+ case []uint32:
+ stream := make([]byte, 4*len(values))
+ for index, value := range values {
+ binary.BigEndian.PutUint32(stream[index*4:], value)
+ }
+ return stream, nil
+
+ case []uint64:
+ stream := make([]byte, 8*len(values))
+ for index, value := range values {
+ binary.BigEndian.PutUint64(stream[index*8:], value)
+ }
+ return stream, nil
+
+ case IOctetStream:
+ return values.ToOctetString()
+
+ default:
+ var typeName string
+ if t := reflect.TypeOf(input); t.Kind() == reflect.Ptr {
+ typeName = "*" + t.Elem().Name()
+ } else {
+ typeName = t.Name()
+ }
+ return nil, fmt.Errorf("unable to convert input to octet string: %v", typeName)
+ }
+}
+
+// SerializeTo takes an attribute value and converts it to a slice of bytes ready
+// for transmission
+func (attr *AttributeDefinition) SerializeTo(value interface{}, b gopacket.SerializeBuffer,
+ msgType byte, bytesAvailable int) (int, error) {
+ if attr.IsTableAttribute() {
+ return attr.tableAttributeSerializeTo(value, b, msgType, bytesAvailable)
+ }
+ if value == nil {
+ return 0, fmt.Errorf("attribute: %v is nil", attr.Name)
+ }
+ size := attr.GetSize()
+ if bytesAvailable < size {
+ return 0, NewMessageTruncatedError(fmt.Sprintf("not enough space for attribute: %v", attr.Name))
+ }
+ bytes, err := b.AppendBytes(size)
+ if err != nil {
+ return 0, err
+ }
+ switch attr.AttributeType {
+ case StringAttributeType, OctetsAttributeType, UnknownAttributeType:
+ byteStream, err := InterfaceToOctets(value)
+ if err != nil {
+ return 0, err
+ }
+ copy(bytes, byteStream)
+
+ default:
+ switch size {
+ default:
+ byteStream, err := InterfaceToOctets(value)
+ if err != nil {
+ return 0, err
+ }
+ copy(bytes, byteStream)
+ case 1:
+ switch value.(type) {
+ case int:
+ bytes[0] = byte(value.(int))
+ default:
+ bytes[0] = value.(byte)
+ }
+ case 2:
+ switch value.(type) {
+ case int:
+ binary.BigEndian.PutUint16(bytes, uint16(value.(int)))
+ default:
+ binary.BigEndian.PutUint16(bytes, value.(uint16))
+ }
+ case 4:
+ switch value.(type) {
+ case int:
+ binary.BigEndian.PutUint32(bytes, uint32(value.(int)))
+ default:
+ binary.BigEndian.PutUint32(bytes, value.(uint32))
+ }
+ case 8:
+ switch value.(type) {
+ case int:
+ binary.BigEndian.PutUint64(bytes, uint64(value.(int)))
+ default:
+ binary.BigEndian.PutUint64(bytes, value.(uint64))
+ }
+ }
+ }
+ return size, nil
+}
+
+// BufferToTableAttributes takes the reconstructed octet buffer transmitted for
+// a table attribute (over many GetNextResponses) and converts it into the desired
+// format for each table row
+func (attr *AttributeDefinition) BufferToTableAttributes(data []byte) (interface{}, error) {
+ // Source is network byte order octets. Convert to proper array of slices
+ rowSize := attr.GetSize()
+ dataSize := len(data)
+ index := 0
+
+ switch rowSize {
+ default:
+ value := make([][]byte, dataSize/rowSize)
+ for offset := 0; offset < dataSize; offset += rowSize {
+ value[index] = make([]byte, rowSize)
+ copy(value[index], data[offset:])
+ index++
+ }
+ return value, nil
+ case 1:
+ value := make([]byte, dataSize)
+ copy(value, data)
+ return value, nil
+ case 2:
+ value := make([]uint16, dataSize/2)
+ for offset := 0; offset < dataSize; offset += rowSize {
+ value[offset] = binary.BigEndian.Uint16(data[offset:])
+ index++
+ }
+ return value, nil
+ case 4:
+ value := make([]uint32, dataSize/4)
+ for offset := 0; offset < dataSize; offset += rowSize {
+ value[offset] = binary.BigEndian.Uint32(data[offset:])
+ index++
+ }
+ return value, nil
+ case 8:
+ value := make([]uint64, dataSize/8)
+ for offset := 0; offset < dataSize; offset += rowSize {
+ value[offset] = binary.BigEndian.Uint64(data[offset:])
+ index++
+ }
+ return value, nil
+ }
+}
+
+func (attr *AttributeDefinition) tableAttributeDecode(data []byte, df gopacket.DecodeFeedback, msgType byte) (interface{}, error) {
+ // Serialization of a table depends on the type of message. A
+ // Review of ITU-T G.988 shows that access on tables are
+ // either Read and/or Write, never Set-by-Create
+ switch msgType {
+ default:
+ return nil, fmt.Errorf("unsupported Message Type '%v' for table serialization", msgType)
+
+ case byte(Get) | AK: // Get Response
+ // Size
+ value := binary.BigEndian.Uint32(data[0:4])
+ return value, nil
+
+ case byte(Set) | AR: // Set Request
+ fallthrough
+
+ case byte(GetNext) | AK: // Get Next Response
+ // Block of data (octets) that need to be reassembled before conversion
+ // to table/row-data. If table attribute is not explicitly given a value
+ // we have to assume the entire data buffer is the value. The receiver of
+ // this frame will need to trim off any addtional information at the end
+ // of the last frame sequence since they (and the ONU) are the only ones
+ // who know how long the data really is.
+ size := attr.GetSize()
+ if size != 0 && len(data) < attr.GetSize() {
+ df.SetTruncated()
+ return nil, NewMessageTruncatedError("packet too small for field")
+ } else if size == 0 {
+ return nil, NewProcessingError("table attributes with no size are not supported: %v", attr.Name)
+ }
+ return data, nil
+
+ case byte(SetTable) | AR: // Set Table Request
+ // TODO: Only baseline supported at this time
+ return nil, errors.New("attribute encode for set-table-request not yet supported")
+ }
+ return nil, errors.New("TODO")
+}
+
+func (attr *AttributeDefinition) tableAttributeSerializeTo(value interface{}, b gopacket.SerializeBuffer, msgType byte,
+ bytesAvailable int) (int, error) {
+ // Serialization of a table depends on the type of message. A
+ // Review of ITU-T G.988 shows that access on tables are
+ // either Read and/or Write, never Set-by-Create
+ switch msgType {
+ default:
+ return 0, fmt.Errorf("unsupported Message Type '%v' for table serialization", msgType)
+
+ case byte(Get) | AK: // Get Response
+ // Size
+ if bytesAvailable < 4 {
+ return 0, NewMessageTruncatedError(fmt.Sprintf("not enough space for attribute: %v", attr.Name))
+ }
+ if dwordSize, ok := value.(uint32); ok {
+ bytes, err := b.AppendBytes(4)
+ if err != nil {
+ return 0, err
+ }
+ binary.BigEndian.PutUint32(bytes, dwordSize)
+ return 4, nil
+ }
+ return 0, errors.New("unexpected type for table serialization")
+
+ case byte(GetNext) | AK: // Get Next Response
+ // Values are already in network by order form
+ if data, ok := value.([]byte); ok {
+ if bytesAvailable < len(data) {
+ return 0, NewMessageTruncatedError(fmt.Sprintf("not enough space for attribute: %v", attr.Name))
+ }
+ bytes, err := b.AppendBytes(len(data))
+ if err != nil {
+ return 0, err
+ }
+ copy(bytes, data)
+ return len(data), nil
+ }
+ return 0, errors.New("unexpected type for table serialization")
+
+ case byte(Set) | AR: // Set Request
+ // TODO: For complex table types (such as extended vlan tagging config) create an
+ // interface definition. Provide a switch type to look for that as well as for
+ // value being a byte slice... For now, just byte slice provided
+ break
+
+ case byte(SetTable) | AR: // Set Table Request
+ // TODO: Only baseline supported at this time
+ return 0, errors.New("attribute encode for set-table-request not yet supported")
+ }
+ size := attr.GetSize()
+ if bytesAvailable < size {
+ return 0, NewMessageTruncatedError(fmt.Sprintf("not enough space for attribute: %v", attr.Name))
+ }
+ bytes, err := b.AppendBytes(size)
+ if err != nil {
+ return 0, err
+ }
+ switch attr.GetSize() {
+ default:
+ copy(bytes, value.([]byte))
+ case 1:
+ switch value.(type) {
+ case int:
+ bytes[0] = byte(value.(int))
+ default:
+ bytes[0] = value.(byte)
+ }
+ case 2:
+ switch value.(type) {
+ case int:
+ binary.BigEndian.PutUint16(bytes, uint16(value.(int)))
+ default:
+ binary.BigEndian.PutUint16(bytes, value.(uint16))
+ }
+ case 4:
+ switch value.(type) {
+ case int:
+ binary.BigEndian.PutUint32(bytes, uint32(value.(int)))
+ default:
+ binary.BigEndian.PutUint32(bytes, value.(uint32))
+ }
+ case 8:
+ switch value.(type) {
+ case int:
+ binary.BigEndian.PutUint64(bytes, uint64(value.(int)))
+ default:
+ binary.BigEndian.PutUint64(bytes, value.(uint64))
+ }
+ }
+ return size, nil
+}
+
+// GetAttributeDefinitionByName searches the attribute definition map for the
+// attribute with the specified name (case insensitive)
+func GetAttributeDefinitionByName(attrMap AttributeDefinitionMap, name string) (*AttributeDefinition, error) {
+ nameLower := strings.ToLower(name)
+ for _, attrVal := range attrMap {
+ if nameLower == strings.ToLower(attrVal.GetName()) {
+ return &attrVal, nil
+ }
+ }
+ return nil, errors.New(fmt.Sprintf("attribute '%s' not found", name))
+}
+
+// GetAttributeDefinitionMapKeys is a convenience functions since we may need to
+// iterate a map in key index order. Maps in Go since v1.0 the iteration order
+// of maps have been randomized.
+func GetAttributeDefinitionMapKeys(attrMap AttributeDefinitionMap) []uint {
+ var keys []uint
+ for k := range attrMap {
+ keys = append(keys, k)
+ }
+ sort.Slice(keys, func(i, j int) bool { return keys[i] < keys[j] })
+ return keys
+}
+
+// GetAttributeBitmap returns the attribute bitmask for a single attribute
+func GetAttributeBitmap(attrMap AttributeDefinitionMap, name string) (uint16, error) {
+ attrDef, err := GetAttributeDefinitionByName(attrMap, name)
+ if err != nil {
+ return 0, err
+ }
+ index := attrDef.GetIndex()
+ if index == 0 {
+ return 0, errors.New("managed entity ID should not be used in an attribute bitmask")
+ }
+ return uint16(1 << (16 - index)), nil
+}
+
+// GetAttributesBitmap is a convenience functions to scan a list of attributes
+// and return the bitmask that represents them
+func GetAttributesBitmap(attrMap AttributeDefinitionMap, attributes mapset.Set) (uint16, error) {
+ var mask uint16
+ for _, def := range attrMap {
+ if attributes.Contains(def.Name) {
+ mask |= def.Mask
+ attributes.Remove(def.Name)
+ }
+ }
+ if attributes.Cardinality() > 0 {
+ return 0, fmt.Errorf("unsupported attributes: %v", attributes)
+ }
+ return mask, nil
+}
+
+// GetAttributesValueMap returns the attribute value map with uninitialized values based
+// on the attribute bitmask
+func GetAttributesValueMap(attrDefs AttributeDefinitionMap, mask uint16, access mapset.Set) (AttributeValueMap, OmciErrors) {
+ attrMap := make(AttributeValueMap, 0)
+ for index, def := range attrDefs {
+ if index == 0 {
+ continue
+ }
+ checkMask := def.Mask
+ accessOk := access == nil || def.GetAccess().Intersect(access).Cardinality() > 0
+
+ if (mask&checkMask) != 0 && accessOk {
+ attrMap[def.GetName()] = nil
+ mask &= ^checkMask
+ }
+ }
+ if mask != 0 {
+ // Return map, but signaled failed attributes
+ return attrMap, NewParameterError(mask)
+ }
+ return attrMap, NewOmciSuccess()
+}
+
+///////////////////////////////////////////////////////////////////////
+// Packet definitions for attributes of various types/sizes
+func toOctets(str string) []byte {
+ data, err := base64.StdEncoding.DecodeString(str)
+ if err != nil {
+ panic(fmt.Sprintf("Invalid Base-64 string: '%v'", str))
+ }
+ return data
+}
+
+///////////////////////////////////////////////////////////////////////
+// Packet definitions for attributes of various types/sizes
+
+// ByteField returns an AttributeDefinition for an attribute that is encoded as a single
+// octet (8-bits).
+func ByteField(name string, attrType AttributeType, mask uint16, defVal uint8, access mapset.Set, avc bool,
+ optional bool, deprecated bool, index uint) AttributeDefinition {
+ return AttributeDefinition{
+ Name: name,
+ AttributeType: attrType,
+ Mask: mask,
+ Index: index,
+ DefValue: defVal,
+ Size: 1,
+ Access: access,
+ Avc: avc,
+ Optional: optional,
+ Deprecated: deprecated,
+ }
+}
+
+// Uint16Field returns an AttributeDefinition for an attribute that is encoded as two
+// octet (16-bits).
+func Uint16Field(name string, attrType AttributeType, mask uint16, defVal uint16, access mapset.Set, avc bool,
+ optional bool, deprecated bool, index uint) AttributeDefinition {
+ return AttributeDefinition{
+ Name: name,
+ AttributeType: attrType,
+ Mask: mask,
+ Index: index,
+ DefValue: defVal,
+ Size: 2,
+ Access: access,
+ Avc: avc,
+ Optional: optional,
+ Deprecated: deprecated,
+ }
+}
+
+// Uint32Field returns an AttributeDefinition for an attribute that is encoded as four
+// octet (32-bits).
+func Uint32Field(name string, attrType AttributeType, mask uint16, defVal uint32, access mapset.Set, avc bool,
+ optional bool, deprecated bool, index uint) AttributeDefinition {
+ return AttributeDefinition{
+ Name: name,
+ AttributeType: attrType,
+ Mask: mask,
+ Index: index,
+ DefValue: defVal,
+ Size: 4,
+ Access: access,
+ Avc: avc,
+ Optional: optional,
+ Deprecated: deprecated,
+ }
+}
+
+// Uint64Field returns an AttributeDefinition for an attribute that is encoded as eight
+// octet (64-bits).
+func Uint64Field(name string, attrType AttributeType, mask uint16, defVal uint64, access mapset.Set, avc bool,
+ optional bool, deprecated bool, index uint) AttributeDefinition {
+ return AttributeDefinition{
+ Name: name,
+ AttributeType: attrType,
+ Mask: mask,
+ Index: index,
+ DefValue: defVal,
+ Size: 8,
+ Access: access,
+ Avc: avc,
+ Optional: optional,
+ Deprecated: deprecated,
+ }
+}
+
+// MultiByteField returns an AttributeDefinition for an attribute that is encoded as multiple
+// octets that do not map into fields with a length that is 1, 2, 4, or 8 octets.
+func MultiByteField(name string, attrType AttributeType, mask uint16, size uint, defVal []byte, access mapset.Set, avc bool,
+ optional bool, deprecated bool, index uint) AttributeDefinition {
+ return AttributeDefinition{
+ Name: name,
+ AttributeType: attrType,
+ Mask: mask,
+ Index: index,
+ DefValue: defVal,
+ Size: int(size),
+ Access: access,
+ Avc: avc,
+ Optional: optional,
+ Deprecated: deprecated,
+ }
+}
+
+// Notes on various OMCI ME Table attribute fields. This comment will eventually be
+// removed once a good table solution is implemented. These are not all the MEs with
+// table attributes, but probably ones I care about to support initially.
+//
+// ME Notes
+// --------------------------------------------------------------------------------------------
+// Port-mapping package -> Combined Port table -> N * 25 sized rows (port (1) + ME(2) * 12)
+// ONU Remote Debug -> Reply table (N bytes)
+// ONU3-G -> Status snapshot recordtable M x N bytes
+// MCAST Gem interworkTP-> IPv4 multicast adress table (12*n) (two 2 byte fields, two 4 byte fields)
+// IPv6 multicast adress table (24*n) (various sub-fields)
+// L2 mcast gem TP -> MCAST MAC addr filtering table (11 * n) (various sub-fields)
+// MAC Bridge Port Filt -> MAC Filter table (8 * n) (3 fields, some are bits) *** BITS ***
+// MAC Bridge Port data -> Bridge Table (8*M) (vaius fields, some are bits) *** BITS ***
+// VLAN tagging filter -> Rx Vlan tag op table (16 * n) Lots of bit fields *** BITS ***
+// MCAST operations profile
+// MCAST Subscriber config info
+// MCAST subscriber monitor
+// OMCI -> Two tables (N bytes and 2*N bytes)
+// General pupose buffer -> N bytes
+// Enhanced security control (17 * N bytes), (16 * P Bytes) , (16 * Q bytes), and more...
+//
+// An early example of info to track
+
+// TableInfo is an early prototype of how to better model some tables that are
+// difficult to code.
+//
+// The Value member may be one of the following:
+// nil : Empty, no default, ...
+// value : A specific value that equates to one row, ie) 6 or toOctets("base64")
+// array : One or more rows of values. [2]uint16{2, 3}
+type TableInfo struct {
+ Value interface{} // See comment above
+ Size int // Table Row Size
+}
+
+func (t *TableInfo) String() string {
+ return fmt.Sprintf("TableInfo: Size: %d, Value(s): %v", t.Size, t.Value)
+}
+
+// TableField is used to define an attribute that is a table
+func TableField(name string, attrType AttributeType, mask uint16, tableInfo TableInfo, access mapset.Set,
+ avc bool, optional bool, deprecated bool, index uint) AttributeDefinition {
+ return AttributeDefinition{
+ Name: name,
+ AttributeType: attrType,
+ Mask: mask,
+ Index: index,
+ DefValue: tableInfo.Value,
+ Size: tableInfo.Size, //Number of elements
+ Access: access,
+ Avc: avc,
+ Optional: optional,
+ Deprecated: deprecated,
+ }
+}
+
+// UnknownField is currently not used and may be deprecated. Its original intent
+// was to be a placeholder during table attribute development
+func UnknownField(name string, mask uint16, size int, index uint) AttributeDefinition {
+ return AttributeDefinition{
+ Name: name,
+ AttributeType: UnknownAttributeType, // Stored as octet string
+ Mask: mask,
+ Index: index,
+ DefValue: nil,
+ Size: size,
+ Access: mapset.NewSet(Read, Write),
+ Avc: false,
+ Optional: false,
+ Deprecated: false,
+ }
+}
+
+// AttributeValueMap maps an attribute (by name) to its value
+type AttributeValueMap map[string]interface{}
+
+// MergeInDefaultValues will examine the Manage Entity defaults (for non-SetByCreate attributes). This
+// function is called on a MIB Create request but is provide for external use in case it is needed
+// before the MIB entry is created
+func MergeInDefaultValues(classID ClassID, attributes AttributeValueMap) OmciErrors {
+ // Get default values for non-SetByCreate attributes
+ attrDefs, err := GetAttributesDefinitions(classID)
+ if err.StatusCode() != Success {
+ return err
+ } else if attributes == nil {
+ return NewProcessingError("Invalid (nil) Attribute Value Map referenced")
+ }
+ nilAllowed := mapset.NewSet(StringAttributeType, OctetsAttributeType, TableAttributeType)
+ for index, attrDef := range attrDefs {
+ if !attrDef.Access.Contains(SetByCreate) && index != 0 &&
+ (attrDef.DefValue != nil || nilAllowed.Contains(attrDef.AttributeType)) {
+ name := attrDef.GetName()
+ if existing, found := attributes[name]; !found || existing == nil {
+ attributes[name] = attrDef.DefValue
+ }
+ }
+ }
+ return err
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/attributeme.go b/vendor/github.com/opencord/omci-lib-go/generated/attributeme.go
new file mode 100644
index 0000000..7e1c395
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/attributeme.go
@@ -0,0 +1,124 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// AttributeMeClassID is the 16-bit ID for the OMCI
+// Managed entity Attribute ME
+const AttributeMeClassID ClassID = ClassID(289)
+
+var attributemeBME *ManagedEntityDefinition
+
+// AttributeMe (class ID #289)
+// This ME describes a particular attribute type that is supported by the ONU. This ME is not
+// included in an MIB upload.
+//
+// Relationships
+// One or more attribute entities are related to each ME entity. More than one ME entity can refer
+// to a given attribute entity.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. This number is
+// the same as the one that appears in the attributes table in the ME. Only one instance of each
+// unique attribute need be created. The ONU can assign attribute numbering as it pleases, out of
+// the pool of 64K IDs; however, it is suggested that the numbering follow a rational scheme to aid
+// human readability. (R) (mandatory) (2-bytes)
+//
+// Name
+// Name: This attribute contains a 25-byte mnemonic tag for the attribute. Strings shorter than
+// 25-bytes are padded with null characters. (R) (mandatory) (25-bytes)
+//
+// Size
+// Size: This attribute contains the size of the attribute, in bytes. The value 0 indicates that
+// the attribute can have a variable/unknown size. (R) (mandatory) (2-bytes)
+//
+// Access
+// (R) (mandatory) (1-byte)
+//
+// Format
+// (R) (mandatory) (1-byte)
+//
+// Lower Limit
+// Lower limit: This attribute provides the lowest value for the attribute. Valid for numeric types
+// (pointer, signed integer, unsigned integer) only. For attributes smaller than 4-bytes, the
+// desired numeric value is expressed in 4-byte representation (for example, the 2s complement
+// 1-byte integer 0xFE is expressed as 0xFFFF-FFFE; the unsigned 1-byte integer 0xFE is expressed
+// as 0x0000-00FE). (R) (mandatory) (4-bytes)
+//
+// Upper Limit
+// Upper limit: This attribute provides the highest value for the attribute. It has the same
+// validity and format as the lower limit attribute. (R) (mandatory) (4-bytes)
+//
+// Bit Field
+// Bit field: This attribute is a mask of the supported bits in a bit field attribute, valid for
+// bit field type only. A 1 in any position signifies that its code point is supported, while 0
+// indicates that it is not supported. For bit fields smaller than 4-bytes, the attribute is
+// aligned at the least significant end of the mask. (R) (mandatory) (4-bytes)
+//
+// Code Points Table
+// Code points table: This attribute lists the code points supported by an enumerated attribute.
+// (R) (mandatory) (2 * Q bytes, where Q is the number of entries in the table.)
+//
+// Support
+// (R) (mandatory) (1-byte)
+//
+type AttributeMe struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ attributemeBME = &ManagedEntityDefinition{
+ Name: "AttributeMe",
+ ClassID: 289,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ GetNext,
+ ),
+ AllowedAttributeMask: 0xff80,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: MultiByteField("Name", OctetsAttributeType, 0x8000, 25, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("Size", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read), false, false, false, 2),
+ 3: ByteField("Access", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: ByteField("Format", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("LowerLimit", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("UpperLimit", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("BitField", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: TableField("CodePointsTable", TableAttributeType, 0x0100, TableInfo{nil, 2}, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: ByteField("Support", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewAttributeMe (class ID 289) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewAttributeMe(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*attributemeBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/authenticationsecuritymethod.go b/vendor/github.com/opencord/omci-lib-go/generated/authenticationsecuritymethod.go
new file mode 100644
index 0000000..bd8d2f6
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/authenticationsecuritymethod.go
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// AuthenticationSecurityMethodClassID is the 16-bit ID for the OMCI
+// Managed entity Authentication security method
+const AuthenticationSecurityMethodClassID ClassID = ClassID(148)
+
+var authenticationsecuritymethodBME *ManagedEntityDefinition
+
+// AuthenticationSecurityMethod (class ID #148)
+// The authentication security method defines the user ID and password configuration to establish a
+// session between a client and a server. This object may be used in the role of the client or
+// server. An instance of this ME is created by the OLT if authenticated communication is
+// necessary.
+//
+// Relationships
+// One instance of this management entity may be associated with a network address ME. This ME may
+// also be cited by other MEs that require authentication parameter management.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. The value 0xFFFF
+// is reserved. (R, setbycreate) (mandatory) (2-bytes)
+//
+// Validation Scheme
+// (R,-W) (mandatory) (1-byte)
+//
+// Username 1
+// Username 1: This string attribute is the user name. If the string is shorter than 25-bytes, it
+// must be null terminated (Note). (R,-W) (mandatory) (25-bytes)
+//
+// Password
+// Password: This string attribute is the password. If the string is shorter than 25-bytes, it must
+// be null terminated. (R,-W) (mandatory) (25-bytes)
+//
+// Realm
+// Realm: This string attribute specifies the realm used in digest authentication. If the string is
+// shorter than 25-bytes, it must be null terminated. (R,-W) (mandatory) (25-bytes)
+//
+// Username 2
+// NOTE - The total username is the concatenation of the username 1 and username 2 attributes if
+// and only if: a) username 1 comprises 25 non-null characters; b) username 2 is supported by the
+// ONU; and c) username 2 contains a leading non-null character string. Otherwise, the total
+// username is simply the value of the username 1 attribute.
+//
+type AuthenticationSecurityMethod struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ authenticationsecuritymethodBME = &ManagedEntityDefinition{
+ Name: "AuthenticationSecurityMethod",
+ ClassID: 148,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xf800,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("ValidationScheme", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: MultiByteField("Username1", OctetsAttributeType, 0x4000, 25, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read, Write), false, false, false, 2),
+ 3: MultiByteField("Password", OctetsAttributeType, 0x2000, 25, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read, Write), false, false, false, 3),
+ 4: MultiByteField("Realm", OctetsAttributeType, 0x1000, 25, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read, Write), false, false, false, 4),
+ 5: MultiByteField("Username2", OctetsAttributeType, 0x0800, 25, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read, Write), false, true, false, 5),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewAuthenticationSecurityMethod (class ID 148) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewAuthenticationSecurityMethod(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*authenticationsecuritymethodBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/bbftr-069managementserver.go b/vendor/github.com/opencord/omci-lib-go/generated/bbftr-069managementserver.go
new file mode 100644
index 0000000..b9bf56c
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/bbftr-069managementserver.go
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// BbfTr069ManagementServerClassID is the 16-bit ID for the OMCI
+// Managed entity BBF TR-069 management server
+const BbfTr069ManagementServerClassID ClassID = ClassID(340)
+
+var bbftr069managementserverBME *ManagedEntityDefinition
+
+// BbfTr069ManagementServer (class ID #340)
+// If functions within the ONU are managed by [BBF TR-069], this ME allows OMCI configuration of
+// the autoconfiguration server (ACS) URL and related authentication information for an ACS
+// connection initiated by the ONU. [BBF TR-069] supports other means to discover its ACS, so not
+// all BBF-TR069-compatible ONUs necessarily support this ME. Furthermore, even if the ONU does
+// support this ME, some operators may choose not to use it.
+//
+// An ONU that supports OMCI configuration of ACS information automatically creates instances of
+// this ME.
+//
+// Relationships
+// An instance of the BBF TR-069 management server ME exists for each instance of a BBF TR-069
+// management domain within the ONU.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of a VEIP that links to the BBF TR-069
+// management domain. (R) (mandatory) (2-bytes)
+//
+// Administrative State
+// Administrative state: This attribute locks (1) and unlocks (0) the functions performed by this
+// ME. When the administrative state is locked, the functions of this ME are disabled. BBF TR-069
+// connectivity to an ACS may be possible through means that do not depend on this ME. The default
+// value of this attribute is locked. (R,W) (mandatory) (1-byte)
+//
+// Acs Network Address
+// ACS network address: This attribute points to an instance of a network address ME that contains
+// URL and authentication information associated with the ACS URL. (R, W) (mandatory) (2 bytes)
+//
+// Associated Tag
+// Associated tag: This attribute is a TCI value for BBF TR-069 management traffic passing through
+// the VEIP. A TCI, comprising user priority, CFI and VID, is represented by 2-bytes. The value
+// 0xFFFF specifies that BBF TR-069 management traffic passes through the VEIP with neither a VLAN
+// nor a priority tag. (R, W) (mandatory) (2-bytes)
+//
+type BbfTr069ManagementServer struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ bbftr069managementserverBME = &ManagedEntityDefinition{
+ Name: "BbfTr069ManagementServer",
+ ClassID: 340,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xe000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("AdministrativeState", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: Uint16Field("AcsNetworkAddress", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, Write), false, false, false, 2),
+ 3: Uint16Field("AssociatedTag", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), false, false, false, 3),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewBbfTr069ManagementServer (class ID 340) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewBbfTr069ManagementServer(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*bbftr069managementserverBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/callcontrolperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/callcontrolperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..bb625a8
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/callcontrolperformancemonitoringhistorydata.go
@@ -0,0 +1,117 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// CallControlPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity Call control performance monitoring history data
+const CallControlPerformanceMonitoringHistoryDataClassID ClassID = ClassID(140)
+
+var callcontrolperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// CallControlPerformanceMonitoringHistoryData (class ID #140)
+// This ME collects PM data related to the call control channel. Instances of this ME are created
+// and deleted by the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an instance of the PPTP POTS UNI ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the PPTP POTS UNI. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 ME that
+// contains PM threshold values. Since no threshold value attribute number exceeds 7, a threshold
+// data 2 ME is optional. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Call Setup Failures
+// Call setup failures: This attribute counts call set-up failures. (R) (mandatory) (4-bytes)
+//
+// Call Setup Timer
+// Call setup timer: This attribute is a high water-mark that records the longest duration of a
+// single call set-up detected during this interval. Time is measured in milliseconds from the time
+// an initial set-up was requested by the subscriber until the time at which a response was
+// provided to the subscriber in the form of busy tone, audible ring tone, etc. (R) (mandatory)
+// (4-bytes)
+//
+// Call Terminate Failures
+// Call terminate failures: This attribute counts the number of calls that were terminated with
+// cause. (R) (mandatory) (4-bytes)
+//
+// Analog Port Releases
+// Analog port releases: This attribute counts the number of analogue port releases without
+// dialling detected (abandoned calls). (R) (mandatory) (4-bytes)
+//
+// Analog Port Off_Hook Timer
+// Analog port off-hook timer: This attribute is a high water-mark that records the longest period
+// of a single off-hook detected on the analogue port. Time is measured in milliseconds. (R)
+// (mandatory) (4-bytes)
+//
+type CallControlPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ callcontrolperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "CallControlPerformanceMonitoringHistoryData",
+ ClassID: 140,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfe00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("CallSetupFailures", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("CallSetupTimer", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("CallTerminateFailures", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("AnalogPortReleases", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("AnalogPortOffHookTimer", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewCallControlPerformanceMonitoringHistoryData (class ID 140) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewCallControlPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*callcontrolperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/cardholder.go b/vendor/github.com/opencord/omci-lib-go/generated/cardholder.go
new file mode 100644
index 0000000..077271e
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/cardholder.go
@@ -0,0 +1,161 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// CardholderClassID is the 16-bit ID for the OMCI
+// Managed entity Cardholder
+const CardholderClassID ClassID = ClassID(5)
+
+var cardholderBME *ManagedEntityDefinition
+
+// Cardholder (class ID #5)
+// The cardholder represents the fixed equipment slot configuration of the ONU. Each cardholder can
+// contain 0 or 1 circuit packs; the circuit pack models equipment information that can change over
+// the lifetime of the ONU, e.g., through replacement.
+//
+// One instance of this ME exists for each physical slot in an ONU that has pluggable circuit
+// packs. One or more instances of this ME may also exist in an integrated ONU, to represent
+// virtual slots. Instances of this ME are created automatically by the ONU, and the status
+// attributes are populated according to data within the ONU itself.
+//
+// Slot 0 is intended to be used only in an integrated ONU. If an integrated ONU is modelled with a
+// universal slot 0, it is recommended that it does not contain additional (non-zero) virtual
+// slots. A cardholder for virtual slot 0 is recommended.
+//
+// There is potential for conflict in the semantics of the expected plug-in unit type, the expected
+// port count and the expected equipment ID, both when the slot is not populated and when a new
+// circuit pack is inserted. The expected plug-in unit type and the plug-in type mismatch alarm are
+// mandatory, although plug-and-play/unknown (circuit pack type 255) may be used as a way to
+// minimize their significance. It is recommended that an ONU deny the provisioning of inconsistent
+// combinations of expected equipment attributes.
+//
+// When a circuit pack is plugged into a cardholder or when a cardholder is pre-provisioned to
+// expect a circuit pack of a given type, it may trigger the ONU to instantiate a number of MEs and
+// update the values of others, depending on the circuit pack type. The ONU may also delete a
+// variety of other MEs when a circuit pack is reprovisioned to not expect a circuit pack or to
+// expect a circuit pack of a different type. These actions are described in the definitions of the
+// various MEs.
+//
+// Expected equipment ID and expected port count are alternate ways to trigger the same
+// preprovisioning effects. These tools may be useful if an ONU is prepared to accept more than one
+// circuit pack of a given type but with different port counts, or if a circuit pack is a hybrid
+// that matches none of the types in Table 9.1.5-1, but whose identification (e.g., part number) is
+// known.
+//
+// Relationships
+// An ONU may contain zero or more instances of the cardholder, each of which may contain an
+// instance of the circuit pack ME. The slot ID, real or virtual, is a fundamental identification
+// mechanism for MEs that bear some relationship to a physical location.
+//
+// Attributes
+// Managed Entity Id
+// NOTE 1 - Some xDSL MEs use the two MSBs of the slot number for other purposes. An ONU that
+// supports these services may have slot limitations or restrictions.
+//
+// Actual Plug In Unit Type
+// Actual plugin unit type: This attribute is equal to the type of the circuit pack in the
+// cardholder, or 0 if the cardholder is empty. When the cardholder is populated, this attribute is
+// the same as the type attribute of the corresponding circuit pack ME. Circuit pack types are
+// defined in Table 9.1.5-1. (R) (mandatory) (1-byte)
+//
+// Expected Plug_In Unit Type
+// Expected plug-in unit type: This attribute provisions the type of circuit pack for the slot. For
+// type coding, see Table 9.1.5-1. The value 0 means that the cardholder is not provisioned to
+// contain a circuit pack. The value 255 means that the cardholder is configured for plug-and-play.
+// Upon ME instantiation, the ONU sets this attribute to 0. For integrated interfaces, this
+// attribute may be used to represent the type of interface. (R,-W) (mandatory) (1-byte)
+//
+// Expected Port Count
+// Expected port count: This attribute permits the OLT to specify the number of ports it expects in
+// a circuit pack. Prior to provisioning by the OLT, the ONU initializes this attribute to 0.
+// (R,-W) (optional) (1-byte)
+//
+// Expected Equipment Id
+// Expected equipment ID: This attribute provisions the specific type of expected circuit pack.
+// This attribute applies only to ONUs that do not have integrated interfaces. In some
+// environments, this may contain the expected CLEI code. Upon ME instantiation, the ONU sets this
+// attribute to all spaces. (R,-W) (optional) (20-bytes)
+//
+// Actual Equipment Id
+// Actual equipment ID: This attribute identifies the specific type of circuit pack, once it is
+// installed. This attribute applies only to ONUs that do not have integrated interfaces. In some
+// environments, this may include the CLEI code. When the slot is empty or the equipment ID is not
+// known, this attribute should be set to all spaces. (R) (optional) (20-bytes)
+//
+// Protection Profile Pointer
+// Protection profile pointer: This attribute specifies an equipment protection profile that may be
+// associated with the cardholder. Its value is the least significant byte of the ME ID of the
+// equipment protection profile with which it is associated, or 0 if equipment protection is not
+// used. (R) (optional) (1-byte)
+//
+// Invoke Protection Switch
+// When circuit packs that support a PON interface (IF) function are switched, the response should
+// be returned on the same PON that received the command. However, the OLT should also be prepared
+// to accept a response on the redundant PON. (R,-W) (optional) (1-byte)
+//
+// Alarm _ Reporting Control
+// Alarm-reporting control (ARC): See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+// Arc Interval
+// ARC interval: See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+type Cardholder struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ cardholderBME = &ManagedEntityDefinition{
+ Name: "Cardholder",
+ ClassID: 5,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xff80,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("ActualPlugInUnitType", EnumerationAttributeType, 0x8000, 0, mapset.NewSetWith(Read), true, false, false, 1),
+ 2: ByteField("ExpectedPlugInUnitType", EnumerationAttributeType, 0x4000, 0, mapset.NewSetWith(Read, Write), false, false, false, 2),
+ 3: ByteField("ExpectedPortCount", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), false, true, false, 3),
+ 4: MultiByteField("ExpectedEquipmentId", StringAttributeType, 0x1000, 20, toOctets("ICAgICAgICAgICAgICAgICAgICA="), mapset.NewSetWith(Read, Write), false, true, false, 4),
+ 5: MultiByteField("ActualEquipmentId", StringAttributeType, 0x0800, 20, toOctets("ICAgICAgICAgICAgICAgICAgICA="), mapset.NewSetWith(Read), true, true, false, 5),
+ 6: ByteField("ProtectionProfilePointer", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, true, false, 6),
+ 7: ByteField("InvokeProtectionSwitch", EnumerationAttributeType, 0x0200, 0, mapset.NewSetWith(Read, Write), false, true, false, 7),
+ 8: ByteField("AlarmReportingControl", EnumerationAttributeType, 0x0100, 0, mapset.NewSetWith(Read, Write), true, true, false, 8),
+ 9: ByteField("ArcInterval", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, Write), false, true, false, 9),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewCardholder (class ID 5) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewCardholder(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*cardholderBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/cesserviceprofile.go b/vendor/github.com/opencord/omci-lib-go/generated/cesserviceprofile.go
new file mode 100644
index 0000000..b32aa62
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/cesserviceprofile.go
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// CesServiceProfileClassID is the 16-bit ID for the OMCI
+// Managed entity CES service profile
+const CesServiceProfileClassID ClassID = ClassID(21)
+
+var cesserviceprofileBME *ManagedEntityDefinition
+
+// CesServiceProfile (class ID #21)
+// NOTE - In [ITU-T G.984.4], this ME is called a CES service profile-G.
+//
+// An instance of this ME organizes data that describe the CES service functions of the ONU.
+// Instances of this ME are created and deleted by the OLT.
+//
+// Relationships
+// An instance of this ME may be associated with zero or more instances of a GEM IW TP.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Ces Buffered Cdv Tolerance
+// CES buffered CDV tolerance: This attribute represents the duration of user data that must be
+// buffered by the CES IW entity to offset packet delay variation. It is expressed in 10-us
+// increments. 75 (750-vs) is suggested as a default value. (R,-W, setbycreate) (mandatory)
+// (2-bytes)
+//
+// Channel Associated Signalling Cas
+// (R,-W, setbycreate) (optional) (1-byte)
+//
+type CesServiceProfile struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ cesserviceprofileBME = &ManagedEntityDefinition{
+ Name: "CesServiceProfile",
+ ClassID: 21,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xc000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("CesBufferedCdvTolerance", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: ByteField("ChannelAssociatedSignallingCas", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 2),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewCesServiceProfile (class ID 21) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewCesServiceProfile(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*cesserviceprofileBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/circuitpack.go b/vendor/github.com/opencord/omci-lib-go/generated/circuitpack.go
new file mode 100644
index 0000000..dcf7528
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/circuitpack.go
@@ -0,0 +1,192 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// CircuitPackClassID is the 16-bit ID for the OMCI
+// Managed entity Circuit pack
+const CircuitPackClassID ClassID = ClassID(6)
+
+var circuitpackBME *ManagedEntityDefinition
+
+// CircuitPack (class ID #6)
+// This ME models a real or virtual circuit pack that is equipped in a real or virtual ONU slot.
+// For ONUs with integrated interfaces, this ME may be used to distinguish available types of
+// interfaces (the port-mapping package is another way).
+//
+// For ONUs with integrated interfaces, the ONU automatically creates an instance of this ME for
+// each instance of the virtual cardholder ME. The ONU also creates an instance of this ME when the
+// OLT provisions the cardholder to expect a circuit pack, i.e., when the OLT sets the expected
+// plug-in unit type or equipment ID of the cardholder to a circuit pack type, as defined in Table
+// 9.1.5-1. The ONU also creates an instance of this ME when a circuit pack is installed in a
+// cardholder whose expected plug-in unit type is 255-= plugandplay, and whose equipment ID is not
+// provisioned. Finally, when the cardholder is provisioned for plug-and-play, an instance of this
+// ME can be created at the request of the OLT.
+//
+// The ONU deletes an instance of this ME when the OLT de-provisions the circuit pack (i.e., when
+// the OLT sets the expected plug-in unit type or equipment ID of the cardholder to 0-= no LIM).
+// The ONU also deletes an instance of this ME on request of the OLT if the expected plug-in unit
+// type attribute of the corresponding cardholder is equal to 255, plug-and-play, and the expected
+// equipment ID is blank (a string of all spaces). ONUs with integrated interfaces do not delete
+// circuit pack instances.
+//
+// NOTE - Creation and deletion by the OLT is retained for backward compatibility.
+//
+// Relationships
+// An instance of this ME is contained by an instance of the cardholder ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Its value is the
+// same as that of the cardholder ME containing this circuit pack instance. (R, setbycreate if
+// applicable) (mandatory) (2-bytes)
+//
+// Type
+// Type: This attribute identifies the circuit pack type. This attribute is a code as defined in
+// Table 9.1.5-1. The value 255 means unknown or undefined, i.e., the inserted circuit pack is not
+// recognized by the ONU or is not mapped to an entry in Table 9.1.5-1. In the latter case, the
+// equipment ID attribute may contain inventory information. Upon autonomous ME instantiation, the
+// ONU sets this attribute to 0 or to the type of the circuit pack that is physically present. (R,
+// setbycreate if applicable) (mandatory) (1-byte)
+//
+// Number Of Ports
+// Number of ports: This attribute is the number of access ports on the circuit pack. If the port-
+// mapping package is supported for this circuit pack, this attribute should be set to the total
+// number of ports of all types. (R) (optional) (1-byte)
+//
+// Serial Number
+// Serial number: The serial number is expected to be unique for each circuit pack, at least within
+// the scope of the given vendor. Note that the serial number may contain the vendor ID or version
+// number. For integrated ONUs, this value is identical to the value of the serial number attribute
+// of the ONU-G ME. Upon creation in the absence of a physical circuit pack, this attribute
+// comprises all spaces. (R) (mandatory) (8-bytes)
+//
+// Version
+// Version: This attribute is a string that identifies the version of the circuit pack as defined
+// by the vendor. The value 0 indicates that version information is not available or applicable.
+// For integrated ONUs, this value is identical to the value of the version attribute of the ONU-G
+// ME. Upon creation in the absence of a physical circuit pack, this attribute comprises all
+// spaces. (R) (mandatory) (14-bytes)
+//
+// Vendor Id
+// Vendor ID: This attribute identifies the vendor of the circuit pack. For ONUs with integrated
+// interfaces, this value is identical to the value of the vendor ID attribute of the ONU-G ME.
+// Upon creation in the absence of a physical circuit pack, this attribute comprises all spaces.
+// (R) (optional) (4-bytes)
+//
+// Administrative State
+// Administrative state: This attribute locks (1) and unlocks (0) the functions performed by this
+// ME. Administrative state is further described in clause A.1.6. (R,-W) (mandatory) (1-byte)
+//
+// Operational State
+// Operational state: This attribute indicates whether the circuit pack is capable of performing
+// its function. Valid values are enabled (0), disabled (1) and unknown (2). Pending completion of
+// initialization and self-test on an installed circuit pack, the ONU sets this attribute to 2. (R)
+// (optional) (1-byte)
+//
+// Bridged Or Ip Ind
+// (R,-W) (optional, only applicable for circuit packs with Ethernet interfaces) (1-byte)
+//
+// Equipment Id
+// Equipment ID: This attribute may be used to identify the vendor's specific type of circuit pack.
+// In some environments, this attribute may include the CLEI code. Upon ME instantiation, the ONU
+// sets this attribute to all spaces or to the equipment ID of the circuit pack that is physically
+// present. (R) (optional) (20-bytes)
+//
+// Card Configuration
+// Upon autonomous instantiation, this attribute is set to 0. (R,-W, setbycreate if applicable)
+// (mandatory for configurable circuit packs) (1-byte)
+//
+// Total T_Cont Buffer Number
+// Total T-CONT buffer number: This attribute reports the total number of T-CONT buffers associated
+// with the circuit pack. Upon ME instantiation, the ONU sets this attribute to 0 or to the value
+// supported by the physical circuit pack. (R) (mandatory for circuit packs that provide a traffic
+// scheduler function) (1-byte)
+//
+// Total Priority Queue Number
+// Total priority queue number: This value reports the total number of priority queues associated
+// with the circuit pack. Upon ME instantiation, the ONU sets the attribute to 0 or to the value
+// supported by the physical circuit pack. (R) (mandatory for circuit packs that provide a traffic
+// scheduler function) (1-byte)
+//
+// Total Traffic Scheduler Number
+// Total traffic scheduler number: This value reports the total number of traffic schedulers
+// associated with the circuit pack. The ONU supports null function, strict priority scheduling and
+// WRR from the priority control, and guarantee of minimum rate control points of view. If the
+// circuit pack has no traffic scheduler, this attribute should be absent or have the value 0. Upon
+// ME instantiation, the ONU sets the attribute to 0 or to the value supported by the physical
+// circuit pack. (R) (mandatory for circuit packs that provide a traffic scheduler function)
+// (1-byte)
+//
+// Power Shed Override
+// Power shed override: This attribute allows ports to be excluded from the power shed control
+// defined in clause 9.1.7. It is a bit mask that takes port 1 as the MSB; a bit value of 1 marks
+// the corresponding port to override the power shed timer. For hardware that cannot shed power per
+// port, this attribute is a slot override rather than a port override, with any non-zero port
+// value causing the entire circuit pack to override power shedding. (R,-W) (optional) (4-bytes)
+//
+type CircuitPack struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ circuitpackBME = &ManagedEntityDefinition{
+ Name: "CircuitPack",
+ ClassID: 6,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfffc,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("Type", EnumerationAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 1),
+ 2: ByteField("NumberOfPorts", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read), false, true, false, 2),
+ 3: MultiByteField("SerialNumber", OctetsAttributeType, 0x2000, 8, toOctets("ICAgICAgICA="), mapset.NewSetWith(Read), false, false, false, 3),
+ 4: MultiByteField("Version", OctetsAttributeType, 0x1000, 14, toOctets("ICAgICAgICAgICAgICA="), mapset.NewSetWith(Read), false, false, false, 4),
+ 5: MultiByteField("VendorId", StringAttributeType, 0x0800, 4, toOctets("ICAgIA=="), mapset.NewSetWith(Read), false, true, false, 5),
+ 6: ByteField("AdministrativeState", EnumerationAttributeType, 0x0400, 0, mapset.NewSetWith(Read, Write), false, false, false, 6),
+ 7: ByteField("OperationalState", EnumerationAttributeType, 0x0200, 2, mapset.NewSetWith(Read), true, true, false, 7),
+ 8: ByteField("BridgedOrIpInd", EnumerationAttributeType, 0x0100, 0, mapset.NewSetWith(Read, Write), false, false, false, 8),
+ 9: MultiByteField("EquipmentId", StringAttributeType, 0x0080, 20, toOctets("ICAgICAgICAgICAgICAgICAgICA="), mapset.NewSetWith(Read), false, true, false, 9),
+ 10: ByteField("CardConfiguration", EnumerationAttributeType, 0x0040, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 10),
+ 11: ByteField("TotalTContBufferNumber", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, false, false, 11),
+ 12: ByteField("TotalPriorityQueueNumber", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, false, false, 12),
+ 13: ByteField("TotalTrafficSchedulerNumber", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, false, false, 13),
+ 14: Uint32Field("PowerShedOverride", BitFieldAttributeType, 0x0004, 0, mapset.NewSetWith(Read, Write), false, true, false, 14),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewCircuitPack (class ID 6) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewCircuitPack(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*circuitpackBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/classaccess.go b/vendor/github.com/opencord/omci-lib-go/generated/classaccess.go
new file mode 100644
index 0000000..dbfeaf7
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/classaccess.go
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+// ClassAccess specifies whether the ONU, OLT, or both are responsible for creating
+// this Managed Entity
+type ClassAccess int
+
+const (
+ UnknownAccess = iota
+ CreatedByOnu
+ CreatedByOlt
+ CreatedByBoth
+)
+
+func (ca ClassAccess) String() string {
+ return [...]string{"Unknown", "Created by ONU", "Created by OLT", "Created by both OLT & ONU"}[ca]
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/classidmap.go b/vendor/github.com/opencord/omci-lib-go/generated/classidmap.go
new file mode 100644
index 0000000..d2c9fb4
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/classidmap.go
@@ -0,0 +1,265 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "fmt"
+
+// ManagedEntityInfo provides ManagedEntity information
+type ManagedEntityInfo struct {
+ New func(params ...ParamData) (*ManagedEntity, error)
+}
+
+// ParamData can be passed to the 'New' function to dictate how the returned
+// Managed Entity is created. You should supply either zero or one ParamData
+// structure to 'New'.
+//
+// If No ParamData is passed, the returned Managed Entity can only be used for
+// providing validation of other structures. This is commonly done in a packet
+// encoder/decoder to assist in that process.
+//
+// If One ParamData is passed, the returned Managed Entity will be initialized
+// with the given values/attributes and then validated. This is commonly done
+// when you wish to create an ME for transmission, storage or removal from a
+// persistent database, or some other similar purpose.
+//
+type ParamData struct {
+ EntityID uint16
+ Attributes AttributeValueMap
+}
+
+// CreateME wraps a function that makes it a creator of a Managed Entity
+type CreateME func(params ...ParamData) (*ManagedEntity, OmciErrors)
+
+var classToManagedEntityMap map[ClassID]CreateME
+
+func init() {
+ // Create mapping of 16-bit managed entity class IDs to ME-type
+ classToManagedEntityMap = make(map[ClassID]CreateME, 176)
+
+ classToManagedEntityMap[2] = NewOnuData
+ classToManagedEntityMap[5] = NewCardholder
+ classToManagedEntityMap[6] = NewCircuitPack
+ classToManagedEntityMap[7] = NewSoftwareImage
+ classToManagedEntityMap[11] = NewPhysicalPathTerminationPointEthernetUni
+ classToManagedEntityMap[12] = NewPhysicalPathTerminationPointCesUni
+ classToManagedEntityMap[14] = NewInterworkingVccTerminationPoint
+ classToManagedEntityMap[16] = NewAal5Profile
+ classToManagedEntityMap[18] = NewAal5PerformanceMonitoringHistoryData
+ classToManagedEntityMap[21] = NewCesServiceProfile
+ classToManagedEntityMap[24] = NewEthernetPerformanceMonitoringHistoryData
+ classToManagedEntityMap[45] = NewMacBridgeServiceProfile
+ classToManagedEntityMap[46] = NewMacBridgeConfigurationData
+ classToManagedEntityMap[47] = NewMacBridgePortConfigurationData
+ classToManagedEntityMap[48] = NewMacBridgePortDesignationData
+ classToManagedEntityMap[49] = NewMacBridgePortFilterTableData
+ classToManagedEntityMap[50] = NewMacBridgePortBridgeTableData
+ classToManagedEntityMap[51] = NewMacBridgePerformanceMonitoringHistoryData
+ classToManagedEntityMap[52] = NewMacBridgePortPerformanceMonitoringHistoryData
+ classToManagedEntityMap[53] = NewPhysicalPathTerminationPointPotsUni
+ classToManagedEntityMap[58] = NewVoiceServiceProfile
+ classToManagedEntityMap[62] = NewVpPerformanceMonitoringHistoryData
+ classToManagedEntityMap[78] = NewVlanTaggingOperationConfigurationData
+ classToManagedEntityMap[79] = NewMacBridgePortFilterPreAssignTable
+ classToManagedEntityMap[82] = NewPhysicalPathTerminationPointVideoUni
+ classToManagedEntityMap[83] = NewPhysicalPathTerminationPointLctUni
+ classToManagedEntityMap[84] = NewVlanTaggingFilterData
+ classToManagedEntityMap[89] = NewEthernetPerformanceMonitoringHistoryData2
+ classToManagedEntityMap[90] = NewPhysicalPathTerminationPointVideoAni
+ classToManagedEntityMap[98] = NewPhysicalPathTerminationPointXdslUniPart1
+ classToManagedEntityMap[99] = NewPhysicalPathTerminationPointXdslUniPart2
+ classToManagedEntityMap[100] = NewXdslLineInventoryAndStatusDataPart1
+ classToManagedEntityMap[101] = NewXdslLineInventoryAndStatusDataPart2
+ classToManagedEntityMap[102] = NewXdslChannelDownstreamStatusData
+ classToManagedEntityMap[103] = NewXdslChannelUpstreamStatusData
+ classToManagedEntityMap[105] = NewXdslLineConfigurationProfilePart2
+ classToManagedEntityMap[106] = NewXdslLineConfigurationProfilePart3
+ classToManagedEntityMap[107] = NewXdslChannelConfigurationProfile
+ classToManagedEntityMap[108] = NewXdslSubcarrierMaskingDownstreamProfile
+ classToManagedEntityMap[109] = NewXdslSubcarrierMaskingUpstreamProfile
+ classToManagedEntityMap[110] = NewXdslPsdMaskProfile
+ classToManagedEntityMap[111] = NewXdslDownstreamRfiBandsProfile
+ classToManagedEntityMap[112] = NewXdslXtuCPerformanceMonitoringHistoryData
+ classToManagedEntityMap[113] = NewXdslXtuRPerformanceMonitoringHistoryData
+ classToManagedEntityMap[114] = NewXdslXtuCChannelPerformanceMonitoringHistoryData
+ classToManagedEntityMap[115] = NewXdslXtuRChannelPerformanceMonitoringHistoryData
+ classToManagedEntityMap[116] = NewTcAdaptorPerformanceMonitoringHistoryDataXdsl
+ classToManagedEntityMap[130] = NewIeee8021PMapperServiceProfile
+ classToManagedEntityMap[131] = NewOltG
+ classToManagedEntityMap[133] = NewOnuPowerShedding
+ classToManagedEntityMap[134] = NewIpHostConfigData
+ classToManagedEntityMap[135] = NewIpHostPerformanceMonitoringHistoryData
+ classToManagedEntityMap[136] = NewTcpUdpConfigData
+ classToManagedEntityMap[137] = NewNetworkAddress
+ classToManagedEntityMap[138] = NewVoipConfigData
+ classToManagedEntityMap[139] = NewVoipVoiceCtp
+ classToManagedEntityMap[140] = NewCallControlPerformanceMonitoringHistoryData
+ classToManagedEntityMap[141] = NewVoipLineStatus
+ classToManagedEntityMap[142] = NewVoipMediaProfile
+ classToManagedEntityMap[143] = NewRtpProfileData
+ classToManagedEntityMap[144] = NewRtpPerformanceMonitoringHistoryData
+ classToManagedEntityMap[145] = NewNetworkDialPlanTable
+ classToManagedEntityMap[146] = NewVoipApplicationServiceProfile
+ classToManagedEntityMap[147] = NewVoipFeatureAccessCodes
+ classToManagedEntityMap[148] = NewAuthenticationSecurityMethod
+ classToManagedEntityMap[150] = NewSipAgentConfigData
+ classToManagedEntityMap[151] = NewSipAgentPerformanceMonitoringHistoryData
+ classToManagedEntityMap[152] = NewSipCallInitiationPerformanceMonitoringHistoryData
+ classToManagedEntityMap[153] = NewSipUserData
+ classToManagedEntityMap[155] = NewMgcConfigData
+ classToManagedEntityMap[156] = NewMgcPerformanceMonitoringHistoryData
+ classToManagedEntityMap[160] = NewEquipmentExtensionPackage
+ classToManagedEntityMap[162] = NewPhysicalPathTerminationPointMocaUni
+ classToManagedEntityMap[163] = NewMocaEthernetPerformanceMonitoringHistoryData
+ classToManagedEntityMap[168] = NewVdsl2LineInventoryAndStatusDataPart1
+ classToManagedEntityMap[169] = NewVdsl2LineInventoryAndStatusDataPart2
+ classToManagedEntityMap[170] = NewVdsl2LineInventoryAndStatusDataPart3
+ classToManagedEntityMap[171] = NewExtendedVlanTaggingOperationConfigurationData
+ classToManagedEntityMap[256] = NewOnuG
+ classToManagedEntityMap[257] = NewOnu2G
+ classToManagedEntityMap[262] = NewTCont
+ classToManagedEntityMap[263] = NewAniG
+ classToManagedEntityMap[264] = NewUniG
+ classToManagedEntityMap[266] = NewGemInterworkingTerminationPoint
+ classToManagedEntityMap[268] = NewGemPortNetworkCtp
+ classToManagedEntityMap[269] = NewVpNetworkCtp
+ classToManagedEntityMap[272] = NewGalEthernetProfile
+ classToManagedEntityMap[273] = NewThresholdData1
+ classToManagedEntityMap[274] = NewThresholdData2
+ classToManagedEntityMap[276] = NewGalEthernetPerformanceMonitoringHistoryData
+ classToManagedEntityMap[277] = NewPriorityQueue
+ classToManagedEntityMap[278] = NewTrafficScheduler
+ classToManagedEntityMap[280] = NewTrafficDescriptor
+ classToManagedEntityMap[281] = NewMulticastGemInterworkingTerminationPoint
+ classToManagedEntityMap[282] = NewPseudowireTerminationPoint
+ classToManagedEntityMap[283] = NewRtpPseudowireParameters
+ classToManagedEntityMap[284] = NewPseudowireMaintenanceProfile
+ classToManagedEntityMap[285] = NewPseudowirePerformanceMonitoringHistoryData
+ classToManagedEntityMap[286] = NewEthernetFlowTerminationPoint
+ classToManagedEntityMap[287] = NewOmci
+ classToManagedEntityMap[288] = NewManagedEntityMe
+ classToManagedEntityMap[289] = NewAttributeMe
+ classToManagedEntityMap[290] = NewDot1XPortExtensionPackage
+ classToManagedEntityMap[291] = NewDot1XConfigurationProfile
+ classToManagedEntityMap[292] = NewDot1XPerformanceMonitoringHistoryData
+ classToManagedEntityMap[293] = NewRadiusPerformanceMonitoringHistoryData
+ classToManagedEntityMap[296] = NewEthernetPerformanceMonitoringHistoryData3
+ classToManagedEntityMap[298] = NewDot1RateLimiter
+ classToManagedEntityMap[299] = NewDot1AgMaintenanceDomain
+ classToManagedEntityMap[300] = NewDot1AgMaintenanceAssociation
+ classToManagedEntityMap[301] = NewDot1AgDefaultMdLevel
+ classToManagedEntityMap[302] = NewDot1AgMep
+ classToManagedEntityMap[305] = NewDot1AgCfmStack
+ classToManagedEntityMap[306] = NewDot1AgChassisManagementInfo
+ classToManagedEntityMap[307] = NewOctetString
+ classToManagedEntityMap[310] = NewMulticastSubscriberConfigInfo
+ classToManagedEntityMap[311] = NewMulticastSubscriberMonitor
+ classToManagedEntityMap[313] = NewReAniG
+ classToManagedEntityMap[314] = NewPhysicalPathTerminationPointReUni
+ classToManagedEntityMap[315] = NewReUpstreamAmplifier
+ classToManagedEntityMap[316] = NewReDownstreamAmplifier
+ classToManagedEntityMap[321] = NewEthernetFramePerformanceMonitoringHistoryDataDownstream
+ classToManagedEntityMap[322] = NewEthernetFramePerformanceMonitoringHistoryDataUpstream
+ classToManagedEntityMap[323] = NewVdsl2LineConfigurationExtensions2
+ classToManagedEntityMap[324] = NewXdslImpulseNoiseMonitorPerformanceMonitoringHistoryData
+ classToManagedEntityMap[325] = NewXdslLineInventoryAndStatusDataPart5
+ classToManagedEntityMap[328] = NewReCommonAmplifierParameters
+ classToManagedEntityMap[329] = NewVirtualEthernetInterfacePoint
+ classToManagedEntityMap[332] = NewEnhancedSecurityControl
+ classToManagedEntityMap[333] = NewMplsPseudowireTerminationPoint
+ classToManagedEntityMap[334] = NewEthernetFrameExtendedPm
+ classToManagedEntityMap[335] = NewSnmpConfigurationData
+ classToManagedEntityMap[336] = NewOnuDynamicPowerManagementControl
+ classToManagedEntityMap[337] = NewPwAtmConfigurationData
+ classToManagedEntityMap[338] = NewPwAtmPerformanceMonitoringHistoryData
+ classToManagedEntityMap[339] = NewPwEthernetConfigurationData
+ classToManagedEntityMap[340] = NewBbfTr069ManagementServer
+ classToManagedEntityMap[341] = NewGemPortNetworkCtpPerformanceMonitoringHistoryData
+ classToManagedEntityMap[342] = NewTcpUdpPerformanceMonitoringHistoryData
+ classToManagedEntityMap[343] = NewEnergyConsumptionPerformanceMonitoringHistoryData
+ classToManagedEntityMap[344] = NewXgPonTcPerformanceMonitoringHistoryData
+ classToManagedEntityMap[345] = NewXgPonDownstreamManagementPerformanceMonitoringHistoryData
+ classToManagedEntityMap[346] = NewXgPonUpstreamManagementPerformanceMonitoringHistoryData
+ classToManagedEntityMap[348] = NewMacBridgePortIcmpv6ProcessPreAssignTable
+ classToManagedEntityMap[400] = NewEthernetPseudowireParameters
+ classToManagedEntityMap[408] = NewXdslXtuCPerformanceMonitoringHistoryDataPart2
+ classToManagedEntityMap[410] = NewVdsl2LineConfigurationExtensions3
+ classToManagedEntityMap[412] = NewXdslChannelConfigurationProfilePart2
+ classToManagedEntityMap[413] = NewXtuDataGatheringConfiguration
+ classToManagedEntityMap[414] = NewXdslLineInventoryAndStatusDataPart8
+ classToManagedEntityMap[419] = NewEfmBondingGroup
+ classToManagedEntityMap[420] = NewEfmBondingLink
+ classToManagedEntityMap[421] = NewEfmBondingGroupPerformanceMonitoringHistoryData
+ classToManagedEntityMap[422] = NewEfmBondingGroupPerformanceMonitoringHistoryDataPart2
+ classToManagedEntityMap[423] = NewEfmBondingLinkPerformanceMonitoringHistoryData
+ classToManagedEntityMap[424] = NewEfmBondingPortPerformanceMonitoringHistoryData
+ classToManagedEntityMap[425] = NewEfmBondingPortPerformanceMonitoringHistoryDataPart2
+ classToManagedEntityMap[426] = NewEthernetFrameExtendedPm64Bit
+ classToManagedEntityMap[432] = NewFastChannelConfigurationProfile
+ classToManagedEntityMap[433] = NewFastDataPathConfigurationProfile
+ classToManagedEntityMap[434] = NewFastVectoringLineConfigurationExtensions
+ classToManagedEntityMap[436] = NewFastLineInventoryAndStatusDataPart2
+ classToManagedEntityMap[437] = NewFastXtuCPerformanceMonitoringHistoryData
+ classToManagedEntityMap[438] = NewFastXtuRPerformanceMonitoringHistoryData
+ classToManagedEntityMap[443] = NewTwdmChannelManagedEntity
+ classToManagedEntityMap[444] = NewTwdmChannelPhyLodsPerformanceMonitoringHistoryData
+ classToManagedEntityMap[445] = NewTwdmChannelXgemPerformanceMonitoringHistoryData
+ classToManagedEntityMap[446] = NewTwdmChannelPloamPerformanceMonitoringHistoryDataPart1
+ classToManagedEntityMap[447] = NewTwdmChannelPloamPerformanceMonitoringHistoryDataPart2
+ classToManagedEntityMap[448] = NewTwdmChannelPloamPerformanceMonitoringHistoryDataPart3
+ classToManagedEntityMap[449] = NewTwdmChannelTuningPerformanceMonitoringHistoryDataPart1
+ classToManagedEntityMap[450] = NewTwdmChannelTuningPerformanceMonitoringHistoryDataPart2
+ classToManagedEntityMap[451] = NewTwdmChannelTuningPerformanceMonitoringHistoryDataPart3
+ classToManagedEntityMap[452] = NewTwdmChannelOmciPerformanceMonitoringHistoryData
+ classToManagedEntityMap[453] = NewEnhancedFecPerformanceMonitoringHistoryData
+ classToManagedEntityMap[454] = NewEnhancedTcPerformanceMonitoringHistoryData
+}
+
+// LoadManagedEntityDefinition returns a function to create a Managed Entity for a specific
+// Managed Entity class ID
+func LoadManagedEntityDefinition(classID ClassID, params ...ParamData) (*ManagedEntity, OmciErrors) {
+ newFunc, ok := classToManagedEntityMap[classID]
+ if ok {
+ return newFunc(params...)
+ }
+ return nil, NewUnknownEntityError(fmt.Sprintf("managed entity %d (%#x) definition not found",
+ uint16(classID), uint16(classID)))
+}
+
+// GetSupportedClassIDs returns an array of Managed Entity Class IDs supported
+func GetSupportedClassIDs() []ClassID {
+ supported := make([]ClassID, 0, len(classToManagedEntityMap))
+ for k := range classToManagedEntityMap {
+ supported = append(supported, k)
+ }
+ return supported
+}
+
+// GetAttributesDefinitions returns the attribute definition map for a specific class
+func GetAttributesDefinitions(classID ClassID) (AttributeDefinitionMap, OmciErrors) {
+ medef, err := LoadManagedEntityDefinition(classID)
+ if err.StatusCode() != Success {
+ return nil, err
+ }
+ return medef.GetAttributeDefinitions(), err
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/classsupport.go b/vendor/github.com/opencord/omci-lib-go/generated/classsupport.go
new file mode 100644
index 0000000..5edba61
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/classsupport.go
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+
+package generated
+
+// ClassSupport specifies the support for this Managed Entity by the ONU
+type ClassSupport int
+
+const (
+ UnknownSupport = iota
+ Supported // Supported as defined by this object
+ Unsupported // OMCI returns error code if accessed
+ PartiallySupported // some aspects of ME supported
+ Ignored // OMCI supported, but underlying function is now
+)
+
+func (cs ClassSupport) String() string {
+ return [...]string{"Unknown", "Supported", "Unsupported", "Partially Supported", "Ignored"}[cs]
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/dot1agcfmstack.go b/vendor/github.com/opencord/omci-lib-go/generated/dot1agcfmstack.go
new file mode 100644
index 0000000..9372126
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/dot1agcfmstack.go
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// Dot1AgCfmStackClassID is the 16-bit ID for the OMCI
+// Managed entity Dot1ag CFM stack
+const Dot1AgCfmStackClassID ClassID = ClassID(305)
+
+var dot1agcfmstackBME *ManagedEntityDefinition
+
+// Dot1AgCfmStack (class ID #305)
+// This ME reports the maintenance status of a bridge port at any given time. An ONU that supports
+// [IEEE 802.1ag] functionality automatically creates an instance of the dot1ag CFM stack ME for
+// each MAC bridge or IEEE 802.1p mapper, depending on its provisioning model.
+//
+// The dot1ag CFM stack also lists any VLANs and bridge ports against which configuration errors
+// are currently identified. The ONU should reject operations that create configuration errors.
+// However, these errors can arise because of operations on other MEs that are not necessarily
+// possible to detect during CFM configuration.
+//
+// Relationships
+// An ONU that supports [IEEE 802.1ag] creates one instance of this ME for each MAC bridge or IEEE
+// 802.1p mapper, depending on its provisioning model. It should not create an instance for an
+// IEEE-802.1p mapper that is associated with a MAC bridge.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies an instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the MAC bridge service profile ME
+// or an IEEE 802.1p mapper ME. It is expected that an ONU will implement CFM on bridges or on
+// IEEE-802.1p mappers, but not both. For precision, the reference is disambiguated by the value of
+// the layer 2 type pointer attribute. (R) (mandatory) (2-bytes)
+//
+// Layer 2 Type
+// Layer 2 type: This attribute specifies whether the dot1ag CFM stack is associated with a MAC
+// bridge service profile (value 0) or an IEEE 802.1p mapper (value 1). (R) (mandatory) (1-byte)
+//
+// Mp Status Table
+// (R) (mandatory) (18N bytes)
+//
+// Configuration Error List Table
+// (R) (mandatory) (5N bytes)
+//
+type Dot1AgCfmStack struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ dot1agcfmstackBME = &ManagedEntityDefinition{
+ Name: "Dot1AgCfmStack",
+ ClassID: 305,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ GetNext,
+ ),
+ AllowedAttributeMask: 0xe000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("Layer2Type", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: TableField("MpStatusTable", TableAttributeType, 0x4000, TableInfo{nil, 18}, mapset.NewSetWith(Read), false, false, false, 2),
+ 3: TableField("ConfigurationErrorListTable", TableAttributeType, 0x2000, TableInfo{nil, 5}, mapset.NewSetWith(Read), true, false, false, 3),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewDot1AgCfmStack (class ID 305) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewDot1AgCfmStack(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*dot1agcfmstackBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/dot1agchassis-managementinfo.go b/vendor/github.com/opencord/omci-lib-go/generated/dot1agchassis-managementinfo.go
new file mode 100644
index 0000000..166c9d5
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/dot1agchassis-managementinfo.go
@@ -0,0 +1,128 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// Dot1AgChassisManagementInfoClassID is the 16-bit ID for the OMCI
+// Managed entity Dot1ag chassis-management info
+const Dot1AgChassisManagementInfoClassID ClassID = ClassID(306)
+
+var dot1agchassismanagementinfoBME *ManagedEntityDefinition
+
+// Dot1AgChassisManagementInfo (class ID #306)
+// This ME represents the system-level chassis ID or management address for [IEEE-802.1ag] CFM
+// messages, and potentially for other IEEE 802-based functions. Although [IEEE-802.1AB] allows for
+// several management addresses (synonyms in different formats or with granularity to the component
+// level), [IEEE-802.1ag] does not provide for more than one. Nor is it expected that an ONU would
+// require more than one format. Accordingly, this ME provides for only one.
+//
+// According to sender ID permission attributes in several dot1ag MEs, transmitted IEEE-802.1ag CFM
+// messages may include either or both of the chassis ID or management address
+// fields.[IEEE-802.1ag] requires that CCMs do not exceed 128-bytes, of which 74 are separately
+// allocated to other purposes; the sender ID TLV, if present, must accommodate this requirement.
+// The chassis info and management info must fit, with a minimum of 4 additional overhead bytes,
+// into the remaining 54-bytes. This limit is exploited in defining the maximum size of the ME's
+// attributes.
+//
+// Relationships
+// If an ONU supports [IEEE 802.1ag] functionality, it automatically creates an instance of this
+// ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies this ME. There is at most one instance,
+// whose value is 0. (R) (mandatory) (2-bytes)
+//
+// Chassis Id Length
+// Chassis ID length: The length of the chassis ID attribute (not including the chassis ID subtype
+// attribute), default value 0. (R,-W) (mandatory) (1-byte)
+//
+// Chassis Id Subtype
+// (R,-W) (mandatory) (1-byte)
+//
+// Chassis Id Part 1 Chassis Id Part 2
+// Chassis ID part 1, Chassis ID part 2: These two attributes may be regarded as an octet string of
+// up to 50-bytes whose length is given by the chassis ID length attribute and whose value is the
+// left-justified chassis ID. (R,-W) (mandatory) (25-bytes-*-2 attributes)
+//
+// Management Address Domain Length
+// Management address domain length: The length of the management address domain attribute, default
+// value 0. If this attribute has the value 0, all of the other management address attributes are
+// undefined. (R,-W) (mandatory) (1-byte)
+//
+// Management Address Domain 1, Management Address Domain 2
+// Management address domain 1, Management address domain 2: These two attributes may be regarded
+// as an octet string of up to 50-bytes whose length is given by the management address domain
+// length attribute and whose value is the left-justified management address domain. The attribute
+// is coded as an object identifier (OID) as per [ITUT X.690], referring to a TDomain as defined in
+// [IETF RFC 2579]. Typical domain values include snmpUDPDomain (from SNMPv2-TM [IETF RFC 3417])
+// and snmpIeee802Domain (from SNMP-IEEE 802-TM-MIB [IETF RFC 4789]). (R,-W) (mandatory) (25-bytes
+// * 2 attributes)
+//
+// Management Address Length
+// Management address length: The length of the management address attribute, default value 0.
+// (R,-W) (mandatory) (1-byte)
+//
+// Management Address 1 Management Address 2
+// Management address 1, Management address 2: These two attributes may be regarded as an octet
+// string of up to 50-bytes whose length is given by the management address length attribute and
+// whose value is the left-justified management address. (R,-W) (mandatory) (25-bytes * 2
+// attributes)
+//
+type Dot1AgChassisManagementInfo struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ dot1agchassismanagementinfoBME = &ManagedEntityDefinition{
+ Name: "Dot1AgChassisManagementInfo",
+ ClassID: 306,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfe00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("ChassisIdLength", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: ByteField("ChassisIdSubtype", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, Write), false, false, false, 2),
+ 3: MultiByteField("ChassisIdPart1ChassisIdPart2", OctetsAttributeType, 0x2000, 25, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read, Write), false, false, false, 3),
+ 4: ByteField("ManagementAddressDomainLength", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, false, false, 4),
+ 5: MultiByteField("ManagementAddressDomain1,ManagementAddressDomain2", OctetsAttributeType, 0x0800, 25, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read, Write), false, false, false, 5),
+ 6: ByteField("ManagementAddressLength", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, Write), false, false, false, 6),
+ 7: MultiByteField("ManagementAddress1ManagementAddress2", OctetsAttributeType, 0x0200, 25, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read, Write), false, false, false, 7),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewDot1AgChassisManagementInfo (class ID 306) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewDot1AgChassisManagementInfo(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*dot1agchassismanagementinfoBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/dot1agdefaultmdlevel.go b/vendor/github.com/opencord/omci-lib-go/generated/dot1agdefaultmdlevel.go
new file mode 100644
index 0000000..9e3f800
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/dot1agdefaultmdlevel.go
@@ -0,0 +1,115 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// Dot1AgDefaultMdLevelClassID is the 16-bit ID for the OMCI
+// Managed entity Dot1ag default MD level
+const Dot1AgDefaultMdLevelClassID ClassID = ClassID(301)
+
+var dot1agdefaultmdlevelBME *ManagedEntityDefinition
+
+// Dot1AgDefaultMdLevel (class ID #301)
+// The collection of the functionality called a maintenance half-function (MHF) is not explicitly
+// modelled as a ME by either [IEEE 802.1ag] or the OMCI. The ONU automatically creates MHFs
+// according to parameters specified in a dot1ag MD or a dot1ag MA ME; the dot1ag default MD level
+// ME catches the corner cases not covered by other MEs, specifically VLANs not included by any
+// defined MA.
+//
+// The dot1ag default MD level comprises a configurable table, each entry of which specifies
+// default MHF functionality for some set of VLANs. Once a set of VLANs is defined, operations to
+// different table entries or to dot1ag MAs that conflict with the set membership should be denied.
+// In addition, catch-all attributes are defined to specify MHF functionality when there is no
+// match to either a table entry or an MA.
+//
+// Relationships
+// An ONU that supports [IEEE 802.1ag] automatically creates one instance of this ME for each MAC
+// bridge or IEEE 802.1p mapper, depending on the ONU's provisioning model. It should not create an
+// instance for an IEEE 802.1p mapper that is associated with a MAC bridge.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies an instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the MAC bridge service profile ME
+// or an IEEE 802.1p mapper ME. It is expected that an ONU will implement CFM on bridges or on
+// IEEE-802.1p mappers, but not both, depending on its provisioning model. For precision, the
+// reference is disambiguated by the value of the layer 2 type pointer attribute. (R) (mandatory)
+// (2-bytes)
+//
+// Layer 2 Type
+// Layer 2 type: This attribute specifies whether the dot1ag default MD level ME is associated with
+// a MAC bridge service profile (value 0) or an IEEE 802.1p mapper (value-1). (R) (mandatory)
+// (1-byte)
+//
+// Catchall Level
+// Catchall level: This attribute ranges from 0..7 and specifies the MD level of MHFs created when
+// no specific match is found. (R,-W) (mandatory) (1-byte)
+//
+// Catchall Mhf Creation
+// (R,-W) (mandatory) (1-byte)
+//
+// Catchall Sender Id Permission
+// Catchall sender ID permission: This attribute determines the contents of the sender ID TLV
+// included in CFM messages transmitted by MPs when no more specific match is found. This attribute
+// is identical to that defined in the description of the dot1ag MD ME (i.e., excluding code point
+// 5, defer). (R,-W) (mandatory) (1-byte)
+//
+// Default Md Level Table
+// (R,-W) (mandatory) (29-bytes * N entries)
+//
+type Dot1AgDefaultMdLevel struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ dot1agdefaultmdlevelBME = &ManagedEntityDefinition{
+ Name: "Dot1AgDefaultMdLevel",
+ ClassID: 301,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ GetNext,
+ Set,
+ ),
+ AllowedAttributeMask: 0xf800,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("Layer2Type", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: ByteField("CatchallLevel", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, Write), false, false, false, 2),
+ 3: ByteField("CatchallMhfCreation", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), false, false, false, 3),
+ 4: ByteField("CatchallSenderIdPermission", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, false, false, 4),
+ 5: TableField("DefaultMdLevelTable", TableAttributeType, 0x0800, TableInfo{nil, 29}, mapset.NewSetWith(Read, Write), false, false, false, 5),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewDot1AgDefaultMdLevel (class ID 301) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewDot1AgDefaultMdLevel(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*dot1agdefaultmdlevelBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/dot1agmaintenanceassociation.go b/vendor/github.com/opencord/omci-lib-go/generated/dot1agmaintenanceassociation.go
new file mode 100644
index 0000000..299ba5b
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/dot1agmaintenanceassociation.go
@@ -0,0 +1,128 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// Dot1AgMaintenanceAssociationClassID is the 16-bit ID for the OMCI
+// Managed entity Dot1ag maintenance association
+const Dot1AgMaintenanceAssociationClassID ClassID = ClassID(300)
+
+var dot1agmaintenanceassociationBME *ManagedEntityDefinition
+
+// Dot1AgMaintenanceAssociation (class ID #300)
+// This ME models an [IEEE 802.1ag] service defined on a bridge port. An MA is a set of endpoints
+// on opposite sides of a network, all existing at a defined maintenance level. One of the
+// endpoints resides on the local ONU; the others are understood to be configured in a consistent
+// way on external equipment. [ITUT Y.1731] refers to the MA as a maintenance entity group (MEG).
+//
+// An MA is created and deleted by the OLT.
+//
+// Relationships
+// Any number of MAs may be associated with a given MD, or may stand on their own without an MD.
+// One or more MAs may be associated with a MAC bridge or an IEEE 802.1p mapper. An MA exists at
+// one of eight possible maintenance levels.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies an instance of this ME. The values 0 and
+// 0xFFFF are reserved. (R, setbycreate) (mandatory) (2-bytes)
+//
+// Md Pointer
+// MD pointer: This pointer specifies the dot1ag maintenance domain with which this MA is
+// associated. A null pointer specifies that the MA is not associated with an MD. (R,-W,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Short Ma Name Format
+// Short MA name format: This attribute specifies one of several possible formats for the short MA
+// name attribute. Value 1, the primary VLAN ID, is recommended to be the default. (R,-W,
+// setbycreate) (mandatory) (1-byte)
+//
+// Short Ma Name 1, Short Ma Name 2
+// Short MA name 1, Short MA name 2: These two attributes may be regarded as an octet string whose
+// value is the left-justified MA name. Because the MA name may or may not be a printable character
+// string, an octet string is the appropriate representation. If the short MA name format specifies
+// a character string, the string is null-terminated; otherwise, its length is determined by the
+// short MA name format. Note that binary comparisons of the short MA name are made in other CFM
+// state machines, so blanks, alphabetic case, etc., are significant. Also, note that the MD name
+// and the MA short name must be packed (with additional bytes) into 48-byte CFM message headers.
+// (R,-W) (mandatory) (25-bytes * 2 attributes)
+//
+// Continuity Check Message Ccm Interval
+// Short intervals should be used judiciously, as they can interfere with the network's ability to
+// handle subscriber traffic. The recommended value is 1-s. (R,-W, setbycreate) (mandatory)
+// (1-byte)
+//
+// Associated Vlans
+// Associated VLANs: This attribute is a list of up to 12 VLAN IDs with which this MA is
+// associated. Once a set of VLANs is defined, the ONU should deny operations to other dot1ag MAs
+// or dot1ag default MD level entries that conflict with the set membership. The all-zeros value
+// indicates that this MA is not associated with any VLANs. Assuming that the attribute is not 0,
+// the first entry is understood to be the primary VLAN. Except forwarded linktrace messages
+// (LTMs), CFM messages emitted by MPs in this MA are tagged with the primary VLAN ID. (R,-W)
+// (mandatory) (2-bytes/entry * 12-entries-=-24-bytes)
+//
+// Mhf Creation
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Sender Id Permission
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+type Dot1AgMaintenanceAssociation struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ dot1agmaintenanceassociationBME = &ManagedEntityDefinition{
+ Name: "Dot1AgMaintenanceAssociation",
+ ClassID: 300,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfe00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("MdPointer", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: ByteField("ShortMaNameFormat", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: MultiByteField("ShortMaName1,ShortMaName2", OctetsAttributeType, 0x2000, 25, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read, Write), false, false, false, 3),
+ 4: ByteField("ContinuityCheckMessageCcmInterval", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ 5: MultiByteField("AssociatedVlans", OctetsAttributeType, 0x0800, 24, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"), mapset.NewSetWith(Read, Write), false, false, false, 5),
+ 6: ByteField("MhfCreation", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 6),
+ 7: ByteField("SenderIdPermission", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 7),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewDot1AgMaintenanceAssociation (class ID 300) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewDot1AgMaintenanceAssociation(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*dot1agmaintenanceassociationBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/dot1agmaintenancedomain.go b/vendor/github.com/opencord/omci-lib-go/generated/dot1agmaintenancedomain.go
new file mode 100644
index 0000000..9799cf8
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/dot1agmaintenancedomain.go
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// Dot1AgMaintenanceDomainClassID is the 16-bit ID for the OMCI
+// Managed entity Dot1ag maintenance domain
+const Dot1AgMaintenanceDomainClassID ClassID = ClassID(299)
+
+var dot1agmaintenancedomainBME *ManagedEntityDefinition
+
+// Dot1AgMaintenanceDomain (class ID #299)
+// In [IEEE 802.1ag], a maintenance domain (MD) is a context within which configuration fault
+// management (CFM) connectivity verification can occur. Individual services (maintenance
+// associations, MAs) exist within an MD. An MD is created and deleted by the OLT. The MD ME is
+// specified by [IEEE 802.1ag] in such a way that the same provisioning can be used for all
+// associated systems in a network; the OMCI definition accordingly avoids ONU-specific information
+// such as pointers.
+//
+// Relationships
+// Several MDs may be associated with a given bridge, at various MD levels, and a given MD may be
+// associated with any number of bridges.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies an instance of this ME. The values 0 and
+// 0xFFFF are reserved. (R, setbycreate) (mandatory) (2-bytes)
+//
+// Md Level
+// MD level: This attribute ranges from 0..7 and specifies the maintenance level of this MD. Higher
+// numbers have wider geographic scope. (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Md Name Format
+// MD name format: This attribute specifies one of several possible formats for the MD name
+// attribute. (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Md Name 1 Md Name 2
+// MD name 1, MD name 2:These two attributes may be regarded as a 50-byte octet string whose value
+// is the left-justified maintenance domain name. The MD name may or may not be a printable
+// character string, so an octet string is the appropriate representation. If the MD name format
+// specifies a DNS-like name or a character string, the string is null-terminated; otherwise, its
+// length is determined by the MD name format. If the MD has no name (MD name format-=-0), this
+// attribute is undefined. Note that binary comparisons of the MD name are made in other CFM state
+// machines, so blanks, alphabetic case, etc., are significant. Also, note that the MD name and the
+// MA name must be packed (with additional bytes) into 48-byte CFM message headers. (R,-W)
+// (mandatory if MD name format is not 1) (25-bytes * 2 attributes)
+//
+// Maintenance Domain Intermediate Point Half Function Mhf Creation
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Sender Id Permission
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+type Dot1AgMaintenanceDomain struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ dot1agmaintenancedomainBME = &ManagedEntityDefinition{
+ Name: "Dot1AgMaintenanceDomain",
+ ClassID: 299,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xf800,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("MdLevel", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: ByteField("MdNameFormat", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: MultiByteField("MdName1MdName2", OctetsAttributeType, 0x2000, 25, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read, Write), false, false, false, 3),
+ 4: ByteField("MaintenanceDomainIntermediatePointHalfFunctionMhfCreation", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ 5: ByteField("SenderIdPermission", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 5),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewDot1AgMaintenanceDomain (class ID 299) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewDot1AgMaintenanceDomain(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*dot1agmaintenancedomainBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/dot1agmep.go b/vendor/github.com/opencord/omci-lib-go/generated/dot1agmep.go
new file mode 100644
index 0000000..b3c6df4
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/dot1agmep.go
@@ -0,0 +1,162 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// Dot1AgMepClassID is the 16-bit ID for the OMCI
+// Managed entity Dot1ag MEP
+const Dot1AgMepClassID ClassID = ClassID(302)
+
+var dot1agmepBME *ManagedEntityDefinition
+
+// Dot1AgMep (class ID #302)
+// This ME models an MEP as defined primarily in [IEEE 802.1ag] and secondarily in [ITUT Y.1731].
+// It is created and deleted by the OLT. An MEP exists at one of eight possible maintenance levels,
+// and resides at the boundary of a MD. It inherits a name, and optionally a set of associated
+// VLANs, from its associated MA.
+//
+// Relationships
+// One or more MEPs may be associated with a MAC bridge port or an IEEE 802.1p mapper in the
+// absence of a MAC bridge. An MEP is also associated with zero or more VLANs and an MA.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Layer 2 Entity Pointer
+// Layer 2 entity pointer: Depending on the value of the layer 2 type attribute, this pointer
+// specifies the MAC bridge port configuration data ME or the IEEE 802.1p mapper service profile ME
+// with which this MEP is associated. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Layer 2 Type
+// Layer 2 type: This attribute specifies whether the MA is associated with a MAC bridge port
+// (value 0) or an IEEE 802.1p mapper (value 1). (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Ma Pointer
+// MA pointer: This pointer specifies the maintenance association with which this MEP is
+// associated. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Mep Id
+// MEP ID: This attribute specifies the MEP's own identity in the MA. For a given MA, the MEP ID
+// must be unique throughout the network defined by the MD. The MEP ID is defined in the range
+// 1..8191. The value 0 indicates that no MEP ID is (yet) configured. (R,-W, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Mep Control
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Primary Vlan
+// Primary VLAN: This attribute is a 12-bit VLAN ID. The value 0 indicates that the MEP inherits
+// its primary VLAN from its parent MA. CFM messages, except forwarded LTMs, are tagged with the
+// primary VLAN ID. If explicitly specified, the value of this attribute must be one of the VLANs
+// associated with the parent MA. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Administrative State
+// Administrative state: This attribute locks (1) and unlocks (0) the functions performed by this
+// ME. Administrative state is further described in clause A.1.6. (R,-W, setbycreate) (mandatory)
+// (1-byte)
+//
+// Ccm And Ltm Priority
+// CCM and LTM priority: Ranging from 0..7, this attribute permits CCM and LTM frames to be
+// explicitly prioritized, which may be needed if flows are separated, e.g., by 802.1p priority.
+// The priority specified in this attribute is also used in linktrace reply (LTR) frames originated
+// by this MEP. The value 0xFF selects the IEEE 802.1ag default, whereby CCM and LTM frames are
+// transmitted with the highest Ethernet priority available. (R,-W, setbycreate) (mandatory)
+// (1-byte)
+//
+// Egress Identifier
+// Egress identifier: This attribute comprises 8-bytes to be included in LTMs. They allow received
+// LTRs to be directed to the correct originator. The attribute includes the originator MAC address
+// and a locally defined identifier. If this field is 0, the ONU uses the MEP's MAC address, with 0
+// as the locally defined identifier. (R,-W, setbycreate) (mandatory) (8-bytes)
+//
+// Peer Mep Ids
+// Peer MEP IDs: This attribute lists the expected peer MEPs for CCMs, 2-bytes per MEP ID. [IEEE
+// 802.1ag] allows for multipoint networks, and therefore a list of peer MEPs. This attribute
+// allows for up to 12 peers for a given MEP, though GPON applications are expected to need only a
+// single peer. Missing or unexpected messages trigger alarm declaration after a soak interval.
+// Unused peer MEP slots should be set to 0. (R,-W) (mandatory) (24-bytes)
+//
+// Eth Ais Control
+// (R,-W, setbycreate) (mandatory if ETH AIS is enabled) (1-byte)
+//
+// Fault Alarm Threshold
+// (R,-W, setbycreate) (optional) (1-byte)
+//
+// Alarm Declaration Soak Time
+// Alarm declaration soak time: This attribute defines the defect soak time that must elapse before
+// the MEP declares an alarm. It is expressed in 10-ms units with a range of 250 to 1000, i.e.,
+// 2.5-s to 10-s. The default is recommended to be 2.5 seconds. (R,-W) (mandatory) (2-bytes)
+//
+// Alarm Clear Soak Time
+// Alarm clear soak time: This attribute defines the defect-free soak time that must elapse before
+// the MEP clears an alarm. It is expressed in intervals of 10-ms with a range of 250 to 1-000,
+// i.e., 2.5-s to 10-s. The default is recommended to be 10-s. (R,-W) (mandatory) (2-bytes)
+//
+type Dot1AgMep struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ dot1agmepBME = &ManagedEntityDefinition{
+ Name: "Dot1AgMep",
+ ClassID: 302,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfffc,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("Layer2EntityPointer", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: ByteField("Layer2Type", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint16Field("MaPointer", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ 4: Uint16Field("MepId", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ 5: ByteField("MepControl", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 5),
+ 6: Uint16Field("PrimaryVlan", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 6),
+ 7: ByteField("AdministrativeState", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 7),
+ 8: ByteField("CcmAndLtmPriority", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 8),
+ 9: Uint64Field("EgressIdentifier", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 9),
+ 10: MultiByteField("PeerMepIds", OctetsAttributeType, 0x0040, 24, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"), mapset.NewSetWith(Read, Write), false, false, false, 10),
+ 11: ByteField("EthAisControl", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 11),
+ 12: ByteField("FaultAlarmThreshold", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 12),
+ 13: Uint16Field("AlarmDeclarationSoakTime", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read, Write), false, false, false, 13),
+ 14: Uint16Field("AlarmClearSoakTime", UnsignedIntegerAttributeType, 0x0004, 0, mapset.NewSetWith(Read, Write), false, false, false, 14),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewDot1AgMep (class ID 302) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewDot1AgMep(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*dot1agmepBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/dot1ratelimiter.go b/vendor/github.com/opencord/omci-lib-go/generated/dot1ratelimiter.go
new file mode 100644
index 0000000..d3d2ed6
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/dot1ratelimiter.go
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// Dot1RateLimiterClassID is the 16-bit ID for the OMCI
+// Managed entity Dot1 rate limiter
+const Dot1RateLimiterClassID ClassID = ClassID(298)
+
+var dot1ratelimiterBME *ManagedEntityDefinition
+
+// Dot1RateLimiter (class ID #298)
+// This ME allows rate limits to be defined for various types of upstream traffic that are
+// processed by IEEE 802.1 bridges or related structures.
+//
+// Relationships
+// An instance of this ME may be linked to an instance of a MAC bridge service profile or an IEEE
+// 802.1p mapper.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Parent Me Pointer
+// Parent ME pointer: This attribute points to an instance of a ME. The type of ME is determined by
+// the TP type attribute. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Tp Type
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Upstream Unicast Flood Rate Pointer
+// Upstream unicast flood rate pointer: This attribute points to an instance of the traffic
+// descriptor that governs the rate of upstream unicast packets whose DA is unknown to the bridge.
+// A null pointer specifies that no administrative limit is to be imposed. (R,-W, setbycreate)
+// (optional) (2-bytes)
+//
+// Upstream Broadcast Rate Pointer
+// Upstream broadcast rate pointer: This attribute points to an instance of the traffic descriptor
+// that governs the rate of upstream broadcast packets. A null pointer specifies that no
+// administrative limit is to be imposed. (R,-W, setbycreate) (optional) (2-bytes)
+//
+// Upstream Multicast Payload Rate Pointer
+// Upstream multicast payload rate pointer: This attribute points to an instance of the traffic
+// descriptor that governs the rate of upstream multicast payload packets. A null pointer specifies
+// that no administrative limit is to be imposed. (R,-W, setbycreate) (optional) (2-bytes)
+//
+type Dot1RateLimiter struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ dot1ratelimiterBME = &ManagedEntityDefinition{
+ Name: "Dot1RateLimiter",
+ ClassID: 298,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xf800,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("ParentMePointer", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: ByteField("TpType", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint16Field("UpstreamUnicastFloodRatePointer", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 3),
+ 4: Uint16Field("UpstreamBroadcastRatePointer", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 4),
+ 5: Uint16Field("UpstreamMulticastPayloadRatePointer", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 5),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewDot1RateLimiter (class ID 298) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewDot1RateLimiter(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*dot1ratelimiterBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/dot1xconfigurationprofile.go b/vendor/github.com/opencord/omci-lib-go/generated/dot1xconfigurationprofile.go
new file mode 100644
index 0000000..1436448
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/dot1xconfigurationprofile.go
@@ -0,0 +1,125 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// Dot1XConfigurationProfileClassID is the 16-bit ID for the OMCI
+// Managed entity Dot1X configuration profile
+const Dot1XConfigurationProfileClassID ClassID = ClassID(291)
+
+var dot1xconfigurationprofileBME *ManagedEntityDefinition
+
+// Dot1XConfigurationProfile (class ID #291)
+// An instance of this ME represents a set of attributes that control an ONU's 802.1X operation
+// with regard to IEEE 802 services. An instance of this ME is created by the ONU if it is capable
+// of supporting [IEEE 802.1X] authentication of CPE.
+//
+// Relationships
+// One instance of this ME governs the ONU's 802.1X CPE authentication behaviour.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute provides a unique number for each instance of this ME. There
+// is at most one instance, number 0. (R) (mandatory) (2-bytes)
+//
+// Circuit Id Prefix
+// Circuit ID prefix: This attribute is a pointer to a large string ME whose content appears as the
+// prefix of the NAS port ID in radius access-request messages. The remainder of the NAS port ID
+// field is local information (for example, slot-port, appended by the ONU itself). The default
+// value of this attribute is the null pointer 0. (R,-W) (mandatory) (2-bytes)
+//
+// Fallback Policy
+// Fallback policy: When set to 1 (deny), this attribute causes IEEE-802.1X conversations to fail
+// when no external authentication server is accessible, such that no Ethernet service is provided.
+// The default value 0 causes IEEE-802.1X conversations to succeed when no external authentication
+// server is accessible. (R,-W) (mandatory) (1-byte)
+//
+// Auth Server 1
+// Auth server 1: This attribute is a pointer to a large string ME that contains the URI of the
+// first choice radius authentication server. The value 0 indicates that no radius authentication
+// server is specified. (R,-W) (mandatory) (2-bytes)
+//
+// Shared Secret Auth1
+// Shared secret auth1: This attribute is the shared secret for the first radius authentication
+// server. It is a null-terminated character string. (R,-W) (mandatory) (25-bytes)
+//
+// Auth Server 2
+// Auth server 2: (R,-W) (optional) (2-bytes)
+//
+// Shared Secret Auth2
+// Shared secret auth2: (R,-W) (optional) (25-bytes)
+//
+// Auth Server 3
+// Auth server 3: (R,-W) (optional) (2-bytes)
+//
+// Shared Secret Auth3
+// Shared secret auth3: (R,-W) (optional) (25-bytes)
+//
+// Olt Proxy Address
+// OLT proxy address: This attribute indicates the IP address of a possible proxy at the OLT for
+// IEEE-802.1X radius messages. The default value 0.0.0.0 indicates that no proxy is required.
+// (R,-W) (optional) (4-bytes)
+//
+// Calling Station Id Format
+// Other values are reserved.
+//
+type Dot1XConfigurationProfile struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ dot1xconfigurationprofileBME = &ManagedEntityDefinition{
+ Name: "Dot1XConfigurationProfile",
+ ClassID: 291,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffc0,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: Uint16Field("CircuitIdPrefix", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: ByteField("FallbackPolicy", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, Write), false, false, false, 2),
+ 3: Uint16Field("AuthServer1", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), false, false, false, 3),
+ 4: MultiByteField("SharedSecretAuth1", OctetsAttributeType, 0x1000, 25, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read, Write), false, false, false, 4),
+ 5: Uint16Field("AuthServer2", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, true, false, 5),
+ 6: MultiByteField("SharedSecretAuth2", OctetsAttributeType, 0x0400, 25, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read, Write), false, true, false, 6),
+ 7: Uint16Field("AuthServer3", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, Write), false, true, false, 7),
+ 8: MultiByteField("SharedSecretAuth3", OctetsAttributeType, 0x0100, 25, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read, Write), false, true, false, 8),
+ 9: Uint32Field("OltProxyAddress", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, Write), false, true, false, 9),
+ 10: Uint16Field("CallingStationIdFormat", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read, Write), false, true, false, 10),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewDot1XConfigurationProfile (class ID 291) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewDot1XConfigurationProfile(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*dot1xconfigurationprofileBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/dot1xperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/dot1xperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..4127089
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/dot1xperformancemonitoringhistorydata.go
@@ -0,0 +1,152 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// Dot1XPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity Dot1X performance monitoring history data
+const Dot1XPerformanceMonitoringHistoryDataClassID ClassID = ClassID(292)
+
+var dot1xperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// Dot1XPerformanceMonitoringHistoryData (class ID #292)
+// This ME collects performance statistics on an ONU's IEEE 802.1X CPE authentication operation.
+// Instances of this ME are created and deleted by the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME may be associated with each UNI that can perform IEEE-802.1X
+// authentication of CPE.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of a PPTP. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 and 2 MEs
+// that contains PM threshold values. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Eapol Frames Received
+// EAPOL frames received: This attribute counts received valid EAPOL frames of any type. (R)
+// (mandatory) (4-bytes)
+//
+// Eapol Frames Transmitted
+// EAPOL frames transmitted: This attribute counts transmitted EAPOL frames of any type. (R)
+// (mandatory) (4-bytes)
+//
+// Eapol Start Frames Received
+// EAPOL start frames received: This attribute counts received EAPOL start frames. (R) (mandatory)
+// (4-bytes)
+//
+// Eapol Logoff Frames Received
+// EAPOL logoff frames received: This attribute counts received EAPOL logoff frames. (R)
+// (mandatory) (4-bytes)
+//
+// Invalid Eapol Frames Received
+// Invalid EAPOL frames received: This attribute counts received EAPOL frames in which the frame
+// type was not recognized. (R) (mandatory) (4-bytes)
+//
+// Eap Resp_Id Frames Received
+// EAP resp/id frames received: This attribute counts received EAP response frames containing an
+// identifier type field. (R) (mandatory) (4-bytes)
+//
+// Eap Response Frames Received
+// EAP response frames received: This attribute counts received EAP response frames, other than
+// resp/id frames. (R) (mandatory) (4-bytes)
+//
+// Eap Initial Request Frames Transmitted
+// EAP initial request frames transmitted: This attribute counts transmitted request frames
+// containing an identifier type field. In [IEEE 802.1X], this is also called ReqId. (R)
+// (mandatory) (4-bytes)
+//
+// Eap Request Frames Transmitted
+// EAP request frames transmitted: This attribute counts transmitted request frames, other than
+// request/id frames. (R) (mandatory) (4-bytes)
+//
+// Eap Length Error Frames Received
+// EAP length error frames received: This attribute counts received EAPOL frames whose packet body
+// length field was invalid. (R) (mandatory) (4-bytes)
+//
+// Eap Success Frames Generated Autonomously
+// EAP success frames generated autonomously: This attribute counts EAPOL success frames generated
+// according to the local fallback policy because no radius server was available. (R) (mandatory)
+// (4-bytes)
+//
+// Eap Failure Frames Generated Autonomously
+// EAP failure frames generated autonomously: This attribute counts EAPOL failure frames generated
+// according to the local fallback policy because no radius server was available. (R) (mandatory)
+// (4-bytes)
+//
+type Dot1XPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ dot1xperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "Dot1XPerformanceMonitoringHistoryData",
+ ClassID: 292,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfffc,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("EapolFramesReceived", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("EapolFramesTransmitted", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("EapolStartFramesReceived", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("EapolLogoffFramesReceived", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("InvalidEapolFramesReceived", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint32Field("EapRespIdFramesReceived", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: Uint32Field("EapResponseFramesReceived", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: Uint32Field("EapInitialRequestFramesTransmitted", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ 11: Uint32Field("EapRequestFramesTransmitted", CounterAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, false, false, 11),
+ 12: Uint32Field("EapLengthErrorFramesReceived", CounterAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, false, false, 12),
+ 13: Uint32Field("EapSuccessFramesGeneratedAutonomously", CounterAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, false, false, 13),
+ 14: Uint32Field("EapFailureFramesGeneratedAutonomously", CounterAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, false, false, 14),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewDot1XPerformanceMonitoringHistoryData (class ID 292) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewDot1XPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*dot1xperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/dot1xportextensionpackage.go b/vendor/github.com/opencord/omci-lib-go/generated/dot1xportextensionpackage.go
new file mode 100644
index 0000000..018d136
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/dot1xportextensionpackage.go
@@ -0,0 +1,148 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// Dot1XPortExtensionPackageClassID is the 16-bit ID for the OMCI
+// Managed entity Dot1X port extension package
+const Dot1XPortExtensionPackageClassID ClassID = ClassID(290)
+
+var dot1xportextensionpackageBME *ManagedEntityDefinition
+
+// Dot1XPortExtensionPackage (class ID #290)
+// An instance of this ME represents a set of attributes that control a port's IEEE 802.1X
+// operation. It is created and deleted autonomously by the ONU upon the creation or deletion of a
+// PPTP that supports [IEEE 802.1X] authentication of customer premises equipment (CPE).
+//
+// Relationships
+// An instance of this ME is associated with a PPTP that performs IEEE 802.1X authentication of CPE
+// (e.g., Ethernet or DSL).
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute provides a unique number for each instance of this ME. Its
+// value is the same as that of its associated PPTP (i.e., slot and port number). (R) (mandatory)
+// (2-bytes)
+//
+// Dot1X Enable
+// Dot1x enable: If true, this Boolean attribute forces the associated port to authenticate via
+// [IEEE 802.1X] as a precondition of normal service. The default value false does not impose IEEE
+// 802.1X authentication on the associated port. (R,-W) (mandatory) (1-byte)
+//
+// Action Register
+// (W) (mandatory) (1-byte)
+//
+// Authenticator Pae State
+// (R) (optional) (1-byte)
+//
+// Backend Authentication State
+// (R) (optional) (1-byte)
+//
+// Admin Controlled Directions
+// Admin controlled directions: This attribute controls the directionality of the port's
+// authentication requirement. The default value 0 indicates that control is imposed in both
+// directions. The value 1 indicates that control is imposed only on traffic from the subscriber
+// towards the network. (R,-W) (optional) (1-byte)
+//
+// Operational Controlled Directions
+// Operational controlled directions: This attribute indicates the directionality of the port's
+// current authentication state. The value 0 indicates that control is imposed in both directions.
+// The value 1 indicates that control is imposed only on traffic from the subscriber towards the
+// network. (R) (optional) (1-byte)
+//
+// Authenticator Controlled Port Status
+// Authenticator controlled port status: This attribute indicates whether the controlled port is
+// currently authorized (1) or unauthorized (2). (R) (optional) (1-byte)
+//
+// Quiet Period
+// Quiet period: This attribute specifies the interval between EAP request/identity invitations
+// sent to the peer. Other events such as carrier present or EAPOL start frames from the peer may
+// trigger an EAP request/identity frame from the ONU at any time; this attribute controls the
+// ONU's periodic behaviour in the absence of these other inputs. It is expressed in seconds.
+// (R,-W) (optional) (2-bytes)
+//
+// Server Timeout Period
+// Server timeout period: This attribute specifies the time the ONU will wait for a response from
+// the radius server before timing out. Within this maximum interval, the ONU may initiate several
+// retransmissions with exponentially increasing delay. Upon timeout, the ONU may try another
+// radius server if there is one, or invoke the fallback policy, if no alternate radius servers are
+// available. Server timeout is expressed in seconds, with a default value of 30 and a maximum
+// value of 65535. (R,-W) (optional) (2-bytes)
+//
+// Re_Authentication Period
+// Re-authentication period: This attribute records the re-authentication interval specified by the
+// radius authentication server. It is expressed in seconds. The attribute is only meaningful after
+// a port has been authenticated. (R) (optional) (2-bytes)
+//
+// Re_Authentication Enabled
+// Re-authentication enabled: This Boolean attribute records whether the radius authentication
+// server has enabled re-authentication on this service (true) or not (false). The attribute is
+// only meaningful after a port has been authenticated. (R) (optional) (1-byte)
+//
+// Key Transmission Enabled
+// Key transmission enabled: This Boolean attribute indicates whether key transmission is enabled
+// (true) or not (false). This feature is not required; the parameter is listed here for
+// completeness vis-`a-vis [IEEE 802.1X]. (R,-W) (optional) (1-byte)
+//
+type Dot1XPortExtensionPackage struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ dot1xportextensionpackageBME = &ManagedEntityDefinition{
+ Name: "Dot1XPortExtensionPackage",
+ ClassID: 290,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfff0,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("Dot1XEnable", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: ByteField("ActionRegister", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Write), false, false, false, 2),
+ 3: ByteField("AuthenticatorPaeState", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, true, false, 3),
+ 4: ByteField("BackendAuthenticationState", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, true, false, 4),
+ 5: ByteField("AdminControlledDirections", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, true, false, 5),
+ 6: ByteField("OperationalControlledDirections", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, true, false, 6),
+ 7: ByteField("AuthenticatorControlledPortStatus", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, true, false, 7),
+ 8: Uint16Field("QuietPeriod", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, Write), false, true, false, 8),
+ 9: Uint16Field("ServerTimeoutPeriod", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, Write), false, true, false, 9),
+ 10: Uint16Field("ReAuthenticationPeriod", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, true, false, 10),
+ 11: ByteField("ReAuthenticationEnabled", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, true, false, 11),
+ 12: ByteField("KeyTransmissionEnabled", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read, Write), false, true, false, 12),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewDot1XPortExtensionPackage (class ID 290) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewDot1XPortExtensionPackage(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*dot1xportextensionpackageBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/efmbondinggroup.go b/vendor/github.com/opencord/omci-lib-go/generated/efmbondinggroup.go
new file mode 100644
index 0000000..362c3ad
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/efmbondinggroup.go
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// EfmBondingGroupClassID is the 16-bit ID for the OMCI
+// Managed entity EFM bonding group
+const EfmBondingGroupClassID ClassID = ClassID(419)
+
+var efmbondinggroupBME *ManagedEntityDefinition
+
+// EfmBondingGroup (class ID #419)
+// The EFM bonding group represents a group of links that are bonded. In [IEEE 802.3], a bonding
+// group is known as a PAF [physical medium entity (PME) aggregation function] and a link is known
+// as a PME instance of this ME are created and deleted by the OLT.
+//
+// Relationships
+// An instance of this ME may be associated with zero or more instances of an EFM bonding link.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. The value 0 is
+// reserved. (R, setbycreate) (mandatory) (2-bytes)
+//
+// Group Id
+// Group ID: This attribute is the unique number representing this bonding group. See clause
+// C.3.1.1 of [ITU-T G.998.2]. (R,-W, setbycreate) (mandatory) (6-bytes)
+//
+// Minimum Upstream Group Rate
+// Minimum upstream group rate: This attribute sets the minimum upstream group rate, in bits per
+// second, for this EFM Group. This attribute is used to determine the group US rate low alarm
+// status. The group US rate low alarm means that the aggregate upstream rate of all active links
+// associated with this group is less than the minimum upstream group rate. The default value for
+// this rate is zero. (R,-W) (mandatory, setbycreate) (4-bytes)
+//
+// Minimum Downstream Group Rate
+// Minimum downstream group rate: This attribute sets the minimum downstream group rate, in bits
+// per second, for this EFM Group. This attribute is used to determine the group DS rate low alarm
+// status. The group DS rate low alarm means that the aggregate downstream rate of all active links
+// associated with this group is less than the minimum downstream group rate. The default value for
+// this rate is zero. (R,-W) (mandatory) (4-bytes, setbycreate)
+//
+// Group Alarm Enable
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+type EfmBondingGroup struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ efmbondinggroupBME = &ManagedEntityDefinition{
+ Name: "EfmBondingGroup",
+ ClassID: 419,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xf000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: MultiByteField("GroupId", OctetsAttributeType, 0x8000, 6, toOctets("AAAAAAAA"), mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: Uint32Field("MinimumUpstreamGroupRate", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, Write), false, false, false, 2),
+ 3: Uint32Field("MinimumDownstreamGroupRate", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), false, false, false, 3),
+ 4: ByteField("GroupAlarmEnable", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewEfmBondingGroup (class ID 419) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewEfmBondingGroup(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*efmbondinggroupBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/efmbondinggroupperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/efmbondinggroupperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..e924d55
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/efmbondinggroupperformancemonitoringhistorydata.go
@@ -0,0 +1,130 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// EfmBondingGroupPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity EFM bonding group performance monitoring history data
+const EfmBondingGroupPerformanceMonitoringHistoryDataClassID ClassID = ClassID(421)
+
+var efmbondinggroupperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// EfmBondingGroupPerformanceMonitoringHistoryData (class ID #421)
+// This ME collects PM data as seen at the xTU-C. Instances of this ME are created and deleted by
+// the OLT.
+//
+// Relationships
+// An instance of this ME is associated with an xDSL UNI.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the EFM bonding group. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 and 2 MEs
+// that contain PM threshold values. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Rx Bad Fragments
+// Rx bad fragments: Clause 45.2.3.33 of [IEEE 802.3]. (R) (mandatory) (4-bytes)
+//
+// Rx Lost Fragments
+// Rx lost fragments: Clause 45.2.3.34 of [IEEE 802.3]. (R) (mandatory) (4-bytes)
+//
+// Rx Lost Starts
+// Rx lost starts: Clause 45.2.3.35 of [IEEE 802.3]. (R) (mandatory) (4-bytes)
+//
+// Rx Lost Ends
+// Rx lost ends: Clause 45.2.3.36 of [IEEE 802.3]. (R) (mandatory) (4-bytes)
+//
+// Rx Frames
+// Rx frames: Number of Ethernet frames received over this group. (R) (mandatory) (4-bytes)
+//
+// Tx Frames
+// Tx frames: Number of Ethernet frames transmitted over this group. (R) (mandatory) (4-bytes)
+//
+// Rx Bytes
+// Rx bytes: Number of bytes contained in the Ethernet frames received over this group. (R)
+// (mandatory) (8-bytes)
+//
+// Tx Bytes
+// Tx bytes: Number of bytes contained in the Ethernet frames transmitted over this group. (R)
+// (mandatory) (8-bytes)
+//
+// Tx Discarded Frames
+// Tx discarded frames: Number of Ethernet frames discarded by the group transmit function. (R)
+// (mandatory) (4-bytes)
+//
+// Tx Discarded Bytes
+// Tx discarded bytes: Number of bytes contained in the Ethernet frames discarded by the group
+// transmit function. (R) (mandatory) (4-bytes)
+//
+type EfmBondingGroupPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ efmbondinggroupperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "EfmBondingGroupPerformanceMonitoringHistoryData",
+ ClassID: 421,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfff0,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("RxBadFragments", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("RxLostFragments", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("RxLostStarts", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("RxLostEnds", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("RxFrames", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint32Field("TxFrames", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: Uint64Field("RxBytes", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: Uint64Field("TxBytes", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ 11: Uint32Field("TxDiscardedFrames", CounterAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, false, false, 11),
+ 12: Uint32Field("TxDiscardedBytes", CounterAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, false, false, 12),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewEfmBondingGroupPerformanceMonitoringHistoryData (class ID 421) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewEfmBondingGroupPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*efmbondinggroupperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/efmbondinggroupperformancemonitoringhistorydatapart2.go b/vendor/github.com/opencord/omci-lib-go/generated/efmbondinggroupperformancemonitoringhistorydatapart2.go
new file mode 100644
index 0000000..bc141a7
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/efmbondinggroupperformancemonitoringhistorydatapart2.go
@@ -0,0 +1,146 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// EfmBondingGroupPerformanceMonitoringHistoryDataPart2ClassID is the 16-bit ID for the OMCI
+// Managed entity EFM bonding group performance monitoring history data part 2
+const EfmBondingGroupPerformanceMonitoringHistoryDataPart2ClassID ClassID = ClassID(422)
+
+var efmbondinggroupperformancemonitoringhistorydatapart2BME *ManagedEntityDefinition
+
+// EfmBondingGroupPerformanceMonitoringHistoryDataPart2 (class ID #422)
+// This ME collects PM data as seen at the xTU-C. Instances of this ME are created and deleted by
+// the OLT.
+//
+// Relationships
+// An instance of this ME is associated with an xDSL UNI.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the EFM bonding group. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 and 2 MEs
+// that contain PM threshold values. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Rx Unicast Frames
+// Rx unicast frames: Number of unicast Ethernet frames received over this group. (R) (mandatory)
+// (4-bytes)
+//
+// Tx Unicast Frames
+// Tx unicast frames: Number of unicast Ethernet frames transmitted over this group. (R)
+// (mandatory) (4-bytes)
+//
+// Rx Unicast Bytes
+// Rx unicast bytes: Number of bytes contained in the unicast Ethernet frames received over this
+// group. (R) (mandatory) (8-bytes)
+//
+// Tx Unicast Bytes
+// Tx unicast bytes: Number of bytes contained in the unicast Ethernet frames transmitted over this
+// group. (R) (mandatory) (8-bytes)
+//
+// Rx Broadcast Frames
+// Rx broadcast frames: Number of broadcast Ethernet frames received over this group. (R)
+// (mandatory) (4-bytes)
+//
+// Tx Broadcast Frames
+// Tx broadcast frames: Number of broadcast Ethernet frames transmitted over this group. (R)
+// (mandatory) (4-bytes)
+//
+// Rx Broadcast Bytes
+// Rx broadcast bytes: Number of bytes contained in the broadcast Ethernet frames received over
+// this group. (R) (mandatory) (8-bytes)
+//
+// Tx Broadcast Bytes
+// Tx broadcast bytes: Number of bytes contained in the broadcast Ethernet frames transmitted over
+// this group. (R) (mandatory) (8-bytes)
+//
+// Rx Multicast Frames
+// Rx multicast frames: Number of multicast Ethernet frames received over this group. (R)
+// (mandatory) (4-bytes)
+//
+// Tx Multicast Frames
+// Tx multicast frames: Number of multicast Ethernet frames transmitted over this group. (R)
+// (mandatory) (4-bytes)
+//
+// Rx Multicast Bytes
+// Rx multicast bytes: Number of bytes contained in the multicast Ethernet frames received over
+// this group. (R) (mandatory) (8-bytes)
+//
+// Tx Multicast Bytes
+// Tx multicast bytes: Number of bytes contained in the multicast Ethernet frames transmitted over
+// this group. (R) (mandatory) (8-bytes)
+//
+type EfmBondingGroupPerformanceMonitoringHistoryDataPart2 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ efmbondinggroupperformancemonitoringhistorydatapart2BME = &ManagedEntityDefinition{
+ Name: "EfmBondingGroupPerformanceMonitoringHistoryDataPart2",
+ ClassID: 422,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfffc,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("RxUnicastFrames", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("TxUnicastFrames", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint64Field("RxUnicastBytes", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint64Field("TxUnicastBytes", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("RxBroadcastFrames", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint32Field("TxBroadcastFrames", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: Uint64Field("RxBroadcastBytes", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: Uint64Field("TxBroadcastBytes", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ 11: Uint32Field("RxMulticastFrames", CounterAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, false, false, 11),
+ 12: Uint32Field("TxMulticastFrames", CounterAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, false, false, 12),
+ 13: Uint64Field("RxMulticastBytes", CounterAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, false, false, 13),
+ 14: Uint64Field("TxMulticastBytes", CounterAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, false, false, 14),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewEfmBondingGroupPerformanceMonitoringHistoryDataPart2 (class ID 422) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewEfmBondingGroupPerformanceMonitoringHistoryDataPart2(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*efmbondinggroupperformancemonitoringhistorydatapart2BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/efmbondinglink.go b/vendor/github.com/opencord/omci-lib-go/generated/efmbondinglink.go
new file mode 100644
index 0000000..1570d53
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/efmbondinglink.go
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// EfmBondingLinkClassID is the 16-bit ID for the OMCI
+// Managed entity EFM bonding link
+const EfmBondingLinkClassID ClassID = ClassID(420)
+
+var efmbondinglinkBME *ManagedEntityDefinition
+
+// EfmBondingLink (class ID #420)
+// The EFM bonding link represents a link that can be bonded with other links to form a group. In
+// [IEEE 802.3], a bonding group is known as a PAF and a link is known as a PME. Instances of this
+// ME are created and deleted by the OLT.
+//
+// Relationships
+// An instance of this ME may be associated with zero or one instance of an EFM bonding group.
+//
+// Attributes
+// Managed Entity Id
+// NOTE - This attribute has the same meaning as the Stream ID in clause C.3.1.2 of [ITU-T
+// G.998.2], except that it cannot be changed. (R, setbycreate) (mandatory) (2-bytes)
+//
+// Associated Group Me Id
+// Associated group ME ID: This attribute is the ME ID of the bonding group to which this link is
+// associated. Changing this attribute moves the link from one group to another. Setting this
+// attribute to an ME ID that has not yet been provisioned will result in this link being placed in
+// a single-link group that contains only this link. The default value for this attribute is the
+// null pointer, 0xFFFF. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Link Alarm Enable
+// (R,-W, setbycreate) (mandatory) (1-bytes)
+//
+type EfmBondingLink struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ efmbondinglinkBME = &ManagedEntityDefinition{
+ Name: "EfmBondingLink",
+ ClassID: 420,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xc000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("AssociatedGroupMeId", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: ByteField("LinkAlarmEnable", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewEfmBondingLink (class ID 420) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewEfmBondingLink(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*efmbondinglinkBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/efmbondinglinkperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/efmbondinglinkperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..615d0b2
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/efmbondinglinkperformancemonitoringhistorydata.go
@@ -0,0 +1,118 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// EfmBondingLinkPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity EFM bonding link performance monitoring history data
+const EfmBondingLinkPerformanceMonitoringHistoryDataClassID ClassID = ClassID(423)
+
+var efmbondinglinkperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// EfmBondingLinkPerformanceMonitoringHistoryData (class ID #423)
+// This ME collects PM data as seen at the xTU-C. Instances of this ME are created and deleted by
+// the OLT.
+//
+// Relationships
+// An instance of this ME is associated with an xDSL UNI.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the EFM bonding link. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 and 2 MEs
+// that contain PM threshold values. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Rx Errored Fragments
+// Rx errored fragments: Clause 45.2.3.29 of [IEEE 802.3]. (R) (mandatory) (4-bytes)
+//
+// Rx Small Fragments
+// Rx small fragments: Clause 45.2.3.30 of [IEEE 802.3]. (R) (mandatory) (4-bytes)
+//
+// Rx Large Fragments
+// Rx large fragments: Clause 45.2.3.31 of [IEEE 802.3]. (R) (mandatory) (4-bytes)
+//
+// Rx Discarded Fragments
+// Rx discarded fragments: Clause 45.2.3.32 of [IEEE 802.3]. (R) (mandatory) (4-bytes)
+//
+// Rx Fcs Errors
+// Rx FCS errors: Clause 45.2.6.11 of [IEEE 802.3]. (R) (mandatory) (4-bytes)
+//
+// Rx Coding Errors
+// Rx coding errors: Clause 45.2.6.12 of [IEEE 802.3]. (R) (mandatory) (4-bytes)
+//
+// Rx Fragments
+// Rx fragments: Number of fragments received over this link. (R) (mandatory) (4-bytes)
+//
+// Tx Fragments
+// Tx fragments: Number of fragments transmitted over this link. (R) (mandatory) (4-bytes)
+//
+type EfmBondingLinkPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ efmbondinglinkperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "EfmBondingLinkPerformanceMonitoringHistoryData",
+ ClassID: 423,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffc0,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("RxErroredFragments", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("RxSmallFragments", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("RxLargeFragments", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("RxDiscardedFragments", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("RxFcsErrors", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint32Field("RxCodingErrors", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: Uint32Field("RxFragments", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: Uint32Field("TxFragments", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewEfmBondingLinkPerformanceMonitoringHistoryData (class ID 423) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewEfmBondingLinkPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*efmbondinglinkperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/efmbondingportperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/efmbondingportperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..7f6ba5c
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/efmbondingportperformancemonitoringhistorydata.go
@@ -0,0 +1,115 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// EfmBondingPortPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity EFM bonding port performance monitoring history data
+const EfmBondingPortPerformanceMonitoringHistoryDataClassID ClassID = ClassID(424)
+
+var efmbondingportperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// EfmBondingPortPerformanceMonitoringHistoryData (class ID #424)
+// This ME collects PM data as seen at the xTU-C. Instances of this ME are created and deleted by
+// the OLT.
+//
+// Relationships
+// An instance of this ME is associated with an xDSL UNI.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. The two MSBs of
+// the first byte are the bearer channel ID. Excluding the first 2-bits of the first byte, the
+// remaining part of the ME ID is identical to that of this ME's parent PPTP xDSL UNI part 1. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 and 2 MEs
+// that contain PM threshold values. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Rx Frames
+// Rx frames: Number of Ethernet frames received over this port. (R) (mandatory) (4-bytes)
+//
+// Tx Frames
+// Tx frames: Number of Ethernet frames transmitted over this port. (R) (mandatory) (4-bytes)
+//
+// Rx Bytes
+// Rx bytes: Number of bytes contained in the Ethernet frames received over this port. (R)
+// (mandatory) (4-bytes)
+//
+// Tx Bytes
+// Tx bytes: Number of bytes contained in the Ethernet frames transmitted over this port. (R)
+// (mandatory) (4-bytes)
+//
+// Tx Discarded Frames
+// Tx discarded frames: Number of Ethernet frames discarded by the port transmit function. (R)
+// (mandatory) (4-bytes)
+//
+// Tx Discarded Bytes
+// Tx discarded bytes: Number of bytes contained in the Ethernet frames discarded by the port
+// transmit function. (R) (mandatory) (4-bytes)
+//
+type EfmBondingPortPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ efmbondingportperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "EfmBondingPortPerformanceMonitoringHistoryData",
+ ClassID: 424,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xff00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("RxFrames", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("TxFrames", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("RxBytes", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("TxBytes", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("TxDiscardedFrames", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint32Field("TxDiscardedBytes", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewEfmBondingPortPerformanceMonitoringHistoryData (class ID 424) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewEfmBondingPortPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*efmbondingportperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/efmbondingportperformancemonitoringhistorydatapart2.go b/vendor/github.com/opencord/omci-lib-go/generated/efmbondingportperformancemonitoringhistorydatapart2.go
new file mode 100644
index 0000000..5c46025
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/efmbondingportperformancemonitoringhistorydatapart2.go
@@ -0,0 +1,147 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// EfmBondingPortPerformanceMonitoringHistoryDataPart2ClassID is the 16-bit ID for the OMCI
+// Managed entity EFM bonding port performance monitoring history data part 2
+const EfmBondingPortPerformanceMonitoringHistoryDataPart2ClassID ClassID = ClassID(425)
+
+var efmbondingportperformancemonitoringhistorydatapart2BME *ManagedEntityDefinition
+
+// EfmBondingPortPerformanceMonitoringHistoryDataPart2 (class ID #425)
+// This ME collects PM data as seen at the xTU-C. Instances of this ME are created and deleted by
+// the OLT.
+//
+// Relationships
+// An instance of this ME is associated with an xDSL UNI.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. The two MSBs of
+// the first byte are the bearer channel ID. Excluding the first 2-bits of the first byte, the
+// remaining part of the ME ID is identical to that of this ME's parent PPTP xDSL UNI part 1. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 and 2 MEs
+// that contain PM threshold values. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Rx Unicast Frames
+// Rx unicast frames: Number of unicast Ethernet frames received over this port. (R) (mandatory)
+// (4-bytes)
+//
+// Tx Unicast Frames
+// Tx unicast frames: Number of unicast Ethernet frames transmitted over this port. (R) (mandatory)
+// (4-bytes)
+//
+// Rx Unicast Bytes
+// Rx unicast bytes: Number of bytes contained in the unicast Ethernet frames received over this
+// port. (R) (mandatory) (4-bytes)
+//
+// Tx Unicast Bytes
+// Tx unicast bytes: Number of bytes contained in the unicast Ethernet frames transmitted over this
+// port. (R) (mandatory) (4-bytes)
+//
+// Rx Broadcast Frames
+// Rx broadcast frames: Number of broadcast Ethernet frames received over this port. (R)
+// (mandatory) (4-bytes)
+//
+// Tx Broadcast Frames
+// Tx broadcast frames: Number of broadcast Ethernet frames transmitted over this port. (R)
+// (mandatory) (4-bytes)
+//
+// Rx Broadcast Bytes
+// Rx broadcast bytes: Number of bytes contained in the broadcast Ethernet frames received over
+// this port. (R) (mandatory) (4-bytes)
+//
+// Tx Broadcast Bytes
+// Tx broadcast bytes: Number of bytes contained in the broadcast Ethernet frames transmitted over
+// this port. (R) (mandatory) (4-bytes)
+//
+// Rx Multicast Frames
+// Rx multicast frames: Number of multicast Ethernet frames received over this port. (R)
+// (mandatory) (4-bytes)
+//
+// Tx Multicast Frames
+// Tx multicast frames: Number of multicast Ethernet frames transmitted over this port. (R)
+// (mandatory) (4-bytes)
+//
+// Rx Multicast Bytes
+// Rx multicast bytes: Number of bytes contained in the multicast Ethernet frames received over
+// this port. (R) (mandatory) (4-bytes)
+//
+// Tx Multicast Bytes
+// Tx multicast bytes: Number of bytes contained in the multicast Ethernet frames transmitted over
+// this port. (R) (mandatory) (4-bytes)
+//
+type EfmBondingPortPerformanceMonitoringHistoryDataPart2 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ efmbondingportperformancemonitoringhistorydatapart2BME = &ManagedEntityDefinition{
+ Name: "EfmBondingPortPerformanceMonitoringHistoryDataPart2",
+ ClassID: 425,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfffc,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("RxUnicastFrames", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("TxUnicastFrames", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("RxUnicastBytes", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("TxUnicastBytes", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("RxBroadcastFrames", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint32Field("TxBroadcastFrames", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: Uint32Field("RxBroadcastBytes", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: Uint32Field("TxBroadcastBytes", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ 11: Uint32Field("RxMulticastFrames", CounterAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, false, false, 11),
+ 12: Uint32Field("TxMulticastFrames", CounterAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, false, false, 12),
+ 13: Uint32Field("RxMulticastBytes", CounterAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, false, false, 13),
+ 14: Uint32Field("TxMulticastBytes", CounterAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, false, false, 14),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewEfmBondingPortPerformanceMonitoringHistoryDataPart2 (class ID 425) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewEfmBondingPortPerformanceMonitoringHistoryDataPart2(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*efmbondingportperformancemonitoringhistorydatapart2BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/energyconsumptionperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/energyconsumptionperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..89bf9d3
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/energyconsumptionperformancemonitoringhistorydata.go
@@ -0,0 +1,112 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// EnergyConsumptionPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity Energy consumption performance monitoring history data
+const EnergyConsumptionPerformanceMonitoringHistoryDataClassID ClassID = ClassID(343)
+
+var energyconsumptionperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// EnergyConsumptionPerformanceMonitoringHistoryData (class ID #343)
+// This ME collects PM data associated with the ONU's energy consumption. The time spent in various
+// low-power states is recorded as a measure of their utility. Furthermore, the ONU may also
+// include the equivalent of a watt-hour meter, which can be sampled from time to time to measure
+// actual power consumed.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with the ONU in its entirety.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. The ME ID must
+// be 0. (R, set-by-create) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: No thresholds are defined for this ME. For uniformity with other PMs, the
+// attribute is retained and shown as mandatory, but it should be set to a null pointer. (R,-W,
+// set-by-create) (mandatory) (2-bytes)
+//
+// Doze Time
+// Doze time: This attribute records the time during which the ONU was in doze energy conservation
+// mode, measured in microseconds. If watchful sleep is enabled in the ONU dynamic power management
+// control ME, the ONU ignores this attribute. (R) (mandatory) (4-bytes)
+//
+// Cyclic Sleep Time
+// Cyclic sleep time: This attribute records the time during which the ONU was in cyclic sleep
+// energy conservation mode, measured in microseconds. If watchful sleep is enabled in the ONU
+// dynamic power management control ME, the ONU ignores this attribute. (R) (mandatory) (4-bytes)
+//
+// Watchful Sleep Time
+// Watchful sleep time: This attribute records the time during which the ONU was in watchful sleep
+// energy conservation mode, measured in microseconds. (R) (mandatory) (4-bytes)
+//
+// Energy Consumed
+// Energy consumed: This attribute records the energy consumed by the ONU, measured in millijoules.
+// (R) (optional) (4-bytes)
+//
+type EnergyConsumptionPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ energyconsumptionperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "EnergyConsumptionPerformanceMonitoringHistoryData",
+ ClassID: 343,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfc00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", PointerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("DozeTime", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("CyclicSleepTime", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("WatchfulSleepTime", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("EnergyConsumed", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, true, false, 6),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewEnergyConsumptionPerformanceMonitoringHistoryData (class ID 343) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewEnergyConsumptionPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*energyconsumptionperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/enhancedfecperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/enhancedfecperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..150a9aa
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/enhancedfecperformancemonitoringhistorydata.go
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// EnhancedFecPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity Enhanced FEC performance monitoring history data
+const EnhancedFecPerformanceMonitoringHistoryDataClassID ClassID = ClassID(453)
+
+var enhancedfecperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// EnhancedFecPerformanceMonitoringHistoryData (class ID #453)
+// This ME collects PM data associated with PON downstream FEC counters for XGS-PON and subsequent
+// ITU-T PON systems. Instances of this ME are created and deleted by the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an instance of the ANI-G ME or an instance of the TWDM
+// channel ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the ANI-G or a TWDM channel. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 64 Bit Id
+// Threshold data 64-bit ID: This attribute points to an instance of the threshold data 64-bit ME
+// that contains PM threshold values. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Corrected Bytes
+// Corrected bytes: This attribute counts the number of bytes that were corrected by the FEC
+// function. (R) (mandatory) (8-bytes)
+//
+// Corrected Code Words
+// Corrected code words: This attribute counts the code words that were corrected by the FEC
+// function. (R) (mandatory) (8-bytes)
+//
+// Uncorrectable Code Words
+// Uncorrectable code words: This attribute counts errored code words that could not be corrected
+// by the FEC function. (R) (mandatory) (8-bytes)
+//
+// Total Code Words
+// Total code words: This attribute counts the total received code words. (R) (mandatory) (8-bytes)
+//
+// Fec Seconds
+// FEC seconds: This attribute counts seconds during which there was an FEC anomaly. (R)
+// (mandatory) (2-bytes)
+//
+type EnhancedFecPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ enhancedfecperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "EnhancedFecPerformanceMonitoringHistoryData",
+ ClassID: 453,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfe00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData64BitId", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint64Field("CorrectedBytes", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint64Field("CorrectedCodeWords", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint64Field("UncorrectableCodeWords", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint64Field("TotalCodeWords", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint16Field("FecSeconds", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewEnhancedFecPerformanceMonitoringHistoryData (class ID 453) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewEnhancedFecPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*enhancedfecperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/enhancedsecuritycontrol.go b/vendor/github.com/opencord/omci-lib-go/generated/enhancedsecuritycontrol.go
new file mode 100644
index 0000000..f2c8c81
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/enhancedsecuritycontrol.go
@@ -0,0 +1,146 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// EnhancedSecurityControlClassID is the 16-bit ID for the OMCI
+// Managed entity Enhanced security control
+const EnhancedSecurityControlClassID ClassID = ClassID(332)
+
+var enhancedsecuritycontrolBME *ManagedEntityDefinition
+
+// EnhancedSecurityControl (class ID #332)
+// This ME contains the capabilities, parameters and controls of enhanced GPON security features
+// when they are negotiated via the OMCI (Note). The attributes in this ME are intended to be used
+// to implement a symmetric-key-based three step authentication process as described in the
+// supplemental information section in the following.
+//
+// NOTE - If an ITU-T G.987 system uses 802.1X authentication as defined in [ITU-T G.987.3], the
+// only applicable attribute of this ME is the broadcast key table.
+//
+// Relationships
+// One instance of this ME is associated with the ONU ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. There is only
+// one instance, number 0. (R) (mandatory) (2 bytes)
+//
+// Olt Crypto Capabilities
+// (W) (mandatory) (16 bytes)
+//
+// Olt Random Challenge Table
+// NOTE - It is assumed that the length of OLT_challenge is always an integer multiple of 16-bytes.
+//
+// Olt Challenge Status
+// The ONU initializes this attribute to the value false. (R, W) (mandatory) (1-byte)
+//
+// Onu Selected Crypto Capabilities
+// ONU selected crypto capabilities: This attribute specifies the cryptographic capability selected
+// by the ONU in authentication step 2. Its value specifies one of the bit positions that has the
+// value 1 in the OLT crypto capabilities attribute. (R) (mandatory) (1 byte)
+//
+// Onu Random Challenge Table
+// ONU random challenge table: This attribute specifies the random challenge ONU_challenge issued
+// by the ONU during authentication step 2. It is structured as a table, with each entry being
+// 16-bytes of content. ONU_challenge is the concatenation of all 16-byte content fields in the
+// table. Once the OLT triggers a response to be generated using the OLT challenge status
+// attribute, the ONU generates the response and writes the table (in a single operation). The AVC
+// generated by this attribute signals to the OLT that the challenge is ready, so that the OLT can
+// commence a get/get-next sequence to obtain the table's contents. (R) (mandatory) (16 * P-bytes)
+//
+// Onu Authentication Result Table
+// Once the OLT triggers a response to be generated using the OLT challenge status attribute, the
+// ONU generates ONU_result and writes the table (in a single operation). The AVC generated by this
+// attribute signals to the OLT that the response is ready, so that the OLT can commence a get/get-
+// next sequence to obtain the table's contents. (R) (mandatory) (16 * Q-bytes)
+//
+// Olt Authentication Result Table
+// This attribute is structured as a table, with each entry being 17 bytes. The first byte is the
+// table row number, starting at 1; the remaining 16 bytes are content. OLT_result is the
+// concatenation of all 16-byte content fields. The OLT writes all entries into the table, and then
+// triggers the ONU's processing of the table using the OLT result status attribute. The number of
+// rows R is implicit in the choice of hash algorithm. The OLT can clear the table with a set
+// operation to row 0. (W) (mandatory) (17 * R-bytes)
+//
+// Olt Result Status
+// (R, W) (mandatory) (1 byte)
+//
+// Onu Authentication Status
+// (R) (mandatory) (1 byte)
+//
+// Master Session Key Name
+// Upon the invalidation of a master session key (e.g., due to an ONU reset or deactivation, or due
+// to an ONU-local decision that the master session key has expired), the ONU sets the master
+// session key name to all zeros. (R) (mandatory) (16 bytes)
+//
+// Broadcast Key Table
+// (R, W) (optional) (18N bytes)
+//
+// Effective Key Length
+// Effective key length: This attribute specifies the maximum effective length, in bits, of keys
+// generated by the ONU. (R) (optional) (2 bytes)
+//
+type EnhancedSecurityControl struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ enhancedsecuritycontrolBME = &ManagedEntityDefinition{
+ Name: "EnhancedSecurityControl",
+ ClassID: 332,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ GetNext,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfff0,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: MultiByteField("OltCryptoCapabilities", OctetsAttributeType, 0x8000, 16, toOctets("AAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Write), false, false, false, 1),
+ 2: TableField("OltRandomChallengeTable", TableAttributeType, 0x4000, TableInfo{nil, 17}, mapset.NewSetWith(Read, Write), false, false, false, 2),
+ 3: ByteField("OltChallengeStatus", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), false, false, false, 3),
+ 4: ByteField("OnuSelectedCryptoCapabilities", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: TableField("OnuRandomChallengeTable", TableAttributeType, 0x0800, TableInfo{nil, 16}, mapset.NewSetWith(Read), true, false, false, 5),
+ 6: TableField("OnuAuthenticationResultTable", TableAttributeType, 0x0400, TableInfo{nil, 16}, mapset.NewSetWith(Read), true, false, false, 6),
+ 7: TableField("OltAuthenticationResultTable", TableAttributeType, 0x0200, TableInfo{nil, 17}, mapset.NewSetWith(Read, Write), false, false, false, 7),
+ 8: ByteField("OltResultStatus", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, Write), false, false, false, 8),
+ 9: ByteField("OnuAuthenticationStatus", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read), true, false, false, 9),
+ 10: MultiByteField("MasterSessionKeyName", OctetsAttributeType, 0x0040, 16, toOctets("AAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read), false, false, false, 10),
+ 11: TableField("BroadcastKeyTable", TableAttributeType, 0x0020, TableInfo{nil, 18}, mapset.NewSetWith(Read, Write), false, true, false, 11),
+ 12: Uint16Field("EffectiveKeyLength", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, true, false, 12),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewEnhancedSecurityControl (class ID 332) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewEnhancedSecurityControl(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*enhancedsecuritycontrolBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/enhancedtcperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/enhancedtcperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..e3c3fc2
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/enhancedtcperformancemonitoringhistorydata.go
@@ -0,0 +1,153 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// EnhancedTcPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity Enhanced TC performance monitoring history data
+const EnhancedTcPerformanceMonitoringHistoryDataClassID ClassID = ClassID(454)
+
+var enhancedtcperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// EnhancedTcPerformanceMonitoringHistoryData (class ID #454)
+// This ME collects PM data associated with the XGS-PON and subsequent ITU-T PON systems' TC layer.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an ANI-G.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the ANI-G. (R, set-by-create)
+// (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 64 Bit Id
+// Threshold data 64-bit ID: This attribute points to an instance of the threshold data 64-bit ME
+// that contains PM threshold values. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Psbd Hec Error Count
+// PSBd HEC error count: This attribute counts HEC errors in any of the fields of the downstream
+// physical sync block. (R) (optional) (4-bytes)
+//
+// Xgtc Hec Error Count
+// XGTC HEC error count: This attribute counts HEC errors detected in the XGTC header. In [ITU-T
+// G.9807.1], this attribute is used for FS HEC error count management. (R) (optional) (4-bytes)
+//
+// Unknown Profile Count
+// Unknown profile count: This attribute counts the number of grants received whose specified
+// profile was not known to the ONU. (R) (optional) (4-bytes)
+//
+// Transmitted Xgem Frames
+// Transmitted XGEM frames: This attribute counts the number of non-idle XGEM frames transmitted.
+// If an SDU is fragmented, each fragment is an XGEM frame and is counted as such. (R) (mandatory)
+// (8 bytes)
+//
+// Fragment Xgem Frames
+// Fragment XGEM frames: This attribute counts the number of XGEM frames that represent fragmented
+// SDUs, as indicated by the LF bit = 0. (R) (optional) (8-bytes)
+//
+// Xgem Hec Lost Words Count
+// XGEM HEC lost words count: This attribute counts the number of 4-byte words lost because of an
+// XGEM frame HEC error. In general, all XGTC payload following the error is lost, until the next
+// PSBd event. (R) (optional) (8 bytes)
+//
+// Xgem Key Errors
+// (R) (mandatory) (8 bytes)
+//
+// Xgem Hec Error Count
+// XGEM HEC error count: This attribute counts the number of instances of an XGEM frame HEC error.
+// (R) (mandatory) (8 bytes)
+//
+// Transmitted Bytes In Non_Idle Xgem Frames
+// Transmitted bytes in non-idle XGEM frames: This attribute counts the number of transmitted bytes
+// in non-idle XGEM frames. (R) (mandatory) (8 bytes)
+//
+// Received Bytes In Non_Idle Xgem Frames
+// Received bytes in non-idle XGEM frames: This attribute counts the number of received bytes in
+// non-idle XGEM frames. (R) (optional) (8 bytes)
+//
+// Lods Event Count
+// LODS event count: This attribute counts the number of state transitions from O5.1 to O6. (R)
+// (optional) (4-bytes)
+//
+// Lods Event Restored Count
+// LODS event restored count: This attribute counts the number of LODS cleared events. (R)
+// (optional) (4-bytes)
+//
+// Onu Reactivation By Lods Events
+// ONU reactivation by LODS events: This attribute counts the number of LODS events resulting in
+// ONU reactivation without synchronization being reacquired. (R) (optional) (4-bytes)
+//
+type EnhancedTcPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ enhancedtcperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "EnhancedTcPerformanceMonitoringHistoryData",
+ ClassID: 454,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfffe,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData64BitId", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("PsbdHecErrorCount", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, true, false, 3),
+ 4: Uint32Field("XgtcHecErrorCount", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, true, false, 4),
+ 5: Uint32Field("UnknownProfileCount", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, true, false, 5),
+ 6: Uint64Field("TransmittedXgemFrames", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint64Field("FragmentXgemFrames", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, true, false, 7),
+ 8: Uint64Field("XgemHecLostWordsCount", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, true, false, 8),
+ 9: Uint64Field("XgemKeyErrors", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: Uint64Field("XgemHecErrorCount", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ 11: Uint64Field("TransmittedBytesInNonIdleXgemFrames", CounterAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, false, false, 11),
+ 12: Uint64Field("ReceivedBytesInNonIdleXgemFrames", CounterAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, true, false, 12),
+ 13: Uint32Field("LodsEventCount", CounterAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, true, false, 13),
+ 14: Uint32Field("LodsEventRestoredCount", CounterAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, true, false, 14),
+ 15: Uint32Field("OnuReactivationByLodsEvents", CounterAttributeType, 0x0002, 0, mapset.NewSetWith(Read), false, true, false, 15),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewEnhancedTcPerformanceMonitoringHistoryData (class ID 454) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewEnhancedTcPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*enhancedtcperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/equipmentextensionpackage.go b/vendor/github.com/opencord/omci-lib-go/generated/equipmentextensionpackage.go
new file mode 100644
index 0000000..df671a8
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/equipmentextensionpackage.go
@@ -0,0 +1,87 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// EquipmentExtensionPackageClassID is the 16-bit ID for the OMCI
+// Managed entity Equipment extension package
+const EquipmentExtensionPackageClassID ClassID = ClassID(160)
+
+var equipmentextensionpackageBME *ManagedEntityDefinition
+
+// EquipmentExtensionPackage (class ID #160)
+// This ME supports optional extensions to circuit pack MEs. If the circuit pack supports these
+// features, the ONU creates and deletes this ME along with its associated real or virtual circuit
+// pack.
+//
+// Relationships
+// An equipment extension package may be contained by an ONU-G or cardholder.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the ONU-G or cardholder. (R)
+// (mandatory) (2-bytes)
+//
+// Environmental Sense
+// NOTE - Some specific sense point applications are already defined on the ONU-G ME. It is the
+// vendor's choice how to configure and report sense points that appear both generically and
+// specifically.
+//
+// Contact Closure Output
+// On read, the left bit in each pair should be set to 0 at the ONU and ignored at the OLT. The
+// right bit indicates a released output point with 0 and an operated contact point with 1. (R,-W)
+// (optional) (2-bytes)
+//
+type EquipmentExtensionPackage struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ equipmentextensionpackageBME = &ManagedEntityDefinition{
+ Name: "EquipmentExtensionPackage",
+ ClassID: 160,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xc000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: Uint16Field("EnvironmentalSense", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, true, false, 1),
+ 2: Uint16Field("ContactClosureOutput", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, Write), false, true, false, 2),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewEquipmentExtensionPackage (class ID 160) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewEquipmentExtensionPackage(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*equipmentextensionpackageBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/ethernetflowterminationpoint.go b/vendor/github.com/opencord/omci-lib-go/generated/ethernetflowterminationpoint.go
new file mode 100644
index 0000000..17a4b9e
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/ethernetflowterminationpoint.go
@@ -0,0 +1,103 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// EthernetFlowTerminationPointClassID is the 16-bit ID for the OMCI
+// Managed entity Ethernet flow termination point
+const EthernetFlowTerminationPointClassID ClassID = ClassID(286)
+
+var ethernetflowterminationpointBME *ManagedEntityDefinition
+
+// EthernetFlowTerminationPoint (class ID #286)
+// The Ethernet flow TP contains the attributes necessary to originate and terminate Ethernet
+// frames in the ONU. It is appropriate when transporting pseudowire services via layer-2.
+// Instances of this ME are created and deleted by the OLT.
+//
+// Relationships
+// One Ethernet flow TP ME exists for each distinct pseudowire service that is transported via
+// layer 2.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to a pseudowire TP ME. (R, setbycreate) (mandatory)
+// (2-bytes)
+//
+// Destination Mac
+// Destination MAC: This attribute specifies the destination MAC address of upstream Ethernet
+// frames. (R,-W, setbycreate) (mandatory) (6-bytes)
+//
+// Source Mac
+// Source MAC: This attribute specifies the near-end MAC address. It is established by nonOMCI
+// means (e.g., factory programmed into ONU flash memory) and is included here for information
+// only. (R) (mandatory) (6-bytes)
+//
+// Tag Policy
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Tci
+// TCI: If the tag policy calls for tagging of upstream Ethernet frames, this attribute specifies
+// the tag control information, which includes the VLAN tag, P bits and CFI bit. (R,-W) (optional)
+// (2-bytes)
+//
+// Loopback
+// (R,-W) (mandatory) (1-byte)
+//
+type EthernetFlowTerminationPoint struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ ethernetflowterminationpointBME = &ManagedEntityDefinition{
+ Name: "EthernetFlowTerminationPoint",
+ ClassID: 286,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xf800,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: MultiByteField("DestinationMac", OctetsAttributeType, 0x8000, 6, toOctets("AAAAAAAA"), mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: MultiByteField("SourceMac", OctetsAttributeType, 0x4000, 6, toOctets("AAAAAAAA"), mapset.NewSetWith(Read), false, false, false, 2),
+ 3: ByteField("TagPolicy", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ 4: Uint16Field("Tci", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, true, false, 4),
+ 5: ByteField("Loopback", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, false, false, 5),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewEthernetFlowTerminationPoint (class ID 286) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewEthernetFlowTerminationPoint(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*ethernetflowterminationpointBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/ethernetframeextendedpm.go b/vendor/github.com/opencord/omci-lib-go/generated/ethernetframeextendedpm.go
new file mode 100644
index 0000000..9f2c543
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/ethernetframeextendedpm.go
@@ -0,0 +1,166 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// EthernetFrameExtendedPmClassID is the 16-bit ID for the OMCI
+// Managed entity Ethernet frame extended PM
+const EthernetFrameExtendedPmClassID ClassID = ClassID(334)
+
+var ethernetframeextendedpmBME *ManagedEntityDefinition
+
+// EthernetFrameExtendedPm (class ID #334)
+// This ME collects some of the PM data at a point where an Ethernet flow can be observed. It is
+// based on the Etherstats group of [IETF RFC 2819]. Instances of this ME are created and deleted
+// by the OLT. References to received frames are to be interpreted as the number of frames entering
+// the monitoring point in the direction specified by the control block.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME may be associated with an instance of an ME at any Ethernet interface
+// within the ONU. The specific ME is identified in the control block attribute.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. To facilitate
+// discovery, the identification of instances sequentially starting with 1 is encouraged. (R,
+// setbycreate) (mandatory) (2 bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. If
+// continuous accumulation is enabled in the control block, this attribute is not used and has the
+// fixed value 0. (R) (mandatory) (1 byte)
+//
+// Control Block
+// (R, W, setbycreate) (mandatory) (16 bytes)
+//
+// Drop Events
+// Drop events: The total number of events in which frames were dropped due to a lack of resources.
+// This is not necessarily the number of frames dropped; it is the number of times this event was
+// detected. (R) (mandatory) (4 bytes)
+//
+// Octets
+// Octets: The total number of octets received, including those in bad frames, excluding framing
+// bits, but including FCS. (R) (mandatory) (4 bytes)
+//
+// Frames
+// Frames: The total number of frames received, including bad frames, broadcast frames and
+// multicast frames. (R) (mandatory) (4 bytes)
+//
+// Broadcast Frames
+// Broadcast frames: The total number of received good frames directed to the broadcast address.
+// This does not include multicast frames. (R) (mandatory) (4 bytes)
+//
+// Multicast Frames
+// Multicast frames: The total number of received good frames directed to a multicast address. This
+// does not include broadcast frames. (R) (mandatory) (4 bytes)
+//
+// Crc Errored Frames
+// CRC errored frames: The total number of frames received that had a length (excluding framing
+// bits, but including FCS octets) of between 64 and 1518 octets, inclusive, but had either a bad
+// FCS with an integral number of octets (FCS error) or a bad FCS with a non-integral number of
+// octets (alignment error). (R) (mandatory) (4 bytes)
+//
+// Undersize Frames
+// Undersize frames: The total number of frames received that were less than 64 octets long but
+// were otherwise well formed (excluding framing bits, but including FCS octets). (R) (mandatory)
+// (4 bytes)
+//
+// Oversize Frames
+// Oversize frames: The total number of frames received that were longer than 1518 octets
+// (excluding framing bits, but including FCS octets) and were otherwise well formed. (R)
+// (mandatory) (4 bytes)
+//
+// Frames 64 Octets
+// Frames 64 octets: The total number of received frames (including bad frames) that were 64-octets
+// long, excluding framing bits but including FCS. (R) (mandatory) (4-bytes)
+//
+// Frames 65 To 127 Octets
+// Frames 65 to 127 octets: The total number of received frames (including bad frames) that were
+// 65..127 octets long, excluding framing bits but including FCS. (R) (mandatory) (4 bytes)
+//
+// Frames 128 To 255 Octets
+// Frames 128 to 255 octets: The total number of frames (including bad frames) received that were
+// 128..255 octets long, excluding framing bits but including FCS. (R) (mandatory) (4 bytes)
+//
+// Frames 256 To 511 Octets
+// Frames 256 to 511 octets: The total number of frames (including bad frames) received that were
+// 256..511 octets long, excluding framing bits but including FCS. (R) (mandatory) (4 bytes)
+//
+// Frames 512 To 1 023 Octets
+// Frames 512 to 1-023 octets: The total number of frames (including bad frames) received that were
+// 512..1-023 octets long, excluding framing bits but including FCS. (R) (mandatory) (4 bytes)
+//
+// Frames 1024 To 1518 Octets
+// Frames 1024 to 1518 octets: The total number of frames (including bad frames) received that were
+// 1024..1518 octets long, excluding framing bits but including FCS. (R) (mandatory) (4 bytes)
+//
+type EthernetFrameExtendedPm struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ ethernetframeextendedpmBME = &ManagedEntityDefinition{
+ Name: "EthernetFrameExtendedPm",
+ ClassID: 334,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffff,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: MultiByteField("ControlBlock", OctetsAttributeType, 0x4000, 16, toOctets("AAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("DropEvents", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("Octets", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("Frames", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("BroadcastFrames", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("MulticastFrames", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint32Field("CrcErroredFrames", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: Uint32Field("UndersizeFrames", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: Uint32Field("OversizeFrames", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ 11: Uint32Field("Frames64Octets", CounterAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, false, false, 11),
+ 12: Uint32Field("Frames65To127Octets", CounterAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, false, false, 12),
+ 13: Uint32Field("Frames128To255Octets", CounterAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, false, false, 13),
+ 14: Uint32Field("Frames256To511Octets", CounterAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, false, false, 14),
+ 15: Uint32Field("Frames512To1023Octets", CounterAttributeType, 0x0002, 0, mapset.NewSetWith(Read), false, false, false, 15),
+ 16: Uint32Field("Frames1024To1518Octets", CounterAttributeType, 0x0001, 0, mapset.NewSetWith(Read), false, false, false, 16),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewEthernetFrameExtendedPm (class ID 334) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewEthernetFrameExtendedPm(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*ethernetframeextendedpmBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/ethernetframeextendedpm64-bit.go b/vendor/github.com/opencord/omci-lib-go/generated/ethernetframeextendedpm64-bit.go
new file mode 100644
index 0000000..9023d3b
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/ethernetframeextendedpm64-bit.go
@@ -0,0 +1,162 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// EthernetFrameExtendedPm64BitClassID is the 16-bit ID for the OMCI
+// Managed entity Ethernet frame extended PM 64-bit
+const EthernetFrameExtendedPm64BitClassID ClassID = ClassID(426)
+
+var ethernetframeextendedpm64bitBME *ManagedEntityDefinition
+
+// EthernetFrameExtendedPm64Bit (class ID #426)
+// This ME collects some of the PM data at a point where an Ethernet flow can be observed. It is
+// based on the Etherstats group of [IETF RFC 2819] and [IETF RFC 2863]. Instances of this ME are
+// created and deleted by the OLT. References to received frames are to be interpreted as the
+// number of frames entering the monitoring point in the direction specified by the control block.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. To facilitate
+// discovery, the identification of instances sequentially starting with 1 is encouraged. (R,
+// setbycreate) (mandatory) (2 bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. If
+// continuous accumulation is enabled in the control block, this attribute is not used and has the
+// fixed value 0. (R) (mandatory) (1 byte)
+//
+// Control Block
+// (R, W, setbycreate) (mandatory) (16 bytes)
+//
+// Drop Events
+// Drop events: The total number of events in which frames were dropped due to a lack of resources.
+// This is not necessarily the number of frames dropped; it is the number of times this event was
+// detected. (R) (mandatory) (4 bytes)
+//
+// Octets
+// Octets: The total number of octets received, including those in bad frames, excluding framing
+// bits, but including FCS. (R) (mandatory) (4 bytes)
+//
+// Frames
+// Frames: The total number of frames received, including bad frames, broadcast frames and
+// multicast frames. (R) (mandatory) (4 bytes)
+//
+// Broadcast Frames
+// Broadcast frames: The total number of received good frames directed to the broadcast address.
+// This does not include multicast frames. (R) (mandatory) (4 bytes)
+//
+// Multicast Frames
+// Multicast frames: The total number of received good frames directed to a multicast address. This
+// does not include broadcast frames. (R) (mandatory) (4 bytes)
+//
+// Crc Errored Frames
+// CRC errored frames: The total number of frames received that had a length (excluding framing
+// bits, but including FCS octets) of between 64 and 1518 octets, inclusive, but had either a bad
+// FCS with an integral number of octets (FCS error) or a bad FCS with a non-integral number of
+// octets (alignment error). (R) (mandatory) (4 bytes)
+//
+// Undersize Frames
+// Undersize frames: The total number of frames received that were less than 64 octets long but
+// were otherwise well formed (excluding framing bits, but including FCS octets). (R) (mandatory)
+// (4 bytes)
+//
+// Oversize Frames
+// Oversize frames: The total number of frames received that were longer than 1518 octets
+// (excluding framing bits, but including FCS octets) and were otherwise well formed. (R)
+// (mandatory) (4 bytes)
+//
+// Frames 64 Octets
+// Frames 64 octets: The total number of received frames (including bad frames) that were 64-octets
+// long, excluding framing bits but including FCS. (R) (mandatory) (4-bytes)
+//
+// Frames 65 To 127 Octets
+// Frames 65 to 127 octets: The total number of received frames (including bad frames) that were
+// 65..127 octets long, excluding framing bits but including FCS. (R) (mandatory) (4 bytes)
+//
+// Frames 128 To 255 Octets
+// Frames 128 to 255 octets: The total number of frames (including bad frames) received that were
+// 128..255 octets long, excluding framing bits but including FCS. (R) (mandatory) (4 bytes)
+//
+// Frames 256 To 511 Octets
+// Frames 256 to 511 octets: The total number of frames (including bad frames) received that were
+// 256..511 octets long, excluding framing bits but including FCS. (R) (mandatory) (4 bytes)
+//
+// Frames 512 To 1 023 Octets
+// Frames 512 to 1-023 octets: The total number of frames (including bad frames) received that were
+// 512..1-023 octets long, excluding framing bits but including FCS. (R) (mandatory) (4 bytes)
+//
+// Frames 1024 To 1518 Octets
+// Frames 1024 to 1518 octets: The total number of frames (including bad frames) received that were
+// 1024..1518 octets long, excluding framing bits but including FCS. (R) (mandatory) (4 bytes)
+//
+type EthernetFrameExtendedPm64Bit struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ ethernetframeextendedpm64bitBME = &ManagedEntityDefinition{
+ Name: "EthernetFrameExtendedPm64Bit",
+ ClassID: 426,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffff,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: MultiByteField("ControlBlock", OctetsAttributeType, 0x4000, 16, toOctets("AAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint64Field("DropEvents", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint64Field("Octets", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint64Field("Frames", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint64Field("BroadcastFrames", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint64Field("MulticastFrames", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint64Field("CrcErroredFrames", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: Uint64Field("UndersizeFrames", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: Uint64Field("OversizeFrames", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ 11: Uint64Field("Frames64Octets", CounterAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, false, false, 11),
+ 12: Uint64Field("Frames65To127Octets", CounterAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, false, false, 12),
+ 13: Uint64Field("Frames128To255Octets", CounterAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, false, false, 13),
+ 14: Uint64Field("Frames256To511Octets", CounterAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, false, false, 14),
+ 15: Uint64Field("Frames512To1023Octets", CounterAttributeType, 0x0002, 0, mapset.NewSetWith(Read), false, false, false, 15),
+ 16: Uint64Field("Frames1024To1518Octets", CounterAttributeType, 0x0001, 0, mapset.NewSetWith(Read), false, false, false, 16),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewEthernetFrameExtendedPm64Bit (class ID 426) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewEthernetFrameExtendedPm64Bit(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*ethernetframeextendedpm64bitBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/ethernetframeperformancemonitoringhistorydatadownstream.go b/vendor/github.com/opencord/omci-lib-go/generated/ethernetframeperformancemonitoringhistorydatadownstream.go
new file mode 100644
index 0000000..745bbe8
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/ethernetframeperformancemonitoringhistorydatadownstream.go
@@ -0,0 +1,163 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// EthernetFramePerformanceMonitoringHistoryDataDownstreamClassID is the 16-bit ID for the OMCI
+// Managed entity Ethernet frame performance monitoring history data downstream
+const EthernetFramePerformanceMonitoringHistoryDataDownstreamClassID ClassID = ClassID(321)
+
+var ethernetframeperformancemonitoringhistorydatadownstreamBME *ManagedEntityDefinition
+
+// EthernetFramePerformanceMonitoringHistoryDataDownstream (class ID #321)
+// This ME is identical to the Ethernet frame PM history data upstream ME, with the exception that
+// it monitors downstream traffic.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of a MAC bridge port configuration
+// data. (R, setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 ME that
+// contains PM threshold values. Since no threshold value attribute number exceeds 7, a threshold
+// data 2 ME is optional. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Drop Events
+// Drop events: The total number of events in which packets were dropped due to a lack of
+// resources. This is not necessarily the number of packets dropped; it is the number of times this
+// event was detected. (R) (mandatory) (4-bytes)
+//
+// Octets
+// Octets: The total number of upstream octets received, including those in bad packets, excluding
+// framing bits, but including FCS. (R) (mandatory) (4-bytes)
+//
+// Packets
+// Packets: The total number of upstream packets received, including bad packets, broadcast packets
+// and multicast packets. (R) (mandatory) (4-bytes)
+//
+// Broadcast Packets
+// Broadcast packets: The total number of upstream good packets received that were directed to the
+// broadcast address. This does not include multicast packets. (R) (mandatory) (4-bytes)
+//
+// Multicast Packets
+// Multicast packets: The total number of upstream good packets received that were directed to a
+// multicast address. This does not include broadcast packets. (R) (mandatory) (4-bytes)
+//
+// Crc Errored Packets
+// CRC errored packets: The total number of upstream packets received that had a length (excluding
+// framing bits, but including FCS octets) of between 64-octets and 1518-octets, inclusive, but had
+// either a bad FCS with an integral number of octets (FCS error) or a bad FCS with a non-integral
+// number of octets (alignment error). (R) (mandatory) (4-bytes)
+//
+// Undersize Packets
+// Undersize packets: The total number of upstream packets received that were less than 64-octets
+// long, but were otherwise well formed (excluding framing bits, but including FCS). (R)
+// (mandatory) (4-bytes)
+//
+// Oversize Packets
+// NOTE 2 - If 2-000-byte Ethernet frames are supported, counts in this performance parameter are
+// not necessarily errors.
+//
+// Packets 64 Octets
+// Packets 64 octets: The total number of upstream received packets (including bad packets) that
+// were 64-octets long, excluding framing bits but including FCS. (R) (mandatory) (4-bytes)
+//
+// Packets 65 To 127 Octets
+// Packets 65 to 127 octets: The total number of upstream received packets (including bad packets)
+// that were 65..127 octets long, excluding framing bits but including FCS. (R) (mandatory)
+// (4-bytes)
+//
+// Packets 128 To 255 Octets
+// Packets 128 to 255 octets: The total number of upstream packets (including bad packets) received
+// that were 128..255 octets long, excluding framing bits but including FCS. (R) (mandatory)
+// (4-bytes)
+//
+// Packets 256 To 511 Octets
+// Packets 256 to 511 octets: The total number of upstream packets (including bad packets) received
+// that were 256..511 octets long, excluding framing bits but including FCS. (R) (mandatory)
+// (4-bytes)
+//
+// Packets 512 To 1023 Octets
+// Packets 512 to 1023 octets: The total number of upstream packets (including bad packets)
+// received that were 512..1-023 octets long, excluding framing bits but including FCS. (R)
+// (mandatory) (4-bytes)
+//
+// Packets 1024 To 1518 Octets
+// Packets 1024 to 1518 octets: The total number of upstream packets (including bad packets)
+// received that were 1024..1518 octets long, excluding framing bits, but including FCS. (R)
+// (mandatory) (4-bytes)
+//
+type EthernetFramePerformanceMonitoringHistoryDataDownstream struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ ethernetframeperformancemonitoringhistorydatadownstreamBME = &ManagedEntityDefinition{
+ Name: "EthernetFramePerformanceMonitoringHistoryDataDownstream",
+ ClassID: 321,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffff,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", PointerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("DropEvents", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("Octets", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("Packets", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("BroadcastPackets", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("MulticastPackets", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint32Field("CrcErroredPackets", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: Uint32Field("UndersizePackets", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: Uint32Field("OversizePackets", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ 11: Uint32Field("Packets64Octets", CounterAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, false, false, 11),
+ 12: Uint32Field("Packets65To127Octets", CounterAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, false, false, 12),
+ 13: Uint32Field("Packets128To255Octets", CounterAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, false, false, 13),
+ 14: Uint32Field("Packets256To511Octets", CounterAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, false, false, 14),
+ 15: Uint32Field("Packets512To1023Octets", CounterAttributeType, 0x0002, 0, mapset.NewSetWith(Read), false, false, false, 15),
+ 16: Uint32Field("Packets1024To1518Octets", CounterAttributeType, 0x0001, 0, mapset.NewSetWith(Read), false, false, false, 16),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewEthernetFramePerformanceMonitoringHistoryDataDownstream (class ID 321) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewEthernetFramePerformanceMonitoringHistoryDataDownstream(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*ethernetframeperformancemonitoringhistorydatadownstreamBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/ethernetframeperformancemonitoringhistorydataupstream.go b/vendor/github.com/opencord/omci-lib-go/generated/ethernetframeperformancemonitoringhistorydataupstream.go
new file mode 100644
index 0000000..f104580
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/ethernetframeperformancemonitoringhistorydataupstream.go
@@ -0,0 +1,171 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// EthernetFramePerformanceMonitoringHistoryDataUpstreamClassID is the 16-bit ID for the OMCI
+// Managed entity Ethernet frame performance monitoring history data upstream
+const EthernetFramePerformanceMonitoringHistoryDataUpstreamClassID ClassID = ClassID(322)
+
+var ethernetframeperformancemonitoringhistorydataupstreamBME *ManagedEntityDefinition
+
+// EthernetFramePerformanceMonitoringHistoryDataUpstream (class ID #322)
+// This ME collects PM data associated with upstream Ethernet frame delivery. It is based on the
+// Etherstats group of [IETF RFC 2819]. Instances of this ME are created and deleted by the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// NOTE 1 - Implementers are encouraged to consider the Ethernet frame extended PM ME defined in
+// clause-9.3.32, which collects the same counters in a more generalized way.
+//
+// Relationships
+// An instance of this ME is associated with an instance of a MAC bridge port configuration data.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of a MAC bridge port configuration
+// data. (R, setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 ME that
+// contains PM threshold values. Since no threshold value attribute number exceeds 7, a threshold
+// data 2 ME is optional. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Drop Events
+// Drop events: The total number of events in which packets were dropped due to a lack of
+// resources. This is not necessarily the number of packets dropped; it is the number of times this
+// event was detected. (R) (mandatory) (4-bytes)
+//
+// Octets
+// Octets: The total number of upstream octets received, including those in bad packets, excluding
+// framing bits, but including FCS. (R) (mandatory) (4-bytes)
+//
+// Packets
+// Packets: The total number of upstream packets received, including bad packets, broadcast packets
+// and multicast packets. (R) (mandatory) (4-bytes)
+//
+// Broadcast Packets
+// Broadcast packets: The total number of upstream good packets received that were directed to the
+// broadcast address. This does not include multicast packets. (R) (mandatory) (4-bytes)
+//
+// Multicast Packets
+// Multicast packets: The total number of upstream good packets received that were directed to a
+// multicast address. This does not include broadcast packets. (R) (mandatory) (4-bytes)
+//
+// Crc Errored Packets
+// CRC errored packets: The total number of upstream packets received that had a length (excluding
+// framing bits, but including FCS octets) of between 64-octets and 1518-octets, inclusive, but had
+// either a bad FCS with an integral number of octets (FCS error) or a bad FCS with a non-integral
+// number of octets (alignment error). (R) (mandatory) (4-bytes)
+//
+// Undersize Packets
+// Undersize packets: The total number of upstream packets received that were less than 64-octets
+// long, but were otherwise well formed (excluding framing bits, but including FCS). (R)
+// (mandatory) (4-bytes)
+//
+// Oversize Packets
+// NOTE 2 - If 2-000-byte Ethernet frames are supported, counts in this performance parameter are
+// not necessarily errors.
+//
+// Packets 64 Octets
+// Packets 64 octets: The total number of upstream received packets (including bad packets) that
+// were 64-octets long, excluding framing bits but including FCS. (R) (mandatory) (4-bytes)
+//
+// Packets 65 To 127 Octets
+// Packets 65 to 127 octets: The total number of upstream received packets (including bad packets)
+// that were 65..127 octets long, excluding framing bits but including FCS. (R) (mandatory)
+// (4-bytes)
+//
+// Packets 128 To 255 Octets
+// Packets 128 to 255 octets: The total number of upstream packets (including bad packets) received
+// that were 128..255 octets long, excluding framing bits but including FCS. (R) (mandatory)
+// (4-bytes)
+//
+// Packets 256 To 511 Octets
+// Packets 256 to 511 octets: The total number of upstream packets (including bad packets) received
+// that were 256..511 octets long, excluding framing bits but including FCS. (R) (mandatory)
+// (4-bytes)
+//
+// Packets 512 To 1023 Octets
+// Packets 512 to 1023 octets: The total number of upstream packets (including bad packets)
+// received that were 512..1-023 octets long, excluding framing bits but including FCS. (R)
+// (mandatory) (4-bytes)
+//
+// Packets 1024 To 1518 Octets
+// Packets 1024 to 1518 octets: The total number of upstream packets (including bad packets)
+// received that were 1024..1518 octets long, excluding framing bits, but including FCS. (R)
+// (mandatory) (4-bytes)
+//
+type EthernetFramePerformanceMonitoringHistoryDataUpstream struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ ethernetframeperformancemonitoringhistorydataupstreamBME = &ManagedEntityDefinition{
+ Name: "EthernetFramePerformanceMonitoringHistoryDataUpstream",
+ ClassID: 322,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffff,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", PointerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("DropEvents", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("Octets", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("Packets", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("BroadcastPackets", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("MulticastPackets", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint32Field("CrcErroredPackets", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: Uint32Field("UndersizePackets", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: Uint32Field("OversizePackets", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ 11: Uint32Field("Packets64Octets", CounterAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, false, false, 11),
+ 12: Uint32Field("Packets65To127Octets", CounterAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, false, false, 12),
+ 13: Uint32Field("Packets128To255Octets", CounterAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, false, false, 13),
+ 14: Uint32Field("Packets256To511Octets", CounterAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, false, false, 14),
+ 15: Uint32Field("Packets512To1023Octets", CounterAttributeType, 0x0002, 0, mapset.NewSetWith(Read), false, false, false, 15),
+ 16: Uint32Field("Packets1024To1518Octets", CounterAttributeType, 0x0001, 0, mapset.NewSetWith(Read), false, false, false, 16),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewEthernetFramePerformanceMonitoringHistoryDataUpstream (class ID 322) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewEthernetFramePerformanceMonitoringHistoryDataUpstream(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*ethernetframeperformancemonitoringhistorydataupstreamBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/ethernetperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/ethernetperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..9cdd51c
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/ethernetperformancemonitoringhistorydata.go
@@ -0,0 +1,163 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// EthernetPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity Ethernet performance monitoring history data
+const EthernetPerformanceMonitoringHistoryDataClassID ClassID = ClassID(24)
+
+var ethernetperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// EthernetPerformanceMonitoringHistoryData (class ID #24)
+// This ME collects some of the PM data for a physical Ethernet interface. Instances of this ME are
+// created and deleted by the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an instance of the PPTP Ethernet UNI.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the PPTP Ethernet UNI. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 and 2 MEs
+// that contains PM threshold values. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Fcs Errors
+// FCS errors: This attribute counts frames received on a particular interface that were an
+// integral number of octets in length but failed the FCS check. The count is incremented when the
+// MAC service returns the frameCheckError status to the link layer control (LLC) or other MAC
+// user. Received frames for which multiple error conditions are obtained are counted according to
+// the error status presented to the LLC. (R) (mandatory) (4-bytes)
+//
+// Excessive Collision Counter
+// Excessive collision counter: This attribute counts frames whose transmission failed due to
+// excessive collisions.-(R) (mandatory) (4-bytes)
+//
+// Late Collision Counter
+// Late collision counter: This attribute counts the number of times that a collision was detected
+// later than 512 bit times into the transmission of a packet. (R) (mandatory) (4-bytes)
+//
+// Frames Too Long
+// Frames too long: This attribute counts received frames that exceeded the maximum permitted frame
+// size. The count is incremented when the MAC service returns the frameTooLong status to the LLC.
+// (R) (mandatory) (4-bytes)
+//
+// Buffer Overflows On Receive
+// Buffer overflows on receive: This attribute counts the number of times that the receive buffer
+// overflowed. (R) (mandatory) (4-bytes)
+//
+// Buffer Overflows On Transmit
+// Buffer overflows on transmit: This attribute counts the number of times that the transmit buffer
+// overflowed. (R) (mandatory) (4-bytes)
+//
+// Single Collision Frame Counter
+// Single collision frame counter: This attribute counts successfully transmitted frames whose
+// transmission was delayed by exactly one collision. (R) (mandatory) (4-bytes)
+//
+// Multiple Collisions Frame Counter
+// Multiple collisions frame counter: This attribute counts successfully transmitted frames whose
+// transmission was delayed by more than one collision. (R) (mandatory) (4-bytes)
+//
+// Sqe Counter
+// SQE counter: This attribute counts the number of times that the SQE test error message was
+// generated by the PLS sublayer. (R) (mandatory) (4-bytes)
+//
+// Deferred Transmission Counter
+// Deferred transmission counter: This attribute counts frames whose first transmission attempt was
+// delayed because the medium was busy. The count does not include frames involved in collisions.
+// (R) (mandatory) (4-bytes)
+//
+// Internal Mac Transmit Error Counter
+// Internal MAC transmit error counter: This attribute counts frames whose transmission failed due
+// to an internal MAC sublayer transmit error. (R) (mandatory) (4-bytes)
+//
+// Carrier Sense Error Counter
+// Carrier sense error counter: This attribute counts the number of times that carrier sense was
+// lost or never asserted when attempting to transmit a frame. (R) (mandatory) (4-bytes)
+//
+// Alignment Error Counter
+// Alignment error counter: This attribute counts received frames that were not an integral number
+// of octets in length and did not pass the FCS check. (R) (mandatory) (4-bytes)
+//
+// Internal Mac Receive Error Counter
+// Internal MAC receive error counter: This attribute counts frames whose reception failed due to
+// an internal MAC sublayer receive error. (R) (mandatory) (4-bytes)
+//
+type EthernetPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ ethernetperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "EthernetPerformanceMonitoringHistoryData",
+ ClassID: 24,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffff,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", PointerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("FcsErrors", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("ExcessiveCollisionCounter", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("LateCollisionCounter", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("FramesTooLong", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("BufferOverflowsOnReceive", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint32Field("BufferOverflowsOnTransmit", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: Uint32Field("SingleCollisionFrameCounter", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: Uint32Field("MultipleCollisionsFrameCounter", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ 11: Uint32Field("SqeCounter", CounterAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, false, false, 11),
+ 12: Uint32Field("DeferredTransmissionCounter", CounterAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, false, false, 12),
+ 13: Uint32Field("InternalMacTransmitErrorCounter", CounterAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, false, false, 13),
+ 14: Uint32Field("CarrierSenseErrorCounter", CounterAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, false, false, 14),
+ 15: Uint32Field("AlignmentErrorCounter", CounterAttributeType, 0x0002, 0, mapset.NewSetWith(Read), false, false, false, 15),
+ 16: Uint32Field("InternalMacReceiveErrorCounter", CounterAttributeType, 0x0001, 0, mapset.NewSetWith(Read), false, false, false, 16),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewEthernetPerformanceMonitoringHistoryData (class ID 24) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewEthernetPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*ethernetperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/ethernetperformancemonitoringhistorydata2.go b/vendor/github.com/opencord/omci-lib-go/generated/ethernetperformancemonitoringhistorydata2.go
new file mode 100644
index 0000000..7503895
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/ethernetperformancemonitoringhistorydata2.go
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// EthernetPerformanceMonitoringHistoryData2ClassID is the 16-bit ID for the OMCI
+// Managed entity Ethernet performance monitoring history data 2
+const EthernetPerformanceMonitoringHistoryData2ClassID ClassID = ClassID(89)
+
+var ethernetperformancemonitoringhistorydata2BME *ManagedEntityDefinition
+
+// EthernetPerformanceMonitoringHistoryData2 (class ID #89)
+// This ME collects additional PM data for a physical Ethernet interface. Instances of this ME are
+// created and deleted by the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this Ethernet PM history data 2 ME is associated with an instance of the PPTP
+// Ethernet UNI.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the PPTP Ethernet UNI. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 ME that
+// contains PM threshold values. Since no threshold value attribute number exceeds 7, a threshold
+// data 2 ME is optional. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Pppoe Filtered Frame Counter
+// PPPoE filtered frame counter: This attribute counts the number of frames discarded due to PPPoE
+// filtering. (R) (mandatory) (4-bytes)
+//
+type EthernetPerformanceMonitoringHistoryData2 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ ethernetperformancemonitoringhistorydata2BME = &ManagedEntityDefinition{
+ Name: "EthernetPerformanceMonitoringHistoryData2",
+ ClassID: 89,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xe000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", PointerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("PppoeFilteredFrameCounter", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewEthernetPerformanceMonitoringHistoryData2 (class ID 89) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewEthernetPerformanceMonitoringHistoryData2(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*ethernetperformancemonitoringhistorydata2BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/ethernetperformancemonitoringhistorydata3.go b/vendor/github.com/opencord/omci-lib-go/generated/ethernetperformancemonitoringhistorydata3.go
new file mode 100644
index 0000000..10da39b
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/ethernetperformancemonitoringhistorydata3.go
@@ -0,0 +1,178 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// EthernetPerformanceMonitoringHistoryData3ClassID is the 16-bit ID for the OMCI
+// Managed entity Ethernet performance monitoring history data 3
+const EthernetPerformanceMonitoringHistoryData3ClassID ClassID = ClassID(296)
+
+var ethernetperformancemonitoringhistorydata3BME *ManagedEntityDefinition
+
+// EthernetPerformanceMonitoringHistoryData3 (class ID #296)
+// This ME collects PM data associated with an Ethernet interface. It includes parameters defined
+// in the Ethernet statistics group of [IETF RFC 2819] that are not already covered by previously
+// defined Ethernet monitoring MEs. The received direction is from the CPE towards the network
+// (upstream).
+//
+// NOTE 1 - Several of the same counters are available from the Ethernet frame PM history data MEs,
+// which are associated with MAC bridge ports. MAC bridge port association allows those MEs to be
+// used for any Ethernet flow, in both upstream and downstream directions, while the Ethernet PM
+// history data 3 ME can only be used on a physical IEEE 802.3 port.
+//
+// Instances of this ME are created and deleted by the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// NOTE 2 - Implementers are encouraged to consider the Ethernet frame extended PM ME defined in
+// clause-9.3.32, which collects the same counters in a more generalized way.
+//
+// Relationships
+// An instance of this ME is associated with an instance of the PPTP Ethernet UNI.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the PPTP Ethernet UNI. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 ME that
+// contains PM threshold values. Since no threshold value attribute number exceeds 7, a threshold
+// data 2 ME is optional. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Drop Events
+// Drop events: The total number of events in which packets were dropped due to a lack of
+// resources. This is not necessarily the number of packets dropped; it is the number of times this
+// event was detected. (R) (mandatory) (4-bytes)
+//
+// Octets
+// Octets: The total number of octets received from the CPE, including those in bad packets,
+// excluding framing bytes, but including FCS. (R) (mandatory) (4-bytes)
+//
+// Packets
+// Packets: The total number of packets received, including bad packets, broadcast packets and
+// multicast packets. (R) (mandatory) (4-bytes)
+//
+// Broadcast Packets
+// Broadcast packets: The total number of received good packets directed to the broadcast address.
+// This does not include multicast packets. (R) (mandatory) (4-bytes)
+//
+// Multicast Packets
+// Multicast packets: The total number of received good packets directed to a multicast address.
+// This does not include broadcast packets. (R) (mandatory) (4-bytes)
+//
+// Undersize Packets
+// Undersize packets: The total number of packets received that were less than 64 octets long, but
+// were otherwise well formed (excluding framing bits, but including FCS). (R) (mandatory)
+// (4-bytes)
+//
+// Fragments
+// Fragments: The total number of packets received that were less than 64 octets long, excluding
+// framing bits but including FCS octets, and had either a bad FCS with an integral number of
+// octets (FCS error) or a bad FCS with a non-integral number of octets (alignment error). It is
+// entirely normal for this attribute to increment. This is because it counts both runts (which are
+// normal occurrences due to collisions) and noise hits. (R) (mandatory) (4-bytes)
+//
+// Jabbers
+// Jabbers: The total number of packets received that were longer than 1518 octets, excluding
+// framing bits but including FCS octets, and had either a bad FCS with an integral number of
+// octets (FCS error) or a bad FCS with a non-integral number of octets (alignment error). The
+// range to detect jabber is between 20 ms and 150 ms. (R) (mandatory) (4-bytes)
+//
+// Packets 64 Octets
+// Packets 64 octets: The total number of received packets (including bad packets) that were
+// 64-octets long, excluding framing bits but including FCS. (R) (mandatory) (4-bytes)
+//
+// Packets 65 To 127 Octets
+// Packets 65 to 127 octets: The total number of received packets (including bad packets) that were
+// 65..127 octets long, excluding framing bits but including FCS. (R) (mandatory) (4-bytes)
+//
+// Packets 128 To 255 Octets
+// Packets 128 to 255 octets: The total number of packets (including bad packets) received that
+// were 128..255 octets long, excluding framing bits but including FCS. (R) (mandatory) (4-bytes)
+//
+// Packets 256 To 511 Octets
+// Packets 256 to 511 octets: The total number of packets (including bad packets) received that
+// were 256..511 octets long, excluding framing bits but including FCS. (R) (mandatory) (4-bytes)
+//
+// Packets 512 To 1023 Octets
+// Packets 512 to 1023 octets: The total number of packets (including bad packets) received that
+// were 512..1023 octets long, excluding framing bits but including FCS. (R) (mandatory) (4-bytes)
+//
+// Packets 1024 To 1518 Octets
+// Packets 1024 to 1518 octets: The total number of packets (including bad packets) received that
+// were 1024..1518 octets long, excluding framing bits but including FCS. (R) (mandatory) (4-bytes)
+//
+type EthernetPerformanceMonitoringHistoryData3 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ ethernetperformancemonitoringhistorydata3BME = &ManagedEntityDefinition{
+ Name: "EthernetPerformanceMonitoringHistoryData3",
+ ClassID: 296,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffff,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", PointerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("DropEvents", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("Octets", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("Packets", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("BroadcastPackets", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("MulticastPackets", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint32Field("UndersizePackets", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: Uint32Field("Fragments", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: Uint32Field("Jabbers", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ 11: Uint32Field("Packets64Octets", CounterAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, false, false, 11),
+ 12: Uint32Field("Packets65To127Octets", CounterAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, false, false, 12),
+ 13: Uint32Field("Packets128To255Octets", CounterAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, false, false, 13),
+ 14: Uint32Field("Packets256To511Octets", CounterAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, false, false, 14),
+ 15: Uint32Field("Packets512To1023Octets", CounterAttributeType, 0x0002, 0, mapset.NewSetWith(Read), false, false, false, 15),
+ 16: Uint32Field("Packets1024To1518Octets", CounterAttributeType, 0x0001, 0, mapset.NewSetWith(Read), false, false, false, 16),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewEthernetPerformanceMonitoringHistoryData3 (class ID 296) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewEthernetPerformanceMonitoringHistoryData3(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*ethernetperformancemonitoringhistorydata3BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/ethernetpseudowireparameters.go b/vendor/github.com/opencord/omci-lib-go/generated/ethernetpseudowireparameters.go
new file mode 100644
index 0000000..f21a994
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/ethernetpseudowireparameters.go
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// EthernetPseudowireParametersClassID is the 16-bit ID for the OMCI
+// Managed entity Ethernet pseudowire parameters
+const EthernetPseudowireParametersClassID ClassID = ClassID(400)
+
+var ethernetpseudowireparametersBME *ManagedEntityDefinition
+
+// EthernetPseudowireParameters (class ID #400)
+// This ME contains the Ethernet pseudowire parameters. Instances of this ME are created and
+// deleted by the OLT.
+//
+// Relationships
+// An instance of this ME is associated with an instance of the PW Ethernet configuration data ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the PW Ethernet configuration data
+// ME. (R, set-by-create) (mandatory) (2 bytes)
+//
+// Mtu
+// MTU: This attribute identifies the maximum transmission unit (bytes) that can be received from
+// the CPE in the upstream direction. Larger frames are discarded. (R, W, set-by-create)
+// (mandatory) (2 bytes)
+//
+type EthernetPseudowireParameters struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ ethernetpseudowireparametersBME = &ManagedEntityDefinition{
+ Name: "EthernetPseudowireParameters",
+ ClassID: 400,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0x8000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("Mtu", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewEthernetPseudowireParameters (class ID 400) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewEthernetPseudowireParameters(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*ethernetpseudowireparametersBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/extendedvlantaggingoperationconfigurationdata.go b/vendor/github.com/opencord/omci-lib-go/generated/extendedvlantaggingoperationconfigurationdata.go
new file mode 100644
index 0000000..c487804
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/extendedvlantaggingoperationconfigurationdata.go
@@ -0,0 +1,130 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// ExtendedVlanTaggingOperationConfigurationDataClassID is the 16-bit ID for the OMCI
+// Managed entity Extended VLAN tagging operation configuration data
+const ExtendedVlanTaggingOperationConfigurationDataClassID ClassID = ClassID(171)
+
+var extendedvlantaggingoperationconfigurationdataBME *ManagedEntityDefinition
+
+// ExtendedVlanTaggingOperationConfigurationData (class ID #171)
+// This ME organizes data associated with VLAN tagging. Regardless of its point of attachment, the
+// specified tagging operations refer to the upstream direction. Instances of this ME are created
+// and deleted by the OLT.
+//
+// Relationships
+// Zero or one instance of this ME may exist for an instance of any ME that can terminate or modify
+// an Ethernet stream.//// When this ME is associated with a UNI-side TP, it performs its upstream classification and
+// tagging operations before offering the upstream frame to other filtering, bridging or switching
+// functions. In the downstream direction, the defined inverse operation is the last operation
+// performed on the frame before offering it to the UNI-side termination.//// When this ME is associated with an ANI-side TP, it performs its upstream classification and
+// tagging operations as the last step before transmission to the OLT, after having received the
+// upstream frame from other filtering, bridging or switching functions. In the downstream
+// direction, the defined inverse operation is the first operation performed on the frame before
+// offering it to possible filter, bridge or switch functions.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute provides a unique number for each instance of this ME. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Association Type
+// When the extended VLAN tagging ME is associated with the ANI side, it behaves as an upstream
+// egress rule, and as a downstream ingress rule when the downstream mode attribute is equal to 0.
+// When the extended VLAN tagging ME is associated with the UNI side, the extended VLAN tagging ME
+// behaves as an upstream ingress rule, and as a downstream egress rule when the downstream mode
+// attribute is equal to 0.
+//
+// Received Frame Vlan Tagging Operation Table Max Size
+// Received frame VLAN tagging operation table max size: This attribute indicates the maximum
+// number of entries that can be set in the received frame VLAN tagging operation table. (R)
+// (mandatory) (2-bytes)
+//
+// Input Tpid
+// Input TPID: This attribute gives the special TPID value for operations on the input (filtering)
+// side of the table. Typical values include 0x88A8 and 0x9100. (R,-W) (mandatory) (2-bytes)
+//
+// Output Tpid
+// Output TPID: This attribute gives the special TPID value for operations on the output (tagging)
+// side of the table. Typical values include 0x88A8 and 0x9100. (R,-W) (mandatory) (2-bytes)
+//
+// Downstream Mode
+// All other values are reserved. (R, W) (mandatory) (1 byte)
+//
+// Received Frame Vlan Tagging Operation Table
+// 111 Set TPID-=-output TPID, DEI = 1
+//
+// Associated Me Pointer
+// NOTE 5 - When the association type is xDSL, the two MSBs may be used to indicate a bearer
+// channel.
+//
+// Dscp To P Bit Mapping
+// NOTE 6 - If certain bits in the DSCP field are to be ignored in the mapping process, the
+// attribute should be provisioned such that all possible values of those bits produce the same
+// P-bit mapping. This can be applied to the case where instead of full DSCP, the operator wishes
+// to adopt the priority mechanism based on IP precedence, which needs only the three MSBs of the
+// DSCP field.
+//
+type ExtendedVlanTaggingOperationConfigurationData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ extendedvlantaggingoperationconfigurationdataBME = &ManagedEntityDefinition{
+ Name: "ExtendedVlanTaggingOperationConfigurationData",
+ ClassID: 171,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ GetNext,
+ Set,
+ ),
+ AllowedAttributeMask: 0xff00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("AssociationType", EnumerationAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: Uint16Field("ReceivedFrameVlanTaggingOperationTableMaxSize", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read), false, false, false, 2),
+ 3: Uint16Field("InputTpid", UnsignedIntegerAttributeType, 0x2000, 34984, mapset.NewSetWith(Read, Write), false, false, false, 3),
+ 4: Uint16Field("OutputTpid", UnsignedIntegerAttributeType, 0x1000, 34984, mapset.NewSetWith(Read, Write), false, false, false, 4),
+ 5: ByteField("DownstreamMode", EnumerationAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, false, false, 5),
+ 6: TableField("ReceivedFrameVlanTaggingOperationTable", TableAttributeType, 0x0400, TableInfo{nil, 16}, mapset.NewSetWith(Read, Write), false, false, false, 6),
+ 7: Uint16Field("AssociatedMePointer", PointerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 7),
+ 8: MultiByteField("DscpToPBitMapping", OctetsAttributeType, 0x0100, 24, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"), mapset.NewSetWith(Read, Write), false, true, false, 8),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewExtendedVlanTaggingOperationConfigurationData (class ID 171) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewExtendedVlanTaggingOperationConfigurationData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*extendedvlantaggingoperationconfigurationdataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/fastchannelconfigurationprofile.go b/vendor/github.com/opencord/omci-lib-go/generated/fastchannelconfigurationprofile.go
new file mode 100644
index 0000000..00420ab
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/fastchannelconfigurationprofile.go
@@ -0,0 +1,149 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// FastChannelConfigurationProfileClassID is the 16-bit ID for the OMCI
+// Managed entity FAST channel configuration profile
+const FastChannelConfigurationProfileClassID ClassID = ClassID(432)
+
+var fastchannelconfigurationprofileBME *ManagedEntityDefinition
+
+// FastChannelConfigurationProfile (class ID #432)
+// This ME contains the FAST channel configuration profile for an xDSL UNI. An instance of this ME
+// is created and deleted by the OLT.
+//
+// Relationships
+// An instance of this ME may be associated with zero or more instances of the PPTP xDSL UNI part
+// 1.
+//
+// Attributes
+// Maximum Net Data Rate Maxndr
+// Maximum net data rate (MAXNDR): This attribute specifies the value of the maximum net data rate.
+// See clause 11.4.2.2 of [ITU-T G.9701]. Valid values range from 0 (0-kbit/s) to 4294967295
+// (2^32-1-kbit/s). See clause 7.2.1.1 of [ITUT-G.997.2]. (R, W) (mandatory) (4 bytes)
+//
+// Minimum Expected Throughput Minetr
+// Minimum expected throughput (MINETR): This attribute specifies the value of the minimum expected
+// throughput. See clause 11.4.2.1 of [ITU-T G.9701]. Valid values range from 0 (0-kbit/s) to
+// 4294967295 (2^32-1-kbit/s). See clause-7.2.1.2 of [ITU-T G.997.2]. (R, W) (mandatory) (4 bytes)
+//
+// Maximum Gamma Data Rate Maxgdr
+// Maximum gamma data rate (MAXGDR): This attribute specifies the maximum value of the GDR (see
+// clause 7.11.1.3). The GDR shall not exceed MAXGDR at the start of showtime and during showtime.
+// Valid values range from 0 (0-kbit/s) to 4294967295 (2^32-1-kbit/s). See clause 7.2.1.3 of [ITU-T
+// G.997.2]. (R, W) (mandatory) (4 bytes)
+//
+// Minimum Gamma Data Rate Mingdr
+// Minimum gamma data rate (MINGDR): This attribute specifies the minimum value of the GDR (see
+// clause 7.11.1.3). The GDR may be lower than MINGDR. If the GDR is lower than MINGDR at
+// initialization or when GDR becomes lower than MINGDR during showtime, a TCA occurs. Valid values
+// range from 0 (0-kbit/s) to 4294967295 (2^32-1-kbit/s). See clause 7.2.1.4 of [ITU-T G.997.2].
+// (R, W) (mandatory) (4 bytes)
+//
+// Maximum Delay Delaymax
+// Maximum delay (DELAYMAX): This attribute specifies the maximum allowed delay for retransmission.
+// See clause 9.8 of [ITU-T G.9701]. The ITUT-G.9701 control parameter delay_max is set to the same
+// value as the maximum delay. See clause 11.4.2.3 of [ITU-T G.9701]. Valid values range from 4
+// (1-ms) to 252 (63-ms) in steps of 0.25-ms. See clause 7.2.2.1 of [ITUT-G.997.2]. (R, W)
+// (mandatory) (4 bytes)
+//
+// Minimum Impulse Noise Protection Against Shine Inpmin_Shine
+// Minimum impulse noise protection against SHINE (INPMIN_SHINE): This attribute specifies the
+// minimum INP against SHINE. See clause 9.8 of [ITU-T G.9701]. The ITU-T G.9701 control parameter
+// INP_min_shine is set to the same value as the minimum INP against SHINE. See clause 11.4.2.4 of
+// [ITU-T G.9701]. Valid values range from 0 to 520 (520 symbol periods). See clause 7.2.2.2 of
+// [ITUT G.997.2]. (R, W) (mandatory) (2-bytes)
+//
+// Shine Ratio Shineratio
+// SHINE ratio (SHINERATIO): This attribute specifies the SHINE ratio that is used in the
+// definition of the expected throughput rate (ETR). See clause 9.8 of [ITUT-G.9701]. The ITU-T
+// G.9701 control parameter SHINEratio is set to the same value as the SHINE ratio. See clause
+// 11.4.2.5 of [ITU-T G.9701]. The value is expressed in units of 0.001, Valid values range from 0
+// to 100 (0.01) in steps of 0.001. See clause 7.2.2.3 of [ITU-T G.997.2]. (R, W) (mandatory)
+// (1-byte)
+//
+// Minimum Impulse Noise Protection Against Rein Inpmin_Rein
+// Minimum impulse noise protection against REIN (INPMIN_REIN): This attribute specifies the
+// minimum INP against REIN. See clause 9.8 of [ITU-T G.9701]. The ITU-T G.9701 control parameter
+// INP_min_rein is set to the same value as the minimum INP against REIN. See clause 11.4.2.6 of
+// [ITU-T G.9701]. Valid values range from 0 to 63 (63-symbol periods). See clause 7.2.2.4 of
+// [ITU-T G.997.2]. (R, W) (mandatory) (1 byte)
+//
+// Rein Inter_Arrival Time Iat_Rein
+// (R, W) (mandatory) (1 byte)
+//
+// Minimum Reed_Solomon Rfec_Nfec Ratio Rnratio
+// Minimum Reed-Solomon RFEC/NFEC ratio (RNRATIO): This attribute specifies the minimal required
+// ratio, RFEC/NFEC, of Reed-Solomon code parameters. The ITU-T G.9701 control parameter rnratio is
+// set to the same value as the minimum Reed-Solomon RFEC/NFEC ratio. See clause 11.4.2.8 of
+// [ITUT-G.9701]. The value is expressed in units of 1/32, Valid values range from 0 to 8 (1/4).
+// See clause 7.2.2.6 of [ITU-T G.997.2]. (R, W) (mandatory) (1 byte)
+//
+// Rtx_Tc Testmode Rtx_Testmode
+// RTX-TC testmode (RTX_TESTMODE): This Boolean attribute specifies whether the retransmission test
+// mode defined in clause 9.8.3.1.2 [ITU-T G.9701] is enabled-(true) or disabled (disabled). See
+// clause 7.2.2.7 of [ITU-T G.997.2]. (R,-W) (optional) (1 byte)
+//
+type FastChannelConfigurationProfile struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ fastchannelconfigurationprofileBME = &ManagedEntityDefinition{
+ Name: "FastChannelConfigurationProfile",
+ ClassID: 432,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffc0,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint32Field("MaximumNetDataRateMaxndr", UnknownAttributeType, 0x0000, 0, mapset.NewSetWith(Read, Write), false, false, false, 0),
+ 1: Uint32Field("MinimumExpectedThroughputMinetr", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: Uint32Field("MaximumGammaDataRateMaxgdr", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, Write), false, false, false, 2),
+ 3: Uint32Field("MinimumGammaDataRateMingdr", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), false, false, false, 3),
+ 4: Uint32Field("MaximumDelayDelaymax", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, false, false, 4),
+ 5: Uint16Field("MinimumImpulseNoiseProtectionAgainstShineInpminShine", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, false, false, 5),
+ 6: ByteField("ShineRatioShineratio", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, Write), false, false, false, 6),
+ 7: ByteField("MinimumImpulseNoiseProtectionAgainstReinInpminRein", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, Write), false, false, false, 7),
+ 8: ByteField("ReinInterArrivalTimeIatRein", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, Write), false, false, false, 8),
+ 9: ByteField("MinimumReedSolomonRfecNfecRatioRnratio", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, Write), false, false, false, 9),
+ 10: ByteField("RtxTcTestmodeRtxTestmode", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read, Write), false, true, false, 10),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewFastChannelConfigurationProfile (class ID 432) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewFastChannelConfigurationProfile(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*fastchannelconfigurationprofileBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/fastdatapathconfigurationprofile.go b/vendor/github.com/opencord/omci-lib-go/generated/fastdatapathconfigurationprofile.go
new file mode 100644
index 0000000..b4dea51
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/fastdatapathconfigurationprofile.go
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// FastDataPathConfigurationProfileClassID is the 16-bit ID for the OMCI
+// Managed entity FAST data path configuration profile
+const FastDataPathConfigurationProfileClassID ClassID = ClassID(433)
+
+var fastdatapathconfigurationprofileBME *ManagedEntityDefinition
+
+// FastDataPathConfigurationProfile (class ID #433)
+// This ME contains FAST the data path configuration profile for an xDSL UNI. An instance of this
+// ME is created and deleted by the OLT.
+//
+// Relationships
+// An instance of this ME may be associated with zero or more instances of the PPTP xDSL UNI part
+// 1.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. The value 0 is
+// reserved. (R, set-by-create) (mandatory) (2 bytes)
+//
+// Tps_Tc Testmode Tps_Testmode
+// TPS-TC testmode (TPS_TESTMODE): This Boolean attribute specifies whether the TPSTC test mode
+// defined in clause 8.3.1 [ITU-T G.9701] is enabled (true) or disabled (disabled). See clause
+// 7.3.1 of [ITUT-G.997.2]. (R,-W) (mandatory) (1 byte)
+//
+type FastDataPathConfigurationProfile struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ fastdatapathconfigurationprofileBME = &ManagedEntityDefinition{
+ Name: "FastDataPathConfigurationProfile",
+ ClassID: 433,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0x8000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("TpsTcTestmodeTpsTestmode", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewFastDataPathConfigurationProfile (class ID 433) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewFastDataPathConfigurationProfile(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*fastdatapathconfigurationprofileBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/fastlineinventoryandstatusdatapart2.go b/vendor/github.com/opencord/omci-lib-go/generated/fastlineinventoryandstatusdatapart2.go
new file mode 100644
index 0000000..3a59574
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/fastlineinventoryandstatusdatapart2.go
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// FastLineInventoryAndStatusDataPart2ClassID is the 16-bit ID for the OMCI
+// Managed entity FAST line inventory and status data part 2
+const FastLineInventoryAndStatusDataPart2ClassID ClassID = ClassID(436)
+
+var fastlineinventoryandstatusdatapart2BME *ManagedEntityDefinition
+
+// FastLineInventoryAndStatusDataPart2 (class ID #436)
+// This ME contains part 3 of the FAST line inventory and status data with attributes specific to
+// [ITU T G.997.2]. The ONU automatically creates or deletes an instance of this ME upon the
+// creation or deletion of a PPTP xDSL UNI part 1.
+//
+// Relationships
+// This is one of the status data MEs associated with an xDSL UNI. It is required only if FAST is
+// supported by the PPTP. The ONU automatically creates or deletes an instance of this ME upon
+// creation or deletion of a PPTP xDSL UNI part 1 that supports these attributes.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the PPTP xDSL UNI part 1. (R)
+// (mandatory) (2-bytes)
+//
+// Date_Time_Stamping Of Last Successful Downstream Fra Operation Stamp_Frads
+// (R) (optional) (7 bytes)
+//
+// Date_Time_Stamping Of Last Successful Upstream Fra Operation Stamp_Fraus
+// Date/time-stamping of last successful upstream FRA operation (STAMP-FRAus): This parameter
+// reports the date/time of the last successful FTU-O initiated FRA execution that has modified the
+// bits allocation. See clause 7.10.14.6 of [ITUT-G.997.2]. The format of this parameter is the
+// same as STAMPTESTNE. (R) (optional) (7 bytes)
+//
+// Date_Time_Stamping Of Last Successful Downstream Rpa Operation Stamp_Rpads
+// Date/time-stamping of last successful downstream RPA operation (STAMP-RPAds): This parameter
+// reports the date/time of the last successful FTU-R initiated RPA execution that has modified the
+// bits allocation for the RMC. See clause-7.10.14.7 of [ITU-T G.997.2]. The format of this
+// parameter is the same as STAMP-TEST-NE. (R) (optional) (7 bytes)
+//
+// Date_Time_Stamping Of Last Successful Upstream Rpa Operation Stamp_Rpaus
+// Date/time-stamping of last successful upstream RPA operation (STAMP-RPAus): This parameter
+// reports the date/time of the last successful FTU-O initiated RPA execution that has modified the
+// bits allocation for the RMC. See clause-7.10.14.8 of [ITU-T G.997.2]. The format of this
+// parameter is the same as STAMP-TEST-NE. (R) (optional) (7 bytes)
+//
+// Date_Time_Stamping Of Last Successful Downstream Tiga Operation Stamp_Tiga
+// Date/time-stamping of last successful downstream TIGA operation (STAMP-TIGA): This parameter
+// reports the date/time of the last successful FTU-O initiated TIGA execution. See clause
+// 7.10.14.9 of [ITU-T G.997.2]. The format of this parameter is the same as STAMP-TEST-NE. (R)
+// (optional) (7 bytes)
+//
+type FastLineInventoryAndStatusDataPart2 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ fastlineinventoryandstatusdatapart2BME = &ManagedEntityDefinition{
+ Name: "FastLineInventoryAndStatusDataPart2",
+ ClassID: 436,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ ),
+ AllowedAttributeMask: 0xf800,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: MultiByteField("DateTimeStampingOfLastSuccessfulDownstreamFraOperationStampFrads", OctetsAttributeType, 0x8000, 7, toOctets("AAAAAAAAAA=="), mapset.NewSetWith(Read), false, true, false, 1),
+ 2: MultiByteField("DateTimeStampingOfLastSuccessfulUpstreamFraOperationStampFraus", OctetsAttributeType, 0x4000, 7, toOctets("AAAAAAAAAA=="), mapset.NewSetWith(Read), false, true, false, 2),
+ 3: MultiByteField("DateTimeStampingOfLastSuccessfulDownstreamRpaOperationStampRpads", OctetsAttributeType, 0x2000, 7, toOctets("AAAAAAAAAA=="), mapset.NewSetWith(Read), false, true, false, 3),
+ 4: MultiByteField("DateTimeStampingOfLastSuccessfulUpstreamRpaOperationStampRpaus", OctetsAttributeType, 0x1000, 7, toOctets("AAAAAAAAAA=="), mapset.NewSetWith(Read), false, true, false, 4),
+ 5: MultiByteField("DateTimeStampingOfLastSuccessfulDownstreamTigaOperationStampTiga", OctetsAttributeType, 0x0800, 7, toOctets("AAAAAAAAAA=="), mapset.NewSetWith(Read), false, true, false, 5),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewFastLineInventoryAndStatusDataPart2 (class ID 436) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewFastLineInventoryAndStatusDataPart2(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*fastlineinventoryandstatusdatapart2BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/fastvectoringlineconfigurationextensions.go b/vendor/github.com/opencord/omci-lib-go/generated/fastvectoringlineconfigurationextensions.go
new file mode 100644
index 0000000..7d44003
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/fastvectoringlineconfigurationextensions.go
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// FastVectoringLineConfigurationExtensionsClassID is the 16-bit ID for the OMCI
+// Managed entity FAST vectoring line configuration extensions
+const FastVectoringLineConfigurationExtensionsClassID ClassID = ClassID(434)
+
+var fastvectoringlineconfigurationextensionsBME *ManagedEntityDefinition
+
+// FastVectoringLineConfigurationExtensions (class ID #434)
+// This ME extends FAST line configuration MEs with attributes that are specific to vectoring. An
+// instance of this ME is created and deleted by the OLT.
+//
+// Relationships
+// An instance of this ME may be associated with zero or more instances of an xDSL UNI.//// The overall FAST line configuration MEs is modelled in several parts, all of which are
+// associated together through a common ME ID (the client PPTP xDSL UNI part 3 has a single
+// pointer, which refers to the entire set of line configuration parts).
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. The value 0 is
+// reserved. (R, set-by-create) (mandatory) (2 bytes)
+//
+// Fext Cancellation Enabling_Disabling Upstream Fext_To_Cancel_Enableus
+// FEXT cancellation enabling/disabling upstream (FEXT_TO_CANCEL_ENABLEus): A value of 1 enables
+// and a value of 0 disables FEXT cancellation in the upstream direction from all the other
+// vectored lines into the line in the vectored group. See clause 7.1.7.2 of [ITU-T G.997.2].
+// (R,-W) (mandatory) (1-byte)
+//
+// Fext Cancellation Enabling_Disabling Downstream Fext_To_Cancel_Enableds
+// FEXT cancellation enabling/disabling downstream (FEXT_TO_CANCEL_ENABLEds): A value of 1 enables
+// and a value of 0 disables FEXT cancellation in the downstream direction from all the other
+// vectored lines into the line in the vectored group. See clause 7.1.7.1 of [ITUT-G.997.2]. (R,-W)
+// (mandatory) (1-byte)
+//
+type FastVectoringLineConfigurationExtensions struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ fastvectoringlineconfigurationextensionsBME = &ManagedEntityDefinition{
+ Name: "FastVectoringLineConfigurationExtensions",
+ ClassID: 434,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xc000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("FextCancellationEnablingDisablingUpstreamFextToCancelEnableus", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: ByteField("FextCancellationEnablingDisablingDownstreamFextToCancelEnableds", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, Write), false, false, false, 2),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewFastVectoringLineConfigurationExtensions (class ID 434) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewFastVectoringLineConfigurationExtensions(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*fastvectoringlineconfigurationextensionsBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/fastxtu-cperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/fastxtu-cperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..a051055
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/fastxtu-cperformancemonitoringhistorydata.go
@@ -0,0 +1,105 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// FastXtuCPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity FAST xTU-C performance monitoring history data
+const FastXtuCPerformanceMonitoringHistoryDataClassID ClassID = ClassID(437)
+
+var fastxtucperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// FastXtuCPerformanceMonitoringHistoryData (class ID #437)
+// This ME collects PM data on the xTU C to xTU R path as seen from the xTU-C. Instances of this ME
+// are created and deleted by the OLT.
+//
+// Relationships
+// An instance of this ME is associated with an xDSL UNI.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the PPTP xDSL UNI part 1. (R, set-
+// by-create) (mandatory) (2 bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1 byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 and 2 MEs
+// that contain PM threshold values. (R, W, set-by-create) (mandatory) (2 bytes)
+//
+// Successful Fra Counter
+// Successful FRA counter: This attribute counts the successful FRA primitives (success_FRA). The
+// successful FRA primitive (success_FRA) is defined in clause 11.3.1.6 of [ITU-T G.9701]. See
+// clause 7.7.22 of [ITU-T G.997.2]. (R) (mandatory) (4-bytes)
+//
+// Successful Rpa Counter
+// Successful RPA counter: This attribute counts the successful RPA primitives (success_RPA). The
+// successful RPA primitive (success_RPA) is defined in clause 11.3.1.6 of [ITU-T G.9701]. See
+// clause 7.7.23 of [ITU-T G.997.2] (R) (optional) (4 bytes)
+//
+// Successful Tiga Counter
+// Successful TIGA counter: This attribute counts the successful TIGA primitives (success_TIGA).
+// The successful TIGA primitive (success_TIGA) is defined in clause 11.3.1.6 of [ITU-T G.9701].
+// Reported only with the near-end measured time, invalid data flag and timestamp. See clause
+// 7.7.24 of [ITUT-G.997.2] (R) (optional) (4 bytes)
+//
+type FastXtuCPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ fastxtucperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "FastXtuCPerformanceMonitoringHistoryData",
+ ClassID: 437,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xf800,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("SuccessfulFraCounter", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("SuccessfulRpaCounter", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, true, false, 4),
+ 5: Uint32Field("SuccessfulTigaCounter", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, true, false, 5),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewFastXtuCPerformanceMonitoringHistoryData (class ID 437) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewFastXtuCPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*fastxtucperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/fastxtu-rperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/fastxtu-rperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..5114d6b
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/fastxtu-rperformancemonitoringhistorydata.go
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// FastXtuRPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity FAST xTU-R performance monitoring history data
+const FastXtuRPerformanceMonitoringHistoryDataClassID ClassID = ClassID(438)
+
+var fastxturperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// FastXtuRPerformanceMonitoringHistoryData (class ID #438)
+// This ME collects PM data of the xTU C to xTU R path as seen from the xTU-R. Instances of this ME
+// are created and deleted by the OLT. For a complete discussion of generic PM architecture, refer
+// to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an xDSL UNI.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the PPTP xDSL UNI part 1. (R, set-
+// by-create) (mandatory) (2 bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1 byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 and 2 MEs
+// that contain PM threshold values. (R, W, set-by-create) (mandatory) (2 bytes)
+//
+// Successful Fra Counter
+// Successful FRA counter: This attribute counts the successful FRA primitives (success_FRA). The
+// successful FRA primitive (success_FRA) is defined in clause 11.3.1.6 of [ITU-T G.9701]. See
+// clause 7.7.22 of [ITU-T G.997.2] (R) (mandatory) (4-bytes)
+//
+// Successful Rpa Counter
+// Successful RPA counter: This attribute counts the successful RPA primitives (success_RPA). The
+// successful RPA primitive (success_RPA) is defined in clause 11.3.1.6 of [ITU-T G.9701]. See
+// clause 7.7.23 of [ITU-T G.997.2] (R) (optional) (4 bytes)
+//
+type FastXtuRPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ fastxturperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "FastXtuRPerformanceMonitoringHistoryData",
+ ClassID: 438,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xf000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("SuccessfulFraCounter", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("SuccessfulRpaCounter", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, true, false, 4),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewFastXtuRPerformanceMonitoringHistoryData (class ID 438) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewFastXtuRPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*fastxturperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/galethernetperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/galethernetperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..30b630f
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/galethernetperformancemonitoringhistorydata.go
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// GalEthernetPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity GAL Ethernet performance monitoring history data
+const GalEthernetPerformanceMonitoringHistoryDataClassID ClassID = ClassID(276)
+
+var galethernetperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// GalEthernetPerformanceMonitoringHistoryData (class ID #276)
+// This ME collects PM data associated with a GEM IW TP when the GEM layer supports an Ethernet
+// service. Instances of this ME are created and deleted by the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an instance of the GEM IW TP ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the GEM IW TP. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 ME that
+// contains PM threshold values. Since no threshold value attribute number exceeds 7, a threshold
+// data 2 ME is optional. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Discarded Frames
+// Discarded frames: This attribute counts the number of downstream GEM frames discarded for any
+// reason [erroneous frame check sequence (FCS), too long length, buffer overflow, etc.]. (R)
+// (mandatory) (4-bytes)
+//
+type GalEthernetPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ galethernetperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "GalEthernetPerformanceMonitoringHistoryData",
+ ClassID: 276,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xe000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", PointerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("DiscardedFrames", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewGalEthernetPerformanceMonitoringHistoryData (class ID 276) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewGalEthernetPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*galethernetperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/galethernetprofile.go b/vendor/github.com/opencord/omci-lib-go/generated/galethernetprofile.go
new file mode 100644
index 0000000..569e146
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/galethernetprofile.go
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// GalEthernetProfileClassID is the 16-bit ID for the OMCI
+// Managed entity GAL Ethernet profile
+const GalEthernetProfileClassID ClassID = ClassID(272)
+
+var galethernetprofileBME *ManagedEntityDefinition
+
+// GalEthernetProfile (class ID #272)
+// This ME organizes data that describe the gigabit-capable passive optical network transmission
+// convergence layer (GTC) adaptation layer processing functions of the ONU for Ethernet services.
+// It is used with the GEM IW TP ME.
+//
+// Instances of this ME are created and deleted on request of the OLT.
+//
+// Relationships
+// An instance of this ME may be associated with zero or more instances of the GEM IW TP ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Maximum Gem Payload Size
+// Maximum GEM payload size: This attribute defines the maximum payload size generated in the
+// associated GEM IW TP ME. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+type GalEthernetProfile struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ galethernetprofileBME = &ManagedEntityDefinition{
+ Name: "GalEthernetProfile",
+ ClassID: 272,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0x8000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("MaximumGemPayloadSize", UnsignedIntegerAttributeType, 0x8000, 48, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewGalEthernetProfile (class ID 272) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewGalEthernetProfile(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*galethernetprofileBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/geminterworkingterminationpoint.go b/vendor/github.com/opencord/omci-lib-go/generated/geminterworkingterminationpoint.go
new file mode 100644
index 0000000..6c70980
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/geminterworkingterminationpoint.go
@@ -0,0 +1,117 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// GemInterworkingTerminationPointClassID is the 16-bit ID for the OMCI
+// Managed entity GEM interworking termination point
+const GemInterworkingTerminationPointClassID ClassID = ClassID(266)
+
+var geminterworkingterminationpointBME *ManagedEntityDefinition
+
+// GemInterworkingTerminationPoint (class ID #266)
+// An instance of this ME represents a point in the ONU where the IW of a bearer service (usually
+// Ethernet) to the GEM layer takes place. At this point, GEM packets are generated from the bearer
+// bit stream (e.g., Ethernet) or the bearer bit stream is reconstructed from GEM packets.
+//
+// Instances of this ME are created and deleted by the OLT.
+//
+// Relationships
+// One instance of this ME exists for each transformation of a data stream into GEM frames and vice
+// versa.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Gem Port Network Ctp Connectivity Pointer
+// GEM port network CTP connectivity pointer: This attribute points to an instance of the GEM port
+// network CTP. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Interworking Option
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Service Profile Pointer
+// NOTE - The video return path (VRP) service profile is defined in [ITU-T G.984.4].
+//
+// Interworking Termination Point Pointer
+// In all other GEM services, the relationship between the related service TP and this GEM IW TP is
+// derived from other ME relations; this attribute is set to a null pointer and not used. (R,-W,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Pptp Counter
+// PPTP counter: This value reports the number of PPTP ME instances associated with this GEM IW TP.
+// (R) (optional) (1-byte)
+//
+// Operational State
+// Operational state: This attribute indicates whether the ME is capable of performing its
+// function. Valid values are enabled (0) and disabled (1). (R) (optional) (1-byte)
+//
+// Gal Profile Pointer
+// (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Gal Loopback Configuration
+// The default value of this attribute is 0. When the IW option is 6 (downstream broadcast), this
+// attribute is not used. (R,-W) (mandatory) (1-byte)
+//
+type GemInterworkingTerminationPoint struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ geminterworkingterminationpointBME = &ManagedEntityDefinition{
+ Name: "GemInterworkingTerminationPoint",
+ ClassID: 266,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xff00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("GemPortNetworkCtpConnectivityPointer", PointerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: ByteField("InterworkingOption", EnumerationAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint16Field("ServiceProfilePointer", PointerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ 4: Uint16Field("InterworkingTerminationPointPointer", PointerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ 5: ByteField("PptpCounter", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, true, false, 5),
+ 6: ByteField("OperationalState", EnumerationAttributeType, 0x0400, 0, mapset.NewSetWith(Read), true, true, false, 6),
+ 7: Uint16Field("GalProfilePointer", PointerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 7),
+ 8: ByteField("GalLoopbackConfiguration", EnumerationAttributeType, 0x0100, 0, mapset.NewSetWith(Read, Write), false, false, false, 8),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewGemInterworkingTerminationPoint (class ID 266) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewGemInterworkingTerminationPoint(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*geminterworkingterminationpointBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/gemportnetworkctp.go b/vendor/github.com/opencord/omci-lib-go/generated/gemportnetworkctp.go
new file mode 100644
index 0000000..2e7ce2b
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/gemportnetworkctp.go
@@ -0,0 +1,146 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// GemPortNetworkCtpClassID is the 16-bit ID for the OMCI
+// Managed entity GEM port network CTP
+const GemPortNetworkCtpClassID ClassID = ClassID(268)
+
+var gemportnetworkctpBME *ManagedEntityDefinition
+
+// GemPortNetworkCtp (class ID #268)
+// This ME represents the termination of a GEM port on an ONU. This ME aggregates connectivity
+// functionality from the network view and alarms from the network element view as well as
+// artefacts from trails.
+//
+// Instances of the GEM port network CTP ME are created and deleted by the OLT. An instance of GEM
+// port network CTP can be deleted only when no GEM IW TP or GEM port network CTP PM history data
+// are associated with it. It is the responsibility of the OLT to make sure that the ONU
+// configuration meets this condition.
+//
+// In ITU-T G.984 systems, when a GEM port network CTP is created, its encryption state is by
+// default not encrypted. If the OLT wishes to configure the GEM port to use encryption, it must
+// send the appropriate PLOAM message. This applies equally to new CTPs and to CTPs that are re-
+// created after an MIB reset.
+//
+// In ITU-T G.987 systems, GEM ports are dynamically encrypted. If it is intended to encrypt the
+// GEM port, the OLT must configure a key ring to be used, and the key must be known to the ONU at
+// run time.
+//
+// Relationships
+// An instance of the GEM port network CTP ME may be associated with an instance of the T-CONT and
+// GEM IW TP MEs.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Port_Id
+// NOTE 1 - While nothing forbids the existence of several GEM port network CTPs with the same
+// port-ID value, downstream traffic is modelled as being delivered to all such GEM port network
+// CTPs. Be aware of potential difficulties associated with defining downstream flows and
+// aggregating PM statistics.
+//
+// T_Cont Pointer
+// T-CONT pointer: This attribute points to a T-CONT instance. (R,-W, setbycreate) (mandatory)
+// (2-bytes)
+//
+// Direction
+// Direction: This attribute specifies whether the GEM port is used for UNI-to-ANI (1), ANI-to-UNI
+// (2), or bidirectional (3) connection. (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Traffic Management Pointer For Upstream
+// Traffic management pointer for upstream: If the traffic management option attribute in the ONU-G
+// ME is 0 (priority controlled) or 2 (priority and rate controlled), this pointer specifies the
+// priority queue ME serving this GEM port network CTP. If the traffic management option attribute
+// is 1 (rate controlled), this attribute redundantly points to the TCONT serving this GEM port
+// network CTP. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Traffic Descriptor Profile Pointer For Upstream
+// See also Appendix II.
+//
+// Uni Counter
+// UNI counter: This attribute reports the number of instances of UNI-G ME associated with this GEM
+// port network CTP. (R) (optional) (1-byte)
+//
+// Priority Queue Pointer For Down Stream
+// NOTE 2 - If the GEM port network CTP is associated with more than one UNI (downstream
+// multicast), the downstream priority queue pointer defines a pattern (e.g., queue number 3 for a
+// given UNI) to be replicated (i.e., to queue number 3) at the other affected UNIs.
+//
+// Encryption State
+// Encryption state: This attribute indicates the current state of the GEM port network CTP's
+// encryption. Legal values are defined to be the same as those of the security mode attribute of
+// the ONU2-G, with the exception that attribute value 0 indicates an unencrypted GEM port. (R)
+// (optional) (1-byte)
+//
+// Traffic Descriptor Profile Pointer For Downstream
+// See also Appendix II.
+//
+// Encryption Key Ring
+// Other values are reserved.
+//
+type GemPortNetworkCtp struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ gemportnetworkctpBME = &ManagedEntityDefinition{
+ Name: "GemPortNetworkCtp",
+ ClassID: 268,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffc0,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("PortId", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: Uint16Field("TContPointer", PointerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: ByteField("Direction", EnumerationAttributeType, 0x2000, 3, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ 4: Uint16Field("TrafficManagementPointerForUpstream", PointerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ 5: Uint16Field("TrafficDescriptorProfilePointerForUpstream", PointerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 5),
+ 6: ByteField("UniCounter", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, true, false, 6),
+ 7: Uint16Field("PriorityQueuePointerForDownStream", PointerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 7),
+ 8: ByteField("EncryptionState", EnumerationAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, true, false, 8),
+ 9: Uint16Field("TrafficDescriptorProfilePointerForDownstream", PointerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 9),
+ 10: ByteField("EncryptionKeyRing", EnumerationAttributeType, 0x0040, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 10),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewGemPortNetworkCtp (class ID 268) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewGemPortNetworkCtp(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*gemportnetworkctpBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/gemportnetworkctpperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/gemportnetworkctpperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..eb01e50
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/gemportnetworkctpperformancemonitoringhistorydata.go
@@ -0,0 +1,124 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// GemPortNetworkCtpPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity GEM port network CTP performance monitoring history data
+const GemPortNetworkCtpPerformanceMonitoringHistoryDataClassID ClassID = ClassID(341)
+
+var gemportnetworkctpperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// GemPortNetworkCtpPerformanceMonitoringHistoryData (class ID #341)
+// This ME collects GEM frame PM data associated with a GEM port network CTP. Instances of this ME
+// are created and deleted by the OLT.
+//
+// NOTE 1 - One might expect to find some form of impaired or discarded frame count associated with
+// a GEM port. However, the only impairment that might be detected at the GEM frame level would be
+// a corrupted GEM frame header. In this case, no part of the header could be considered reliable
+// including the port ID. For this reason, there is no impaired or discarded frame count in this
+// ME.
+//
+// NOTE 2 - This ME replaces the GEM port performance history data ME and is preferred for new
+// implementations.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an instance of the GEM port network CTP ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the GEM port network CTP. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 ME that
+// contains PM threshold values. Since no threshold value attribute number exceeds 7, a threshold
+// data 2 ME is optional. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Transmitted Gem Frames
+// Transmitted GEM frames: This attribute counts GEM frames transmitted on the monitored GEM port.
+// (R) (mandatory) (4-bytes)
+//
+// Received Gem Frames
+// Received GEM frames: This attribute counts GEM frames received correctly on the monitored GEM
+// port. A correctly received GEM frame is one that does not contain uncorrectable errors and has a
+// valid header error check (HEC). (R) (mandatory) (4-bytes)
+//
+// Received Payload Bytes
+// Received payload bytes: This attribute counts user payload bytes received on the monitored GEM
+// port. (R) (mandatory) (8-bytes)
+//
+// Transmitted Payload Bytes
+// Transmitted payload bytes: This attribute counts user payload bytes transmitted on the monitored
+// GEM port. (R) (mandatory) (8-bytes)
+//
+// Encryption Key Errors
+// NOTE 4 - GEM PM counts each non-idle GEM frame, whether it contains an entire user frame or only
+// a fragment of a user frame.
+//
+type GemPortNetworkCtpPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ gemportnetworkctpperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "GemPortNetworkCtpPerformanceMonitoringHistoryData",
+ ClassID: 341,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfe00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", PointerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("TransmittedGemFrames", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("ReceivedGemFrames", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint64Field("ReceivedPayloadBytes", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint64Field("TransmittedPayloadBytes", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("EncryptionKeyErrors", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, true, false, 7),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewGemPortNetworkCtpPerformanceMonitoringHistoryData (class ID 341) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewGemPortNetworkCtpPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*gemportnetworkctpperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/ieee802.1pmapperserviceprofile.go b/vendor/github.com/opencord/omci-lib-go/generated/ieee802.1pmapperserviceprofile.go
new file mode 100644
index 0000000..79a8b89
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/ieee802.1pmapperserviceprofile.go
@@ -0,0 +1,142 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// Ieee8021PMapperServiceProfileClassID is the 16-bit ID for the OMCI
+// Managed entity IEEE 802.1p mapper service profile
+const Ieee8021PMapperServiceProfileClassID ClassID = ClassID(130)
+
+var ieee8021pmapperserviceprofileBME *ManagedEntityDefinition
+
+// Ieee8021PMapperServiceProfile (class ID #130)
+// This ME associates the priorities of IEEE 802.1p [IEEE 802.1D] priority tagged frames with
+// specific connections. This ME directs upstream traffic to the designated GEM ports. Downstream
+// traffic arriving on any of the IEEE 802.1p mapper's GEM ports is directed to the mapper's root
+// TP. Other mechanisms exist to direct downstream traffic, specifically a direct pointer to a
+// downstream queue from the GEM port network CTP. If such an alternative is used, it should be
+// provisioned to be consistent with the flow model of the mapper.
+//
+// Instances of this ME are created and deleted by the OLT.
+//
+// Relationships
+// At its root, an instance of this ME may be associated with zero or one instance of a PPTP UNI,
+// MAC bridge port configuration data, or any type of IW TP ME that carries IEEE 802 traffic. Each
+// of its eight branches is associated with zero or one GEM IW TP.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Tp Pointer
+// (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Interwork Tp Pointer For P_Bit Priority 0
+// Interwork TP pointer for P-bit priority 0: (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Interwork Tp Pointer For P_Bit Priority 1
+// Interwork TP pointer for P-bit priority 1: (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Interwork Tp Pointer For P_Bit Priority 2
+// Interwork TP pointer for P-bit priority 2: (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Interwork Tp Pointer For P_Bit Priority 3
+// Interwork TP pointer for P-bit priority 3: (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Interwork Tp Pointer For P_Bit Priority 4
+// Interwork TP pointer for P-bit priority 4: (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Interwork Tp Pointer For P_Bit Priority 5
+// Interwork TP pointer for P-bit priority 5: (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Interwork Tp Pointer For P_Bit Priority 6
+// Interwork TP pointer for P-bit priority 6: (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Interwork Tp Pointer For P_Bit Priority 7
+// Interwork TP pointer for P-bit priority 7: (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Unmarked Frame Option
+// Untagged downstream frames are passed through the mapper transparently.
+//
+// Dscp To P Bit Mapping
+// NOTE - If certain bits in the DSCP field are to be ignored in the mapping process, the attribute
+// should be provisioned such that all possible values of those bits produce the same P-bit
+// mapping. This can be applied to the case where instead of full DSCP, the operator wishes to
+// adopt the priority mechanism based on IP precedence, which needs only the three MSBs of the DSCP
+// field.
+//
+// Default P Bit Assumption
+// Default P-bit assumption: This attribute is valid when the unmarked frame option attribute is
+// set to 1. In its LSBs, the default Pbit assumption attribute contains the default PCP field to
+// be assumed. The unmodified frame is then directed to the GEM IW TP indicated by the interwork TP
+// pointer mappings. (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Tp Type
+// (R,-W, setbycreate) (optional) (1-byte)
+//
+type Ieee8021PMapperServiceProfile struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ ieee8021pmapperserviceprofileBME = &ManagedEntityDefinition{
+ Name: "Ieee8021PMapperServiceProfile",
+ ClassID: 130,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfff8,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("TpPointer", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: Uint16Field("InterworkTpPointerForPBitPriority0", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint16Field("InterworkTpPointerForPBitPriority1", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ 4: Uint16Field("InterworkTpPointerForPBitPriority2", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ 5: Uint16Field("InterworkTpPointerForPBitPriority3", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 5),
+ 6: Uint16Field("InterworkTpPointerForPBitPriority4", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 6),
+ 7: Uint16Field("InterworkTpPointerForPBitPriority5", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 7),
+ 8: Uint16Field("InterworkTpPointerForPBitPriority6", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 8),
+ 9: Uint16Field("InterworkTpPointerForPBitPriority7", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 9),
+ 10: ByteField("UnmarkedFrameOption", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 10),
+ 11: MultiByteField("DscpToPBitMapping", OctetsAttributeType, 0x0020, 24, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"), mapset.NewSetWith(Read, Write), false, false, false, 11),
+ 12: ByteField("DefaultPBitAssumption", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 12),
+ 13: ByteField("TpType", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 13),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewIeee8021PMapperServiceProfile (class ID 130) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewIeee8021PMapperServiceProfile(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*ieee8021pmapperserviceprofileBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/interworkingvccterminationpoint.go b/vendor/github.com/opencord/omci-lib-go/generated/interworkingvccterminationpoint.go
new file mode 100644
index 0000000..03af395
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/interworkingvccterminationpoint.go
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// InterworkingVccTerminationPointClassID is the 16-bit ID for the OMCI
+// Managed entity Interworking VCC termination point
+const InterworkingVccTerminationPointClassID ClassID = ClassID(14)
+
+var interworkingvccterminationpointBME *ManagedEntityDefinition
+
+// InterworkingVccTerminationPoint (class ID #14)
+// An instance of this ME represents a point in the ONU where the IW of a service or underlying
+// physical infrastructure (e.g., ADSL) to an ATM layer takes place. At this point, ATM cells are
+// generated from a bit stream (e.g., Ethernet) or a bit stream is reconstructed from ATM cells.
+//
+// Instances of this ME are created and deleted by the OLT.
+//
+// Relationships
+// One instance of this ME exists for each occurrence of transformation of a data stream into ATM
+// cells and vice versa.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. (R,-setbycreate)
+// (mandatory) (2-bytes)
+//
+// Vci Value
+// VCI value: This attribute identifies the VCI value associated with this IW VCC TP. (R,-W,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Vp Network Ctp Connectivity Pointer
+// VP network CTP connectivity pointer: This attribute points to the VP network CTP associated with
+// this IW VCC TP. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Deprecated 1
+// Deprecated 1: Not used; should be set to 0. (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Deprecated 2
+// Deprecated 2: Not used; should be set to 0. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Aal5 Profile Pointer
+// AAL5 profile pointer: This attribute points to an instance of the AAL5 profile. (R,-W,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Deprecated 3
+// Deprecated 3: Not used; should be set to 0. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Aal Loopback Configuration
+// The default value of this attribute is 0. (R,-W) (mandatory) (1-byte)
+//
+// Pptp Counter
+// PPTP counter: This value is the number of instances of PPTP MEs associated with this instance of
+// the IW VCC TP. (R) (optional) (1-byte)
+//
+// Operational State
+// Operational state: This attribute indicates whether the ME is capable of performing its
+// function. Valid values are enabled (0) and disabled (1). (R) (optional) (1-byte)
+//
+type InterworkingVccTerminationPoint struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ interworkingvccterminationpointBME = &ManagedEntityDefinition{
+ Name: "InterworkingVccTerminationPoint",
+ ClassID: 14,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xff80,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("VciValue", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: Uint16Field("VpNetworkCtpConnectivityPointer", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: ByteField("Deprecated1", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, true, 3),
+ 4: Uint16Field("Deprecated2", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, true, 4),
+ 5: Uint16Field("Aal5ProfilePointer", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 5),
+ 6: Uint16Field("Deprecated3", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, true, 6),
+ 7: ByteField("AalLoopbackConfiguration", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, Write), false, false, false, 7),
+ 8: ByteField("PptpCounter", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, true, false, 8),
+ 9: ByteField("OperationalState", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read), true, true, false, 9),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewInterworkingVccTerminationPoint (class ID 14) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewInterworkingVccTerminationPoint(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*interworkingvccterminationpointBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/iphostconfigdata.go b/vendor/github.com/opencord/omci-lib-go/generated/iphostconfigdata.go
new file mode 100644
index 0000000..c7a14a4
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/iphostconfigdata.go
@@ -0,0 +1,158 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// IpHostConfigDataClassID is the 16-bit ID for the OMCI
+// Managed entity IP host config data
+const IpHostConfigDataClassID ClassID = ClassID(134)
+
+var iphostconfigdataBME *ManagedEntityDefinition
+
+// IpHostConfigData (class ID #134)
+// The IP host config data configures IPv4 based services offered on the ONU. The ONU automatically
+// creates instances of this ME if IP host services are available. A possible IPv6 stack is
+// supported through the IPv6 host config data ME. In this clause, references to IP addresses are
+// understood to mean IPv4.
+//
+// Relationships
+// An instance of this ME is associated with the ONU ME. Any number of TCP/UDP config data MEs can
+// point to the IP host config data, to model any number of ports and protocols. Performance may be
+// monitored through an implicitly linked IP host PM history data ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. The ONU creates
+// as many instances as there are independent IPv4 stacks on the ONU. To facilitate discovery, IP
+// host config data MEs should be numbered from 0 upwards. The ONU should create IP(v4) and IPv6
+// host config data MEs with separate ME IDs, such that other MEs can use a single TP type
+// attribute to link with either. (R) (mandatory) (2 bytes)
+//
+// Ip Options
+// (R,-W) (mandatory) (1-byte)
+//
+// Mac Address
+// MAC address: This attribute indicates the MAC address used by the IP node. (R) (mandatory)
+// (6-bytes)
+//
+// Onu Identifier
+// Onu identifier: A unique ONU identifier string. If set to a non-null value, this string is used
+// instead of the MAC address in retrieving dynamic host configuration protocol (DHCP) parameters.
+// If the string is shorter than 25 characters, it must be null terminated. Its default value is 25
+// null bytes. (R,-W) (mandatory) (25-bytes)
+//
+// Ip Address
+// IP address: The address used for IP host services; this attribute has the default value 0.
+// (R,-W) (mandatory) (4-bytes)
+//
+// Mask
+// Mask: The subnet mask for IP host services; this attribute has the default value 0. (R,-W)
+// (mandatory) (4-bytes)
+//
+// Gateway
+// Gateway: The default gateway address used for IP host services; this attribute has the default
+// value 0. (R,-W) (mandatory) (4-bytes)
+//
+// Primary Dns
+// Primary DNS: The address of the primary DNS server; this attribute has the default value 0.
+// (R,-W) (mandatory) (4-bytes)
+//
+// Secondary Dns
+// Secondary DNS: The address of the secondary DNS server; this attribute has the default value 0.
+// (R,-W) (mandatory) (4-bytes)
+//
+// Current Address
+// Current address: Current address of the IP host service. (R) (optional) (4-bytes)
+//
+// Current Mask
+// Current mask: Current subnet mask for the IP host service. (R) (optional) (4-bytes)
+//
+// Current Gateway
+// Current gateway: Current default gateway address for the IP host service. (R) (optional)
+// (4-bytes)
+//
+// Current Primary Dns
+// Current primary DNS: Current primary DNS server address. (R) (optional) (4-bytes)
+//
+// Current Secondary Dns
+// Current secondary DNS: Current secondary DNS server address. (R) (optional) (4-bytes)
+//
+// Domain Name
+// Domain name: If DHCP indicates a domain name, it is presented here. If no domain name is
+// indicated, this attribute is set to a null string. If the string is shorter than 25-bytes, it
+// must be null terminated. The default value is 25 null bytes. (R) (mandatory) (25-bytes)
+//
+// Host Name
+// Host name: If DHCP indicates a host name, it is presented here. If no host name is indicated,
+// this attribute is set to a null string. If the string is shorter than 25-bytes, it must be null
+// terminated. The default value is 25 null bytes. (R) (mandatory) (25-bytes)
+//
+// Relay Agent Options
+// 2/3/4:atm/123.4567
+//
+type IpHostConfigData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ iphostconfigdataBME = &ManagedEntityDefinition{
+ Name: "IpHostConfigData",
+ ClassID: 134,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffff,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("IpOptions", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: MultiByteField("MacAddress", OctetsAttributeType, 0x4000, 6, toOctets("AAAAAAAA"), mapset.NewSetWith(Read), false, false, false, 2),
+ 3: MultiByteField("OnuIdentifier", OctetsAttributeType, 0x2000, 25, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read, Write), false, false, false, 3),
+ 4: Uint32Field("IpAddress", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, false, false, 4),
+ 5: Uint32Field("Mask", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, false, false, 5),
+ 6: Uint32Field("Gateway", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, Write), false, false, false, 6),
+ 7: Uint32Field("PrimaryDns", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, Write), false, false, false, 7),
+ 8: Uint32Field("SecondaryDns", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, Write), false, false, false, 8),
+ 9: Uint32Field("CurrentAddress", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read), true, true, false, 9),
+ 10: Uint32Field("CurrentMask", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read), true, true, false, 10),
+ 11: Uint32Field("CurrentGateway", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read), true, true, false, 11),
+ 12: Uint32Field("CurrentPrimaryDns", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read), true, true, false, 12),
+ 13: Uint32Field("CurrentSecondaryDns", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read), true, true, false, 13),
+ 14: MultiByteField("DomainName", OctetsAttributeType, 0x0004, 25, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read), true, false, false, 14),
+ 15: MultiByteField("HostName", OctetsAttributeType, 0x0002, 25, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read), true, false, false, 15),
+ 16: Uint16Field("RelayAgentOptions", UnsignedIntegerAttributeType, 0x0001, 0, mapset.NewSetWith(Read, Write), true, true, false, 16),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewIpHostConfigData (class ID 134) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewIpHostConfigData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*iphostconfigdataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/iphostperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/iphostperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..318346a
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/iphostperformancemonitoringhistorydata.go
@@ -0,0 +1,118 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// IpHostPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity IP host performance monitoring history data
+const IpHostPerformanceMonitoringHistoryDataClassID ClassID = ClassID(135)
+
+var iphostperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// IpHostPerformanceMonitoringHistoryData (class ID #135)
+// This ME collects PM data related to an IP host. Instances of this ME are created and deleted by
+// the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an instance of the IP host config data or IPv6 host
+// config data ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the IP host configuration data or
+// IPv6 host configuration data ME. (R, set-by-create) (mandatory) (2 bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 ME that
+// contains PM threshold values. Since no threshold value attribute number exceeds 7, a threshold
+// data 2 ME is optional. (R,-W, set-by-create) (mandatory) (2-bytes)
+//
+// Icmp Errors
+// ICMP errors: This attribute counts ICMP errors received. (R) (mandatory) (4-bytes)
+//
+// Dns Errors
+// DNS errors: This attribute counts DNS errors received. (R) (mandatory) (4-bytes)
+//
+// Dhcp Timeouts
+// DHCP timeouts: This attribute counts DHCP timeouts. (R) (optional) (2 bytes)
+//
+// Ip Address Conflict
+// IP address conflict: This attribute is incremented whenever the ONU detects a conflicting IP
+// address on the network. A conflicting IP address is one that has the same value as the one
+// currently assigned to the ONU. (R) (optional) (2 bytes)
+//
+// Out Of Memory
+// Out of memory: This attribute is incremented whenever the ONU encounters an out of memory
+// condition in the IP stack. (R) (optional) (2 bytes)
+//
+// Internal Error
+// Internal error: This attribute is incremented whenever the ONU encounters an internal error
+// condition such as a driver interface failure in the IP stack. (R) (optional) (2-bytes)
+//
+type IpHostPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ iphostperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "IpHostPerformanceMonitoringHistoryData",
+ ClassID: 135,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xff00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("IcmpErrors", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("DnsErrors", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint16Field("DhcpTimeouts", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, true, false, 5),
+ 6: Uint16Field("IpAddressConflict", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, true, false, 6),
+ 7: Uint16Field("OutOfMemory", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, true, false, 7),
+ 8: Uint16Field("InternalError", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, true, false, 8),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewIpHostPerformanceMonitoringHistoryData (class ID 135) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewIpHostPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*iphostperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/macbridgeconfigurationdata.go b/vendor/github.com/opencord/omci-lib-go/generated/macbridgeconfigurationdata.go
new file mode 100644
index 0000000..5b6a1c6
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/macbridgeconfigurationdata.go
@@ -0,0 +1,117 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// MacBridgeConfigurationDataClassID is the 16-bit ID for the OMCI
+// Managed entity MAC bridge configuration data
+const MacBridgeConfigurationDataClassID ClassID = ClassID(46)
+
+var macbridgeconfigurationdataBME *ManagedEntityDefinition
+
+// MacBridgeConfigurationData (class ID #46)
+// This ME organizes status data associated with a MAC bridge. The ONU automatically creates or
+// deletes an instance of this ME upon the creation or deletion of a MAC bridge service profile.
+//
+// Relationships
+// This ME is associated with one instance of a MAC bridge service profile.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the MAC bridge service profile. (R)
+// (mandatory) (2-bytes)
+//
+// Bridge Mac Address
+// Bridge MAC address: This attribute indicates the MAC address used by the bridge. The ONU sets
+// this attribute to a value based on criteria beyond the scope of this Recommendation, e.g.,
+// factory settings. (R) (mandatory) (6-bytes)
+//
+// Bridge Priority
+// Bridge priority: This attribute reports the priority of the bridge. The ONU copies this
+// attribute from the priority attribute of the associated MAC bridge service profile. The value of
+// this attribute changes with updates to the MAC bridge service profile priority attribute. (R)
+// (mandatory) (2-bytes)
+//
+// Designated Root
+// Designated root: This attribute identifies the bridge at the root of the spanning tree. It
+// comprises bridge priority (2-bytes) and MAC address (6-bytes). (R) (mandatory) (8-bytes)
+//
+// Root Path Cost
+// Root path cost: This attribute reports the cost of the best path to the root as seen from this
+// bridge. Upon ME instantiation, the ONU sets this attribute to 0. (R) (mandatory) (4-bytes)
+//
+// Bridge Port Count
+// Bridge port count: This attribute records the number of ports linked to this bridge. (R)
+// (mandatory) (1-byte)
+//
+// Root Port Num
+// Root port num: This attribute contains the port number that has the lowest cost from the bridge
+// to the root bridge. The value 0 means that this bridge is itself the root. Upon ME
+// instantiation, the ONU sets this attribute to 0. (R) (mandatory) (2-bytes)
+//
+// Hello Time
+// NOTE - [IEEE 802.1D] specifies the compatibility range for hello time to be 1..2-s.
+//
+// Forward Delay
+// Forward delay: This attribute is the forwarding delay time received from the designated root (in
+// 256ths of a second). Its range is 0x0400 to 0x1E00 (4..30-s) in accordance with [IEEE 802.1D].
+// (R) (optional) (2-bytes)
+//
+type MacBridgeConfigurationData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ macbridgeconfigurationdataBME = &ManagedEntityDefinition{
+ Name: "MacBridgeConfigurationData",
+ ClassID: 46,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ ),
+ AllowedAttributeMask: 0xff00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: MultiByteField("BridgeMacAddress", OctetsAttributeType, 0x8000, 6, toOctets("AAAAAAAA"), mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("BridgePriority", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read), false, false, false, 2),
+ 3: MultiByteField("DesignatedRoot", OctetsAttributeType, 0x2000, 8, toOctets("AAAAAAAAAAA="), mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("RootPathCost", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: ByteField("BridgePortCount", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint16Field("RootPortNum", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint16Field("HelloTime", UnsignedIntegerAttributeType, 0x0200, 256, mapset.NewSetWith(Read), false, true, false, 7),
+ 8: Uint16Field("ForwardDelay", UnsignedIntegerAttributeType, 0x0100, 1024, mapset.NewSetWith(Read), false, true, false, 8),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewMacBridgeConfigurationData (class ID 46) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewMacBridgeConfigurationData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*macbridgeconfigurationdataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/macbridgeperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/macbridgeperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..30acf13
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/macbridgeperformancemonitoringhistorydata.go
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// MacBridgePerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity MAC bridge performance monitoring history data
+const MacBridgePerformanceMonitoringHistoryDataClassID ClassID = ClassID(51)
+
+var macbridgeperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// MacBridgePerformanceMonitoringHistoryData (class ID #51)
+// This ME collects PM data associated with a MAC bridge. Instances of this ME are created and
+// deleted by the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// This ME is associated with an instance of a MAC bridge service profile.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the MAC bridge service profile. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 ME that
+// contains PM threshold values. Since no threshold value attribute number exceeds 7, a threshold
+// data 2 ME is optional. Since no threshold value attribute number exceeds 7, a threshold data 2
+// ME is optional. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Bridge Learning Entry Discard Count
+// Bridge learning entry discard count: This attribute counts forwarding database entries that have
+// been or would have been learned, but were discarded or replaced due to a lack of space in the
+// database table. When used with the MAC learning depth attribute of the MAC bridge service
+// profile, the bridge learning entry discard count may be particularly useful in detecting MAC
+// spoofing attempts. (R) (mandatory) (4-bytes)
+//
+type MacBridgePerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ macbridgeperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "MacBridgePerformanceMonitoringHistoryData",
+ ClassID: 51,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xe000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", PointerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("BridgeLearningEntryDiscardCount", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewMacBridgePerformanceMonitoringHistoryData (class ID 51) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewMacBridgePerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*macbridgeperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/macbridgeportbridgetabledata.go b/vendor/github.com/opencord/omci-lib-go/generated/macbridgeportbridgetabledata.go
new file mode 100644
index 0000000..207e429
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/macbridgeportbridgetabledata.go
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// MacBridgePortBridgeTableDataClassID is the 16-bit ID for the OMCI
+// Managed entity MAC bridge port bridge table data
+const MacBridgePortBridgeTableDataClassID ClassID = ClassID(50)
+
+var macbridgeportbridgetabledataBME *ManagedEntityDefinition
+
+// MacBridgePortBridgeTableData (class ID #50)
+// This ME reports status data associated with a bridge port. The ONU automatically creates or
+// deletes an instance of this ME upon the creation or deletion of a MAC bridge port configuration
+// data.
+//
+// Relationships
+// An instance of this ME is associated with an instance of a MAC bridge port configuration data
+// ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the MAC bridge port configuration
+// data ME. (R) (mandatory) (2-bytes)
+//
+// Bridge Table
+// Upon ME instantiation, this attribute is an empty list. (R) (mandatory) (8-*-M-bytes, where M is
+// the number of entries in the list.)
+//
+type MacBridgePortBridgeTableData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ macbridgeportbridgetabledataBME = &ManagedEntityDefinition{
+ Name: "MacBridgePortBridgeTableData",
+ ClassID: 50,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ GetNext,
+ ),
+ AllowedAttributeMask: 0x8000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: TableField("BridgeTable", TableAttributeType, 0x8000, TableInfo{nil, 8}, mapset.NewSetWith(Read), false, false, false, 1),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewMacBridgePortBridgeTableData (class ID 50) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewMacBridgePortBridgeTableData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*macbridgeportbridgetabledataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/macbridgeportconfigurationdata.go b/vendor/github.com/opencord/omci-lib-go/generated/macbridgeportconfigurationdata.go
new file mode 100644
index 0000000..d731e08
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/macbridgeportconfigurationdata.go
@@ -0,0 +1,142 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// MacBridgePortConfigurationDataClassID is the 16-bit ID for the OMCI
+// Managed entity MAC bridge port configuration data
+const MacBridgePortConfigurationDataClassID ClassID = ClassID(47)
+
+var macbridgeportconfigurationdataBME *ManagedEntityDefinition
+
+// MacBridgePortConfigurationData (class ID #47)
+// This ME models a port on a MAC bridge. Instances of this ME are created and deleted by the OLT.
+//
+// Relationships
+// An instance of this ME is linked to an instance of the MAC bridge service profile. Additional
+// bridge port control capabilities are provided by implicitly linked instances of some or all of://// o MAC bridge port filter table data;//// o MAC bridge port filter pre-assign table;//// o VLAN tagging filter data;//// o Dot1 rate limiter.//// Real-time status of the bridge port is provided by implicitly linked instances of://// o MAC bridge port designation data;//// o MAC bridge port bridge table data;//// o Multicast subscriber monitor.//// Bridge port PM collection is provided by implicitly linked instances of://// o MAC bridge port PM history data;//// o Ethernet frame PM history data upstream and downstream;//// o Ethernet frame extended PM (preferred).
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Bridge Id Pointer
+// Bridge ID pointer: This attribute points to an instance of the MAC bridge service profile.
+// (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Port Num
+// Port num: This attribute is the bridge port number. It must be unique among all ports associated
+// with a particular MAC bridge service profile. (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Tp Type
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Tp Pointer
+// NOTE 1 - When the TP type is very high-speed digital subscriber line (VDSL) or xDSL, the two
+// MSBs may be used to indicate a bearer channel.
+//
+// Port Priority
+// Port priority: This attribute denotes the priority of the port for use in (rapid) spanning tree
+// algorithms. The range is 0..255. (R,-W, setbycreate) (optional) (2-bytes)
+//
+// Port Path Cost
+// Port path cost: This attribute specifies the contribution of the port to the path cost towards
+// the spanning tree root bridge. The range is 1..65535. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Port Spanning Tree Ind
+// Port spanning tree ind: The Boolean value true enables (R)STP LAN topology change detection at
+// this port. The value false disables topology change detection. (R,-W, setbycreate) (mandatory)
+// (1-byte)
+//
+// Deprecated 1
+// Deprecated 1: This attribute is not used. If present, it should be ignored by both the ONU and
+// the OLT, except as necessary to comply with OMCI message definitions. (R,-W, setbycreate)
+// (optional) (1-byte)
+//
+// Deprecated 2
+// Deprecated 2: This attribute is not used. If present, it should be ignored by both the ONU and
+// the OLT, except as necessary to comply with OMCI message definitions. (R,-W, setbycreate)
+// (1-byte) (optional)
+//
+// Port Mac Address
+// Port MAC address: If the TP associated with this port has a MAC address, this attribute
+// specifies it. (R) (optional) (6-bytes)
+//
+// Outbound Td Pointer
+// Outbound TD pointer: This attribute points to a traffic descriptor that limits the traffic rate
+// leaving the MAC bridge. (R,-W) (optional) (2-byte)
+//
+// Inbound Td Pointer
+// Inbound TD pointer: This attribute points to a traffic descriptor that limits the traffic rate
+// entering the MAC bridge. (R,-W) (optional) (2-byte)
+//
+// Mac Learning Depth
+// NOTE 2 - If this attribute is not zero, its value overrides the value set in the MAC learning
+// depth attribute of the MAC bridge service profile.
+//
+type MacBridgePortConfigurationData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ macbridgeportconfigurationdataBME = &ManagedEntityDefinition{
+ Name: "MacBridgePortConfigurationData",
+ ClassID: 47,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfff8,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("BridgeIdPointer", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: ByteField("PortNum", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: ByteField("TpType", EnumerationAttributeType, 0x2000, 1, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ 4: Uint16Field("TpPointer", PointerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ 5: Uint16Field("PortPriority", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 5),
+ 6: Uint16Field("PortPathCost", UnsignedIntegerAttributeType, 0x0400, 1, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 6),
+ 7: ByteField("PortSpanningTreeInd", EnumerationAttributeType, 0x0200, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 7),
+ 8: ByteField("Deprecated1", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, true, 8),
+ 9: ByteField("Deprecated2", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, true, 9),
+ 10: MultiByteField("PortMacAddress", OctetsAttributeType, 0x0040, 6, toOctets("AAAAAAAA"), mapset.NewSetWith(Read), false, true, false, 10),
+ 11: Uint16Field("OutboundTdPointer", PointerAttributeType, 0x0020, 0, mapset.NewSetWith(Read, Write), false, true, false, 11),
+ 12: Uint16Field("InboundTdPointer", PointerAttributeType, 0x0010, 0, mapset.NewSetWith(Read, Write), false, true, false, 12),
+ 13: ByteField("MacLearningDepth", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 13),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewMacBridgePortConfigurationData (class ID 47) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewMacBridgePortConfigurationData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*macbridgeportconfigurationdataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/macbridgeportdesignationdata.go b/vendor/github.com/opencord/omci-lib-go/generated/macbridgeportdesignationdata.go
new file mode 100644
index 0000000..6b86fd2
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/macbridgeportdesignationdata.go
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// MacBridgePortDesignationDataClassID is the 16-bit ID for the OMCI
+// Managed entity MAC bridge port designation data
+const MacBridgePortDesignationDataClassID ClassID = ClassID(48)
+
+var macbridgeportdesignationdataBME *ManagedEntityDefinition
+
+// MacBridgePortDesignationData (class ID #48)
+// This ME records data associated with a bridge port. The ONU automatically creates or deletes an
+// instance of this managed entity upon the creation or deletion of a MAC bridge port configuration
+// data ME.
+//
+// Relationships
+// An instance of this managed entity is associated with one MAC bridge port configuration data ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the MAC bridge port configuration
+// data. (R) (mandatory) (2-bytes)
+//
+// Designated Bridge Root Cost Port
+// Upon ME instantiation, the ONU sets this attribute to 0. (R) (mandatory) (24-bytes)
+//
+// Port State
+// The value (R)stp_off is introduced to denote the port status where the (rapid) spanning tree
+// protocol has been disabled by setting the port spanning tree ind attribute of the MAC bridge
+// port configuration data to false, and the Ethernet link state is up. This value distinguishes
+// whether frame forwarding is under the control of (R)STP.
+//
+type MacBridgePortDesignationData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ macbridgeportdesignationdataBME = &ManagedEntityDefinition{
+ Name: "MacBridgePortDesignationData",
+ ClassID: 48,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ ),
+ AllowedAttributeMask: 0xc000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: MultiByteField("DesignatedBridgeRootCostPort", OctetsAttributeType, 0x8000, 24, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"), mapset.NewSetWith(Read), false, false, false, 1),
+ 2: ByteField("PortState", EnumerationAttributeType, 0x4000, 0, mapset.NewSetWith(Read), false, false, false, 2),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewMacBridgePortDesignationData (class ID 48) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewMacBridgePortDesignationData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*macbridgeportdesignationdataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/macbridgeportfilterpre-assigntable.go b/vendor/github.com/opencord/omci-lib-go/generated/macbridgeportfilterpre-assigntable.go
new file mode 100644
index 0000000..1215cb3
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/macbridgeportfilterpre-assigntable.go
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// MacBridgePortFilterPreAssignTableClassID is the 16-bit ID for the OMCI
+// Managed entity MAC bridge port filter pre-assign table
+const MacBridgePortFilterPreAssignTableClassID ClassID = ClassID(79)
+
+var macbridgeportfilterpreassigntableBME *ManagedEntityDefinition
+
+// MacBridgePortFilterPreAssignTable (class ID #79)
+// This ME provides an alternate approach to DA filtering from that supported through the MAC
+// bridge port filter table data ME. This alternate approach is useful when all groups of addresses
+// are stored beforehand in the ONU, and the MAC bridge port filter pre-assign table ME designates
+// which groups are valid or invalid for filtering. On a circuit pack in which all groups of
+// addresses are pre-assigned and stored locally, the ONU creates or deletes an instance of this ME
+// automatically upon creation or deletion of a MAC bridge port configuration data ME.
+//
+// Relationships
+// An instance of this ME is associated with an instance of a MAC bridge port configuration data
+// ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the MAC bridge port configuration
+// data ME. (R) (mandatory) (2-bytes)
+//
+// Ipv4 Multicast Filtering
+// IPv4 multicast filtering: (R,-W) (mandatory) (1-byte)
+//
+// Ipv6 Multicast Filtering
+// IPv6 multicast filtering: (R,-W) (mandatory) (1-byte)
+//
+// Ipv4 Broadcast Filtering
+// IPv4 broadcast filtering: (R,-W) (mandatory) (1-byte)
+//
+// Rarp Filtering
+// RARP filtering: (R,-W) (mandatory) (1-byte)
+//
+// Ipx Filtering
+// IPX filtering: (R,-W) (mandatory) (1-byte)
+//
+// Netbeui Filtering
+// NetBEUI filtering: (R,-W) (mandatory) (1-byte)
+//
+// Appletalk Filtering
+// AppleTalk filtering: (R,-W) (mandatory) (1-byte)
+//
+// Bridge Management Information Filtering
+// 2 Addresses from 01.80.C2.00.00.20 to 01.80.C2.00.00.2F are used for generic attribute
+// registration protocol (GARP) applications.
+//
+// Arp Filtering
+// ARP filtering: (R,-W) (mandatory) (1-byte)
+//
+// Point_To_Point Protocol Over Ethernet Pppoe Broadcast Filtering
+// Point-to-point protocol over Ethernet (PPPoE) broadcast filtering: (R,-W) (mandatory) (1-byte)
+//
+type MacBridgePortFilterPreAssignTable struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ macbridgeportfilterpreassigntableBME = &ManagedEntityDefinition{
+ Name: "MacBridgePortFilterPreAssignTable",
+ ClassID: 79,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffc0,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("Ipv4MulticastFiltering", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: ByteField("Ipv6MulticastFiltering", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, Write), false, false, false, 2),
+ 3: ByteField("Ipv4BroadcastFiltering", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), false, false, false, 3),
+ 4: ByteField("RarpFiltering", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, false, false, 4),
+ 5: ByteField("IpxFiltering", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, false, false, 5),
+ 6: ByteField("NetbeuiFiltering", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, Write), false, false, false, 6),
+ 7: ByteField("AppletalkFiltering", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, Write), false, false, false, 7),
+ 8: ByteField("BridgeManagementInformationFiltering", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, Write), false, false, false, 8),
+ 9: ByteField("ArpFiltering", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, Write), false, false, false, 9),
+ 10: ByteField("PointToPointProtocolOverEthernetPppoeBroadcastFiltering", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read, Write), false, false, false, 10),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewMacBridgePortFilterPreAssignTable (class ID 79) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewMacBridgePortFilterPreAssignTable(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*macbridgeportfilterpreassigntableBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/macbridgeportfiltertabledata.go b/vendor/github.com/opencord/omci-lib-go/generated/macbridgeportfiltertabledata.go
new file mode 100644
index 0000000..972bb6f
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/macbridgeportfiltertabledata.go
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// MacBridgePortFilterTableDataClassID is the 16-bit ID for the OMCI
+// Managed entity MAC bridge port filter table data
+const MacBridgePortFilterTableDataClassID ClassID = ClassID(49)
+
+var macbridgeportfiltertabledataBME *ManagedEntityDefinition
+
+// MacBridgePortFilterTableData (class ID #49)
+// This ME organizes data associated with a bridge port. The ONU automatically creates or deletes
+// an instance of this ME upon the creation or deletion of a MAC bridge port configuration data ME.
+//
+// NOTE - The OLT should disable the learning mode in the MAC bridge service profile before writing
+// to the MAC filter table.
+//
+// Relationships
+// An instance of this ME is associated with an instance of a MAC bridge port configuration data
+// ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the MAC bridge port configuration
+// data ME. (R) (mandatory) (2-bytes)
+//
+// Mac Filter Table
+// (R,-W) (Mandatory) (8N bytes, where N is the number of entries in the list)
+//
+type MacBridgePortFilterTableData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ macbridgeportfiltertabledataBME = &ManagedEntityDefinition{
+ Name: "MacBridgePortFilterTableData",
+ ClassID: 49,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ GetNext,
+ Set,
+ ),
+ AllowedAttributeMask: 0x8000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: TableField("MacFilterTable", TableAttributeType, 0x8000, TableInfo{nil, 8}, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewMacBridgePortFilterTableData (class ID 49) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewMacBridgePortFilterTableData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*macbridgeportfiltertabledataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/macbridgeporticmpv6processpre-assigntable.go b/vendor/github.com/opencord/omci-lib-go/generated/macbridgeporticmpv6processpre-assigntable.go
new file mode 100644
index 0000000..c86dc96
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/macbridgeporticmpv6processpre-assigntable.go
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// MacBridgePortIcmpv6ProcessPreAssignTableClassID is the 16-bit ID for the OMCI
+// Managed entity MAC bridge port ICMPv6 process pre-assign table
+const MacBridgePortIcmpv6ProcessPreAssignTableClassID ClassID = ClassID(348)
+
+var macbridgeporticmpv6processpreassigntableBME *ManagedEntityDefinition
+
+// MacBridgePortIcmpv6ProcessPreAssignTable (class ID #348)
+// This ME provides an approach to ICMPv6 message processing configuration to those ONUs that
+// support IPv6 awareness. For every message, the MAC bridge port ICMPv6 process pre-assign table
+// can designate a forward, discard or snoop operation. The ONU creates or deletes an instance of
+// this ME automatically upon creation or deletion of a MAC bridge port configuration data ME.
+//
+// The MAC bridge port ICMPv6 process pre-assign table ME filters layer 2 traffic between the UNI
+// and ANI. The operation of this ME is completely independent of the operation and traffic
+// generated or received by a possible IPv6 host config data ME.
+//
+// Relationships
+// An instance of this ME is associated with an instance of a MAC bridge port configuration data
+// ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the MAC bridge port configuration
+// data ME. (R) (mandatory) (2-bytes)
+//
+// Icmpv6 Error Messages Processing
+// ICMPv6 error messages processing: (R,-W) (mandatory) (1-byte)
+//
+// Icmpv6 Informational Messages Processing
+// ICMPv6 informational messages processing: (R,-W) (mandatory) (1-byte)
+//
+// Router Solicitation Processing
+// Router solicitation processing: (R,-W) (mandatory) (1-byte)
+//
+// Router Advertisement Processing
+// Router advertisement processing: (R,-W) (mandatory) (1-byte)
+//
+// Neighbour Solicitation Processing
+// Neighbour solicitation processing: (R,-W) (mandatory) (1-byte)
+//
+// Neighbour Advertisement Processing
+// Neighbour advertisement processing: (R,-W) (mandatory) (1-byte)
+//
+// Redirect Processing
+// Redirect processing: (R,-W) (mandatory) (1-byte)
+//
+// Multicast Listener Query Processing
+// NOTE - If the ONU participates in multicast services, MLD queries should be controlled through
+// the multicast operations profile ME. In such a case, it is strongly recommended not to provision
+// the downstream direction of the multicast listener query processing attribute to any value other
+// than forwarding.
+//
+// Unknown Icmpv6 Processing
+// Unknown ICMPv6 processing: (R,-W) (mandatory) (1-byte)
+//
+type MacBridgePortIcmpv6ProcessPreAssignTable struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ macbridgeporticmpv6processpreassigntableBME = &ManagedEntityDefinition{
+ Name: "MacBridgePortIcmpv6ProcessPreAssignTable",
+ ClassID: 348,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ ),
+ AllowedAttributeMask: 0xff80,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("Icmpv6ErrorMessagesProcessing", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: ByteField("Icmpv6InformationalMessagesProcessing", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, Write), false, false, false, 2),
+ 3: ByteField("RouterSolicitationProcessing", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), false, false, false, 3),
+ 4: ByteField("RouterAdvertisementProcessing", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, false, false, 4),
+ 5: ByteField("NeighbourSolicitationProcessing", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, false, false, 5),
+ 6: ByteField("NeighbourAdvertisementProcessing", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, Write), false, false, false, 6),
+ 7: ByteField("RedirectProcessing", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, Write), false, false, false, 7),
+ 8: ByteField("MulticastListenerQueryProcessing", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, Write), false, false, false, 8),
+ 9: ByteField("UnknownIcmpv6Processing", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, Write), false, false, false, 9),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewMacBridgePortIcmpv6ProcessPreAssignTable (class ID 348) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewMacBridgePortIcmpv6ProcessPreAssignTable(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*macbridgeporticmpv6processpreassigntableBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/macbridgeportperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/macbridgeportperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..a6427dc
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/macbridgeportperformancemonitoringhistorydata.go
@@ -0,0 +1,115 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// MacBridgePortPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity MAC bridge port performance monitoring history data
+const MacBridgePortPerformanceMonitoringHistoryDataClassID ClassID = ClassID(52)
+
+var macbridgeportperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// MacBridgePortPerformanceMonitoringHistoryData (class ID #52)
+// This ME collects PM data associated with a MAC bridge port. Instances of this ME are created and
+// deleted by the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an instance of a MAC bridge port configuration data
+// ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the MAC bridge port configuration
+// data ME. (R, setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 ME that
+// contains PM threshold values. Since no threshold value attribute number exceeds 7, a threshold
+// data 2 ME is optional. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Forwarded Frame Counter
+// Forwarded frame counter: This attribute counts frames transmitted successfully on this port. (R)
+// (mandatory) (4-bytes)
+//
+// Delay Exceeded Discard Counter
+// Delay exceeded discard counter: This attribute counts frames discarded on this port because
+// transmission was delayed. (R) (mandatory) (4-bytes)
+//
+// Maximum Transmission Unit Mtu Exceeded Discard Counter
+// Maximum transmission unit (MTU) exceeded discard counter: This attribute counts frames discarded
+// on this port because the MTU was exceeded. (R) (mandatory) (4-bytes)
+//
+// Received Frame Counter
+// Received frame counter: This attribute counts frames received on this port. (R) (mandatory)
+// (4-bytes)
+//
+// Received And Discarded Counter
+// Received and discarded counter: This attribute counts frames received on this port that were
+// discarded due to errors. (R) (mandatory) (4-bytes)
+//
+type MacBridgePortPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ macbridgeportperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "MacBridgePortPerformanceMonitoringHistoryData",
+ ClassID: 52,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfe00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", PointerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("ForwardedFrameCounter", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("DelayExceededDiscardCounter", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("MaximumTransmissionUnitMtuExceededDiscardCounter", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("ReceivedFrameCounter", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("ReceivedAndDiscardedCounter", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewMacBridgePortPerformanceMonitoringHistoryData (class ID 52) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewMacBridgePortPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*macbridgeportperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/macbridgeserviceprofile.go b/vendor/github.com/opencord/omci-lib-go/generated/macbridgeserviceprofile.go
new file mode 100644
index 0000000..c0cc23c
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/macbridgeserviceprofile.go
@@ -0,0 +1,136 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// MacBridgeServiceProfileClassID is the 16-bit ID for the OMCI
+// Managed entity MAC bridge service profile
+const MacBridgeServiceProfileClassID ClassID = ClassID(45)
+
+var macbridgeserviceprofileBME *ManagedEntityDefinition
+
+// MacBridgeServiceProfile (class ID #45)
+// This ME models a MAC bridge in its entirety; any number of ports may be associated with the
+// bridge through pointers to the MAC bridge service profile ME. Instances of this ME are created
+// and deleted by the OLT.
+//
+// Relationships
+// Bridge ports are modelled by MAC bridge port configuration data MEs, any number of which can
+// point to a MAC bridge service profile. The real-time status of the bridge is available from an
+// implicitly linked MAC bridge configuration data ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. The first byte
+// is the slot ID. In an integrated ONU, this value is 0. The second byte is the bridge group ID.
+// (R, setbycreate) (mandatory) (2-bytes)
+//
+// Spanning Tree Ind
+// Spanning tree ind: The Boolean value true specifies that a spanning tree algorithm is enabled.
+// The value false disables (rapid) spanning tree. (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Learning Ind
+// Learning ind: The Boolean value true specifies that bridge learning functions are enabled. The
+// value false disables bridge learning. (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Port Bridging Ind
+// Port bridging ind: The Boolean value true specifies that bridging between UNI ports is enabled.
+// The value false disables local bridging. (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Priority
+// Priority: This attribute specifies the bridge priority in the range 0..65535. The value of this
+// attribute is copied to the bridge priority attribute of the associated MAC bridge configuration
+// data ME. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Max Age
+// Max age: This attribute specifies the maximum age (in 256ths of a second) of received protocol
+// information before its entry in the spanning tree listing is discarded. The range is 0x0600 to
+// 0x2800 (6..40-s) in accordance with [IEEE-802.1D]. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Hello Time
+// NOTE - [IEEE 802.1D] specifies the compatibility range for hello time to be 1..2-s.
+//
+// Forward Delay
+// Forward delay: This attribute specifies the forwarding delay (in 256ths of a second) when the
+// bridge acts as the root. The range is 0x0400 to 0x1E00 (4..30-s) in accordance with [IEEE
+// 802.1D]. (R,-W, set-by-create) (mandatory) (2-bytes)
+//
+// Unknown Mac Address Discard
+// Unknown MAC address discard: The Boolean value true specifies that MAC frames with unknown DAs
+// be discarded. The value false specifies that such frames be forwarded to all allowed ports.
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Mac Learning Depth
+// MAC learning depth: This attribute specifies the maximum number of UNI MAC addresses to be
+// learned by the bridge. The default value 0 specifies that there is no administratively imposed
+// limit. (R,-W, setbycreate) (optional) (1-byte)
+//
+// Dynamic Filtering Ageing Time
+// Dynamic filtering ageing time: This attribute specifies the age of dynamic filtering entries in
+// the bridge database, after which unrefreshed entries are discarded. In accordance with clause
+// 7.9.2 of [IEEE 802.1D] and clause 8.8.3 of [IEEE 802.1Q], the range is 10..1 000 000-s, with a
+// resolution of 1-s and a default of 300-s. The value 0 specifies that the ONU uses its internal
+// default. (R, W, set-by-create) (optional) (4 bytes)
+//
+type MacBridgeServiceProfile struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ macbridgeserviceprofileBME = &ManagedEntityDefinition{
+ Name: "MacBridgeServiceProfile",
+ ClassID: 45,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffc0,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("SpanningTreeInd", EnumerationAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: ByteField("LearningInd", EnumerationAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: ByteField("PortBridgingInd", EnumerationAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ 4: Uint16Field("Priority", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ 5: Uint16Field("MaxAge", UnsignedIntegerAttributeType, 0x0800, 1536, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 5),
+ 6: Uint16Field("HelloTime", UnsignedIntegerAttributeType, 0x0400, 256, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 6),
+ 7: Uint16Field("ForwardDelay", UnsignedIntegerAttributeType, 0x0200, 1024, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 7),
+ 8: ByteField("UnknownMacAddressDiscard", EnumerationAttributeType, 0x0100, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 8),
+ 9: ByteField("MacLearningDepth", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 9),
+ 10: Uint32Field("DynamicFilteringAgeingTime", UnsignedIntegerAttributeType, 0x0040, 300, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 10),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewMacBridgeServiceProfile (class ID 45) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewMacBridgeServiceProfile(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*macbridgeserviceprofileBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/managedentityme.go b/vendor/github.com/opencord/omci-lib-go/generated/managedentityme.go
new file mode 100644
index 0000000..539078d
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/managedentityme.go
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// ManagedEntityMeClassID is the 16-bit ID for the OMCI
+// Managed entity Managed entity ME
+const ManagedEntityMeClassID ClassID = ClassID(288)
+
+var managedentitymeBME *ManagedEntityDefinition
+
+// ManagedEntityMe (class ID #288)
+// The ME describes the details of each ME that is supported by the ONU. This ME is not included in
+// an MIB upload.
+//
+// Relationships
+// One or more MEs are related to the OMCI object entity.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Its value is
+// equal to the ME type value, and is the same as the code found in the ME type table attribute of
+// the OMCI ME and Table-11.2.41. (R) (mandatory) (2-bytes)
+//
+// Name
+// Name: This attribute contains a 25-byte ASCII coded mnemonic tag for the ME type. Strings
+// shorter than 25-bytes are padded with null characters. (R) (mandatory) (25-bytes)
+//
+// Attributes Table
+// NOTE - The ME ID attribute is not included in the list, since the type of this attribute is
+// fixed.
+//
+// Access
+// (R) (mandatory) (1-byte)
+//
+// Alarms Table
+// Alarms table: This attribute lists the alarm codes that are supported. (R) (mandatory) (Y bytes,
+// where Y is the number of entries in the table.)
+//
+// Avcs Table
+// AVCs table: This attribute lists the AVCs that are supported. (R) (mandatory) (Z bytes, where Z
+// is the number of entries in the table.)
+//
+// Actions
+// Actions: This attribute lists the action codes supported on this object, formatted as a bit map.
+// The action codes are the MTs from Table-11.2.2-1. The LSB represents action 0, and so on. (R)
+// (mandatory) (4-bytes)
+//
+// Instances Table
+// Instances table: This attribute is a list of pointers to all instances of this ME. (R)
+// (mandatory) (2 * V bytes, where V is the number of entries in the table.)
+//
+// Support
+// (R) (mandatory) (1-byte)
+//
+type ManagedEntityMe struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ managedentitymeBME = &ManagedEntityDefinition{
+ Name: "ManagedEntityMe",
+ ClassID: 288,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ GetNext,
+ ),
+ AllowedAttributeMask: 0xff00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: MultiByteField("Name", OctetsAttributeType, 0x8000, 25, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read), false, false, false, 1),
+ 2: TableField("AttributesTable", TableAttributeType, 0x4000, TableInfo{nil, 2}, mapset.NewSetWith(Read), false, false, false, 2),
+ 3: ByteField("Access", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: TableField("AlarmsTable", TableAttributeType, 0x1000, TableInfo{nil, 1}, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: TableField("AvcsTable", TableAttributeType, 0x0800, TableInfo{nil, 1}, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("Actions", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: TableField("InstancesTable", TableAttributeType, 0x0200, TableInfo{nil, 2}, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: ByteField("Support", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewManagedEntityMe (class ID 288) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewManagedEntityMe(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*managedentitymeBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/me.go b/vendor/github.com/opencord/omci-lib-go/generated/me.go
new file mode 100644
index 0000000..7e51f85
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/me.go
@@ -0,0 +1,300 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import (
+ "encoding/binary"
+ "errors"
+ "fmt"
+ "github.com/deckarep/golang-set"
+ "github.com/google/gopacket"
+)
+
+// ManagedEntity provides a complete instance of a Managed Entity
+type ManagedEntity struct {
+ definition ManagedEntityDefinition
+ attributeMask uint16
+ requestedAttributeMask uint16
+ attributes AttributeValueMap
+}
+
+// String provides a simple string that describes this struct
+func (entity *ManagedEntity) String() string {
+ return fmt.Sprintf("ManagedEntity: %v, EntityID: (%d/%#x): Attributes: %v",
+ entity.GetClassID(), entity.GetEntityID(), entity.GetEntityID(), entity.attributes)
+}
+
+// NewManagedEntity creates a ManagedEntity given an ME Definition and parameter/attribute data
+func NewManagedEntity(definition ManagedEntityDefinition, params ...ParamData) (*ManagedEntity, OmciErrors) {
+ entity := &ManagedEntity{
+ definition: definition,
+ attributes: make(map[string]interface{}),
+ }
+ if params != nil {
+ if err := entity.setAttributes(params...); err.StatusCode() != Success {
+ return nil, err
+ }
+ }
+ return entity, NewOmciSuccess()
+}
+
+// GetManagedEntityDefinition provides the ME definition of a Managed Entity
+func (entity *ManagedEntity) GetManagedEntityDefinition() ManagedEntityDefinition {
+ return entity.definition
+}
+
+// GetName provides the ME Name of a Managed Entity
+func (entity ManagedEntity) GetName() string {
+ return entity.definition.GetName()
+}
+
+// GetClassID returns the 16-bit class ID of a Managed Entity
+func (entity ManagedEntity) GetClassID() ClassID {
+ return entity.definition.GetClassID()
+}
+
+// GetMessageTypes returns the OMCI message types that a Managed Entity supports
+func (entity ManagedEntity) GetMessageTypes() mapset.Set {
+ return entity.definition.GetMessageTypes()
+}
+
+// GetAllowedAttributeMask returns the 16-bit bitmask of attributes a Managed Entity supports
+func (entity ManagedEntity) GetAllowedAttributeMask() uint16 {
+ return entity.definition.GetAllowedAttributeMask()
+}
+
+// GetAttributeDefinitions returns the attribute definition map for a Managed Entity
+func (entity ManagedEntity) GetAttributeDefinitions() AttributeDefinitionMap {
+ return entity.definition.GetAttributeDefinitions()
+}
+
+// DecodeAttributes will decode the attributes portion of a Managed Entity frame/packet
+func (entity *ManagedEntity) DecodeAttributes(mask uint16, data []byte, p gopacket.PacketBuilder, msgType byte) (AttributeValueMap, error) {
+ return entity.definition.DecodeAttributes(mask, data, p, msgType)
+}
+
+// SerializeAttributes will serialize the attributes of a Managed Entity type
+func (entity *ManagedEntity) SerializeAttributes(attr AttributeValueMap, mask uint16,
+ b gopacket.SerializeBuffer, msgType byte, bytesAvailable int, packData bool) (error, uint16) {
+ return entity.definition.SerializeAttributes(attr, mask, b, msgType, bytesAvailable, packData)
+}
+
+// GetEntityID will return the Entity/Instance ID for a Managed Entity
+func (entity *ManagedEntity) GetEntityID() uint16 {
+ if eid, err := entity.GetAttributeByIndex(0); err == nil {
+ return eid.(uint16)
+ }
+ return 0
+}
+
+// SetEntityID will set the Entity/Instance ID for a Managed Entity
+func (entity *ManagedEntity) SetEntityID(eid uint16) error {
+ return entity.SetAttributeByIndex(0, eid)
+}
+
+// GetAttributeMask will return the 16-bit attribute mask of a Managed Entity
+func (entity *ManagedEntity) GetAttributeMask() uint16 {
+ return entity.attributeMask
+}
+
+// SetRequestedAttributeMask is used to initialize the requested attribute mask to a specific
+// value. This should only be done on "Get" type operations that need to fetch and attribute
+// and store it in the entity. For other operations (create, set, ...) you should specify
+// the attributes and values in the Params initialization or use the SetAttribute
+func (entity *ManagedEntity) SetRequestedAttributeMask(mask uint16) {
+ entity.requestedAttributeMask = mask
+}
+
+// GetRequestedAttributeMask will return the 16-bit requested attribute mask of a Managed Entity.
+// This is only specified for requests that perform a Get operation
+func (entity *ManagedEntity) GetRequestedAttributeMask() uint16 {
+ return entity.requestedAttributeMask
+}
+
+// GetAttributeValueMap will return the map of attributes of a Managed Entity
+func (entity *ManagedEntity) GetAttributeValueMap() AttributeValueMap {
+ return entity.attributes
+}
+
+// GetAttribute will return the value of a specific attribute for the specified attribute by name
+func (entity *ManagedEntity) GetAttribute(name string) (interface{}, error) {
+ value, ok := entity.attributes[name]
+ if !ok {
+ return 0, fmt.Errorf("attribute '%v' not found", name)
+ }
+ return value, nil
+}
+
+// GetAttributeByIndex will return the value of a specific attribute for the specified attribute by index
+func (entity *ManagedEntity) GetAttributeByIndex(index uint) (interface{}, error) {
+ if len(entity.attributes) == 0 {
+ return nil, errors.New("attributes have already been set")
+ }
+ if _, ok := entity.definition.AttributeDefinitions[index]; !ok {
+ return nil, fmt.Errorf("invalid attribute index: %d, should be 0..%d",
+ index, len(entity.definition.AttributeDefinitions)-1)
+ }
+ return entity.GetAttribute(entity.definition.AttributeDefinitions[index].Name)
+}
+
+func (entity *ManagedEntity) setAttributes(params ...ParamData) OmciErrors {
+ if entity.attributes == nil {
+ entity.attributes = make(map[string]interface{})
+ } else if len(entity.attributes) > 0 {
+ return NewNonStatusError("attributes have already been set")
+ }
+ eidName := entity.definition.AttributeDefinitions[0].Name
+ if len(params) == 0 {
+ entity.attributes[eidName] = uint16(0)
+ return NewOmciSuccess()
+ }
+ entity.attributes[eidName] = params[0].EntityID
+
+ for name, value := range params[0].Attributes {
+ if name == eidName {
+ continue
+ }
+ if err := entity.SetAttribute(name, value); err.StatusCode() != Success {
+ return err
+ }
+ }
+ return NewOmciSuccess()
+}
+
+// SetAttribute can be uses to set the value of a specific attribute by name
+func (entity *ManagedEntity) SetAttribute(name string, value interface{}) OmciErrors {
+ attrDef, err := GetAttributeDefinitionByName(entity.definition.GetAttributeDefinitions(), name)
+ if err != nil {
+ // Not found, which means not in the attribute definition map
+ return NewProcessingError(err.Error())
+ } else if entity.attributes == nil {
+ entity.attributes = make(map[string]interface{})
+ }
+ mask := attrDef.Mask
+ // check any constraints
+ if constraintCheck := attrDef.GetConstraints(); constraintCheck != nil {
+ err = constraintCheck(value)
+ if err != nil {
+ return NewParameterError(mask, entity.GetAttributeDefinitions(), err)
+ }
+ }
+ entity.attributes[name] = value
+ entity.attributeMask |= mask
+ return NewOmciSuccess()
+}
+
+// SetAttributeByIndex can be uses to set the value of a specific attribute by attribute index (0..15)
+func (entity *ManagedEntity) SetAttributeByIndex(index uint, value interface{}) error {
+ attrDef, ok := entity.definition.AttributeDefinitions[index]
+ if !ok {
+ return fmt.Errorf("invalid attribute index: %d, should be 0..%d",
+ index, len(entity.definition.AttributeDefinitions)-1)
+ } else if entity.attributes == nil {
+ entity.attributes = make(map[string]interface{})
+ }
+ mask := attrDef.Mask
+ // check any constraints
+ if constraintCheck := attrDef.GetConstraints(); constraintCheck != nil {
+ err := constraintCheck(value)
+ if err != nil {
+ return NewParameterError(mask, entity.GetAttributeDefinitions(), err)
+ }
+ }
+ entity.attributes[attrDef.Name] = value
+ entity.attributeMask |= mask
+ return nil
+}
+
+// DeleteAttribute is used to remove a specific attribute from a Managed Index by name
+func (entity *ManagedEntity) DeleteAttribute(name string) error {
+ attrDef, err := GetAttributeDefinitionByName(entity.definition.GetAttributeDefinitions(), name)
+ if err != nil {
+ return err
+ }
+ if entity.attributes != nil {
+ delete(entity.attributes, name)
+ entity.attributeMask &= ^attrDef.Mask
+ }
+ return nil
+}
+
+// DeleteAttributeByIndex is used to remove a specific attribute from a Managed Index by attribute index (0..15)
+func (entity *ManagedEntity) DeleteAttributeByIndex(index uint) error {
+ attrDef, ok := entity.definition.AttributeDefinitions[index]
+ if !ok {
+ return fmt.Errorf("invalid attribute index: %d, should be 0..%d",
+ index, len(entity.definition.AttributeDefinitions)-1)
+ }
+ if entity.attributes != nil {
+ delete(entity.attributes, attrDef.Name)
+ entity.attributeMask &= ^attrDef.Mask
+ }
+ return nil
+}
+
+// DecodeFromBytes decodes a Managed Entity give an octet stream pointing to the ME within a frame
+func (entity *ManagedEntity) DecodeFromBytes(data []byte, p gopacket.PacketBuilder, msgType byte) error {
+ if len(data) < 6 {
+ p.SetTruncated()
+ return errors.New("frame too small")
+ }
+ classID := ClassID(binary.BigEndian.Uint16(data[0:2]))
+ entityID := binary.BigEndian.Uint16(data[2:4])
+ parameters := ParamData{EntityID: entityID}
+
+ meDefinition, omciErr := LoadManagedEntityDefinition(classID, parameters)
+ if omciErr.StatusCode() != Success {
+ return omciErr.GetError()
+ }
+ entity.definition = meDefinition.definition
+ entity.attributeMask = binary.BigEndian.Uint16(data[4:6])
+ entity.attributes = make(map[string]interface{})
+ entity.SetEntityID(entityID)
+ packetAttributes, err := entity.DecodeAttributes(entity.GetAttributeMask(), data[6:], p, msgType)
+ if err != nil {
+ return err
+ }
+ for name, value := range packetAttributes {
+ entity.attributes[name] = value
+ }
+ return nil
+}
+
+// SerializeTo serializes a Managed Entity into an octet stream
+func (entity *ManagedEntity) SerializeTo(b gopacket.SerializeBuffer, msgType byte, bytesAvailable int, opts gopacket.SerializeOptions) error {
+ // Add class ID and entity ID
+ bytes, err := b.AppendBytes(6)
+ if err != nil {
+ return err
+ }
+ binary.BigEndian.PutUint16(bytes, uint16(entity.GetClassID()))
+ binary.BigEndian.PutUint16(bytes[2:], entity.GetEntityID())
+ binary.BigEndian.PutUint16(bytes[4:], entity.GetAttributeMask())
+
+ // TODO: Need to limit number of bytes appended to not exceed packet size
+ // Is there space/metadata info in 'b' parameter to allow this?
+ err, _ = entity.SerializeAttributes(entity.attributes, entity.GetAttributeMask(), b,
+ msgType, bytesAvailable, opts.FixLengths)
+ return err
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/medef.go b/vendor/github.com/opencord/omci-lib-go/generated/medef.go
new file mode 100644
index 0000000..a2bd2da
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/medef.go
@@ -0,0 +1,180 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import (
+ "errors"
+ "fmt"
+ "github.com/deckarep/golang-set"
+ "github.com/google/gopacket"
+ "math/bits"
+)
+
+// ManagedEntityDefinition defines a Manage Entity
+type ManagedEntityDefinition struct {
+ Name string
+ ClassID ClassID
+ MessageTypes mapset.Set // Mandatory
+ // TODO: Support Optional Message types (this has just been fixed in the code generator)
+ AllowedAttributeMask uint16
+ AttributeDefinitions AttributeDefinitionMap
+ Access ClassAccess
+ Support ClassSupport
+}
+
+func (bme *ManagedEntityDefinition) String() string {
+ return fmt.Sprintf("Definition: %s: CID: %v, Attributes: %v",
+ bme.Name, bme.ClassID, bme.AttributeDefinitions)
+}
+
+// GetName retrieves the name of a managed entity from a ME Definition
+func (bme ManagedEntityDefinition) GetName() string {
+ return bme.Name
+}
+
+// GetClassID retrieves the 16-bit class ID of a managed entity from a ME Definition
+func (bme ManagedEntityDefinition) GetClassID() ClassID {
+ return bme.ClassID
+}
+
+// GetMessageTypes retrieves the OMCI Message Types supporte3d by a managed entity from a ME Definition
+func (bme ManagedEntityDefinition) GetMessageTypes() mapset.Set {
+ return bme.MessageTypes
+}
+
+// GetAllowedAttributeMask retrieves the allowed/valid 16-bit attribute mask of a managed entity
+// from a ME Definition
+func (bme ManagedEntityDefinition) GetAllowedAttributeMask() uint16 {
+ return bme.AllowedAttributeMask
+}
+
+// GetAttributeDefinitions retrieves the attribute definitions of a managed entity from a ME Definition
+func (bme ManagedEntityDefinition) GetAttributeDefinitions() AttributeDefinitionMap {
+ return bme.AttributeDefinitions
+}
+
+func (bme ManagedEntityDefinition) DecodeAttributes(mask uint16, data []byte, p gopacket.PacketBuilder, msgType byte) (AttributeValueMap, error) {
+ if (mask | bme.GetAllowedAttributeMask()) != bme.GetAllowedAttributeMask() {
+ // TODO: Provide custom error code so a response 'result' can properly be coded
+ return nil, errors.New("unsupported attribute mask")
+ }
+ keyList := GetAttributeDefinitionMapKeys(bme.AttributeDefinitions)
+
+ attrMap := make(AttributeValueMap, bits.OnesCount16(mask))
+ for _, index := range keyList {
+ if index == 0 {
+ continue // Skip Entity ID
+ }
+ attrDef := bme.AttributeDefinitions[index]
+ name := attrDef.GetName()
+
+ if mask&attrDef.Mask != 0 {
+ value, err := attrDef.Decode(data, p, msgType)
+ if err != nil {
+ return nil, err
+ }
+ if attrDef.IsTableAttribute() {
+ switch msgType {
+ default:
+ return nil, fmt.Errorf("unsupported Message Type '%v' for table serialization", msgType)
+
+ case byte(Get) | AK: // Get Response
+ attrMap[name] = value
+ data = data[4:]
+
+ case byte(GetNext) | AK: // Get Next Response
+ // Value is a partial octet buffer we need to collect and at
+ // the end (last segment) pull it up into more appropriate table
+ // rows
+ valueBuffer, ok := value.([]byte)
+ if !ok {
+ panic("unexpected type already returned as get-next-response attribute data")
+ }
+ if existing, found := attrMap[name]; found {
+ prev, ok := existing.([]byte)
+ if !ok {
+ panic("unexpected type already in attribute value map")
+ }
+ attrMap[name] = append(prev, valueBuffer...)
+ } else {
+ attrMap[name] = valueBuffer
+ }
+ if size := attrDef.GetSize(); size != 0 && size > len(valueBuffer) {
+ panic("unexpected size difference")
+ }
+ data = data[len(valueBuffer):]
+
+ case byte(Set) | AR: // Set Request
+ fmt.Println("TODO")
+
+ case byte(SetTable) | AR: // Set Table Request
+ // TODO: Only baseline supported at this time
+ return nil, errors.New("attribute encode for set-table-request not yet supported")
+ }
+ } else {
+ attrMap[name] = value
+ data = data[attrDef.GetSize():]
+ }
+ }
+ }
+ return attrMap, nil
+}
+
+func (bme ManagedEntityDefinition) SerializeAttributes(attr AttributeValueMap, mask uint16,
+ b gopacket.SerializeBuffer, msgType byte, bytesAvailable int, packData bool) (error, uint16) {
+
+ if (mask | bme.GetAllowedAttributeMask()) != bme.GetAllowedAttributeMask() {
+ // TODO: Provide custom error code so a response 'result' can properly be coded
+ return errors.New("unsupported attribute mask"), 0
+ }
+ // TODO: Need to limit number of bytes appended to not exceed packet size
+ // Is there space/metadata info in 'b' parameter to allow this?
+ keyList := GetAttributeDefinitionMapKeys(bme.AttributeDefinitions)
+ var failedMask uint16
+
+ for _, index := range keyList {
+ if index == 0 {
+ continue // Skip Entity ID
+ }
+ attrDef := bme.AttributeDefinitions[index]
+
+ if mask&attrDef.Mask != 0 {
+ value, ok := attr[attrDef.GetName()]
+ if !ok {
+ msg := fmt.Sprintf("attribute not found: '%v'", attrDef.GetName())
+ return errors.New(msg), failedMask
+ }
+ size, err := attrDef.SerializeTo(value, b, msgType, bytesAvailable)
+ if err != nil {
+ failedMask |= attrDef.Mask
+ if packData {
+ continue
+ }
+ return err, failedMask
+ }
+ bytesAvailable -= size
+ }
+ }
+ return nil, failedMask
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/mgcconfigdata.go b/vendor/github.com/opencord/omci-lib-go/generated/mgcconfigdata.go
new file mode 100644
index 0000000..135b71b
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/mgcconfigdata.go
@@ -0,0 +1,144 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// MgcConfigDataClassID is the 16-bit ID for the OMCI
+// Managed entity MGC config data
+const MgcConfigDataClassID ClassID = ClassID(155)
+
+var mgcconfigdataBME *ManagedEntityDefinition
+
+// MgcConfigData (class ID #155)
+// The MGC config data ME defines the MGC configuration associated with an MG subscriber. It is
+// conditionally required for ONUs that support ITU-T H.248 VoIP services. If a non-OMCI interface
+// is used to manage VoIP signalling, this ME is unnecessary.
+//
+// Instances of this ME are created and deleted by the OLT.
+//
+// Relationships
+// An instance of this ME may be associated with one or more VoIP voice CTP MEs.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Primary Mgc
+// Primary MGC: This attribute points to a network address ME that contains the name (IP-address or
+// resolved name) of the primary MGC that controls the signalling messages. The port is optional
+// and defaults to 2944 for text message formats and 2955 for binary message formats. (R,-W,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Secondary Mgc
+// Secondary MGC: This attribute points to a network address ME that contains the name (IP-address
+// or resolved name) of the secondary or backup MGC that controls the signalling messages. The port
+// is optional and defaults to 2944 for text message formats and 2955 for binary message formats.
+// (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Tcp_Udp Pointer
+// TCP/UDP pointer: This attribute points to the TCP/UDP config data ME to be used for
+// communication with the MGC. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Version
+// Version: This integer attribute reports the version of the Megaco protocol in use. The ONU
+// should deny an attempt by the OLT to set or create a value that it does not support. The value 0
+// indicates that no particular version is specified. (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Message Format
+// The default value is recommended to be 0. (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Maximum Retry Time
+// Maximum retry time: This attribute specifies the maximum retry time for MGC transactions, in
+// seconds. The default value 0 specifies vendor-specific implementation. (R,-W) (optional)
+// (2-bytes)
+//
+// Maximum Retry Attempts
+// Maximum retry attempts: This attribute specifies the maximum number of times a message is
+// retransmitted to the MGC. The recommended default value 0 specifies vendor-specific
+// implementation. (R,-W, setbycreate) (optional) (2-bytes)
+//
+// Service Change Delay
+// Service change delay: This attribute specifies the service status delay time for changes in line
+// service status. This attribute is specified in seconds. The default value 0 specifies no delay.
+// (R,-W) (optional) (2-bytes)
+//
+// Termination Id Base
+// Termination ID base: This attribute specifies the base string for the ITU-T H.248 physical
+// termination ID(s) for this ONU. This string is intended to uniquely identify an ONU. Vendor-
+// specific termination identifiers (port IDs) are optionally added to this string to uniquely
+// identify a termination on a specific ONU. (R,-W) (optional) (25-bytes)
+//
+// Softswitch
+// Softswitch: This attribute identifies the gateway softswitch vendor. The format is four ASCII
+// coded alphabetic characters [A..Z] as defined in [ATIS0300220]. A value of four null bytes
+// indicates an unknown or unspecified vendor. (R,-W, setbycreate) (mandatory) (4-bytes)
+//
+// Message Id Pointer
+// Message ID pointer: This attribute points to a large string whose value specifies the message
+// identifier string for ITU-T H.248 messages originated by the ONU. (R, W, setbycreate) (optional)
+// (2 bytes)
+//
+type MgcConfigData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ mgcconfigdataBME = &ManagedEntityDefinition{
+ Name: "MgcConfigData",
+ ClassID: 155,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffe0,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("PrimaryMgc", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: Uint16Field("SecondaryMgc", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint16Field("TcpUdpPointer", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ 4: ByteField("Version", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ 5: ByteField("MessageFormat", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 5),
+ 6: Uint16Field("MaximumRetryTime", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, Write), false, true, false, 6),
+ 7: Uint16Field("MaximumRetryAttempts", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 7),
+ 8: Uint16Field("ServiceChangeDelay", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, Write), false, true, false, 8),
+ 9: MultiByteField("TerminationIdBase", OctetsAttributeType, 0x0080, 25, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read, Write), false, true, false, 9),
+ 10: Uint32Field("Softswitch", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 10),
+ 11: Uint16Field("MessageIdPointer", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 11),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewMgcConfigData (class ID 155) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewMgcConfigData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*mgcconfigdataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/mgcperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/mgcperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..68805de
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/mgcperformancemonitoringhistorydata.go
@@ -0,0 +1,138 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// MgcPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity MGC performance monitoring history data
+const MgcPerformanceMonitoringHistoryDataClassID ClassID = ClassID(156)
+
+var mgcperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// MgcPerformanceMonitoringHistoryData (class ID #156)
+// The MGC monitoring data ME provides run-time statistics for an active MGC association. Instances
+// of this ME are created and deleted by the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an instance of the MGC config data or MGC config
+// portal ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the associated MGC config data or
+// to the MGC config portal ME. If a non-OMCI configuration method is used for VoIP, there can be
+// only one live ME instance, associated with the MGC config portal, and with ME ID 0. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 ME that
+// contains PM threshold values. Since no threshold value attribute number exceeds 7, a threshold
+// data 2 ME is optional. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Received Messages
+// Received messages: This attribute counts the number of received Megaco messages on this
+// association, as defined by [ITUT H.341]. (R) (mandatory) (4-bytes)
+//
+// Received Octets
+// Received octets: This attribute counts the total number of octets received on this association,
+// as defined by [ITU-T H.341]. (R) (mandatory) (4-bytes)
+//
+// Sent Messages
+// Sent messages: This attribute counts the total number of Megaco messages sent over this
+// association, as defined by [ITU-T H.341]. (R) (mandatory) (4-bytes)
+//
+// Sent Octets
+// Sent octets: This attribute counts the total number of octets sent over this association, as
+// defined by [ITU-T H.341]. (R) (mandatory) (4-bytes)
+//
+// Protocol Errors
+// (R) (mandatory) (4-bytes)
+//
+// Transport Losses
+// Transport losses: This attribute counts the total number of transport losses (e.g., socket
+// problems) detected on this association. A link loss is defined as loss of communication with the
+// remote entity due to hardware/transient problems, or problems in related software. (R)
+// (mandatory) (4-bytes)
+//
+// Last Detected Event
+// (R) (mandatory) (1-byte)
+//
+// Last Detected Event Time
+// Last detected event time: This attribute reports the time in seconds since the last event on
+// this association was detected, as defined by [ITU-T H.341]. (R) (mandatory) (4-bytes)
+//
+// Last Detected Reset Time
+// Last detected reset time: This attribute reports the time in seconds since these statistics were
+// last reset, as defined by [ITU-T H.341]. Under normal circumstances, a get action on this
+// attribute would return 900-s to indicate a completed 15-min interval. (R) (mandatory) (4-bytes)
+//
+type MgcPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ mgcperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "MgcPerformanceMonitoringHistoryData",
+ ClassID: 156,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffe0,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("ReceivedMessages", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("ReceivedOctets", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("SentMessages", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("SentOctets", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("ProtocolErrors", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint32Field("TransportLosses", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: ByteField("LastDetectedEvent", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: Uint32Field("LastDetectedEventTime", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ 11: Uint32Field("LastDetectedResetTime", CounterAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, false, false, 11),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewMgcPerformanceMonitoringHistoryData (class ID 156) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewMgcPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*mgcperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/mocaethernetperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/mocaethernetperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..07dfbe9
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/mocaethernetperformancemonitoringhistorydata.go
@@ -0,0 +1,144 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// MocaEthernetPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity MoCA Ethernet performance monitoring history data
+const MocaEthernetPerformanceMonitoringHistoryDataClassID ClassID = ClassID(163)
+
+var mocaethernetperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// MocaEthernetPerformanceMonitoringHistoryData (class ID #163)
+// This ME collects PM data for an MoCA Ethernet interface. Instances of this ME are created and
+// deleted by the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an instance of the PPTP MoCA UNI ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the PPTP MoCA UNI. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 and 2 MEs
+// that contains PM threshold values. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Incoming Unicast Packets
+// Incoming unicast packets: (R) (optional) (4-bytes)
+//
+// Incoming Discarded Packets
+// Incoming discarded packets: (R) (optional) (4-bytes)
+//
+// Incoming Errored Packets
+// Incoming errored packets: (R) (optional) (4-bytes)
+//
+// Incoming Unknown Packets
+// Incoming unknown packets: (R) (optional) (4-bytes)
+//
+// Incoming Multicast Packets
+// Incoming multicast packets: (R) (optional) (4-bytes)
+//
+// Incoming Broadcast Packets
+// Incoming broadcast packets: (R) (optional) (4-bytes)
+//
+// Incoming Octets
+// Incoming octets: (R) (optional) (4-bytes)
+//
+// Outgoing Unicast Packets
+// Outgoing unicast packets: (R) (optional) (4-bytes)
+//
+// Outgoing Discarded Packets
+// Outgoing discarded packets: (R) (optional) (4-bytes)
+//
+// Outgoing Errored Packets
+// Outgoing errored packets: (R) (optional) (4-bytes)
+//
+// Outgoing Unknown Packets
+// Outgoing unknown packets: (R) (optional) (4-bytes)
+//
+// Outgoing Multicast Packets
+// Outgoing multicast packets: (R) (optional) (4-bytes)
+//
+// Outgoing Broadcast Packets
+// Outgoing broadcast packets: (R) (optional) (4-bytes)
+//
+// Outgoing Octets
+// Outgoing octets: (R) (optional) (4-bytes)
+//
+type MocaEthernetPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ mocaethernetperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "MocaEthernetPerformanceMonitoringHistoryData",
+ ClassID: 163,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffff,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("IncomingUnicastPackets", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, true, false, 3),
+ 4: Uint32Field("IncomingDiscardedPackets", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, true, false, 4),
+ 5: Uint32Field("IncomingErroredPackets", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, true, false, 5),
+ 6: Uint32Field("IncomingUnknownPackets", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, true, false, 6),
+ 7: Uint32Field("IncomingMulticastPackets", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, true, false, 7),
+ 8: Uint32Field("IncomingBroadcastPackets", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, true, false, 8),
+ 9: Uint32Field("IncomingOctets", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, true, false, 9),
+ 10: Uint32Field("OutgoingUnicastPackets", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, true, false, 10),
+ 11: Uint32Field("OutgoingDiscardedPackets", CounterAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, true, false, 11),
+ 12: Uint32Field("OutgoingErroredPackets", CounterAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, true, false, 12),
+ 13: Uint32Field("OutgoingUnknownPackets", CounterAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, true, false, 13),
+ 14: Uint32Field("OutgoingMulticastPackets", CounterAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, true, false, 14),
+ 15: Uint32Field("OutgoingBroadcastPackets", CounterAttributeType, 0x0002, 0, mapset.NewSetWith(Read), false, true, false, 15),
+ 16: Uint32Field("OutgoingOctets", CounterAttributeType, 0x0001, 0, mapset.NewSetWith(Read), false, true, false, 16),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewMocaEthernetPerformanceMonitoringHistoryData (class ID 163) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewMocaEthernetPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*mocaethernetperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/mplspseudowireterminationpoint.go b/vendor/github.com/opencord/omci-lib-go/generated/mplspseudowireterminationpoint.go
new file mode 100644
index 0000000..213236b
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/mplspseudowireterminationpoint.go
@@ -0,0 +1,151 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// MplsPseudowireTerminationPointClassID is the 16-bit ID for the OMCI
+// Managed entity MPLS pseudowire termination point
+const MplsPseudowireTerminationPointClassID ClassID = ClassID(333)
+
+var mplspseudowireterminationpointBME *ManagedEntityDefinition
+
+// MplsPseudowireTerminationPoint (class ID #333)
+// This ME contains the configuration data of a pseudowire whose underlying transport method is
+// MPLS. Instances of this ME are created and deleted by the OLT.
+//
+// Relationships
+// Zero or one instance of this ME is associated with each instance of the pseudowire TP ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. (R,
+// setbycreate)-(mandatory) (2 bytes)
+//
+// Tp Type
+// (R, W, setbycreate) (mandatory) (1 byte)
+//
+// Tp Pointer
+// TP pointer: This attribute points to the instance of the TP associated with this MPLS PW TP. The
+// type of the associated TP is determined by the TP type attribute. (R, W, setbycreate)
+// (mandatory) (2 bytes)
+//
+// Mpls Label Indicator
+// (R, W, setbycreate) (mandatory) (1 byte)
+//
+// Mpls Pw Direction
+// (R, W, setbycreate) (mandatory) (1 byte)
+//
+// Mpls Pw Uplink Label
+// MPLS PW uplink label: This attribute specifies the label of the inner MPLS pseudowire upstream.
+// The attribute is not meaningful for unidirectional downstream PWs. (R, W, setbycreate)
+// (mandatory) (4 bytes)
+//
+// Mpls Pw Downlink Label
+// MPLS PW downlink label: This attribute specifies the label of the inner MPLS pseudowire
+// downstream. The attribute is not meaningful for unidirectional upstream PWs. (R, W, setbycreate)
+// (mandatory) (4 bytes)
+//
+// Mpls Pw Tc
+// NOTE 1 - The TC field was previously known as EXP. Refer to [bIETF-RFC-5462].
+//
+// Mpls Tunnel Direction
+// (R, W, setbycreate) (mandatory for double-labelled case) (1 byte)
+//
+// Mpls Tunnel Uplink Label
+// MPLS tunnel uplink label: This attribute specifies the (outer) label for the upstream MPLS
+// tunnel. If the MPLS tunnel is downstream only, this attribute should be set to 0. (R, W,
+// setbycreate) (mandatory for double-labelled case) (4 bytes)
+//
+// Mpls Tunnel Downlink Label
+// MPLS tunnel downlink label: This attribute specifies the (outer) label for the downstream MPLS
+// tunnel. If the MPLS tunnel is upstream only, this attribute should be set to 0. (R, W,
+// setbycreate) (mandatory for double-labelled case) (4 bytes)
+//
+// Mpls Tunnel Tc
+// NOTE 2 - The TC field was previously known as EXP. Refer to [bIETF-RFC-5462].
+//
+// Pseudowire Type
+// (R, W, setbycreate) (mandatory) (2 bytes)
+//
+// Pseudowire Control Word Preference
+// Pseudowire control word preference: When set to true, this Boolean attribute specifies that a
+// control word is to be sent with each packet. Some PW types mandate the use of a control word in
+// any event. In such cases, the value configured for this attribute has no effect on the presence
+// of the control word. (R, W, setbycreate) (optional) (1 byte)
+//
+// Administrative State
+// Administrative state: This attribute locks (1) and unlocks (0) the functions performed by the
+// MPLS pseudowire TP. Administrative state is further described in clause-A.1.6. (R,-W) (optional)
+// (1-byte)
+//
+// Operational State
+// Operational state: This attribute reports whether the ME is currently capable of performing its
+// function. Valid values are enabled (0) and disabled (1). (R) (optional) (1-byte)
+//
+type MplsPseudowireTerminationPoint struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ mplspseudowireterminationpointBME = &ManagedEntityDefinition{
+ Name: "MplsPseudowireTerminationPoint",
+ ClassID: 333,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfffe,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("TpType", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: Uint16Field("TpPointer", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: ByteField("MplsLabelIndicator", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ 4: ByteField("MplsPwDirection", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ 5: Uint32Field("MplsPwUplinkLabel", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 5),
+ 6: Uint32Field("MplsPwDownlinkLabel", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 6),
+ 7: ByteField("MplsPwTc", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 7),
+ 8: ByteField("MplsTunnelDirection", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 8),
+ 9: Uint32Field("MplsTunnelUplinkLabel", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 9),
+ 10: Uint32Field("MplsTunnelDownlinkLabel", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 10),
+ 11: ByteField("MplsTunnelTc", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 11),
+ 12: Uint16Field("PseudowireType", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 12),
+ 13: ByteField("PseudowireControlWordPreference", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 13),
+ 14: ByteField("AdministrativeState", UnsignedIntegerAttributeType, 0x0004, 0, mapset.NewSetWith(Read, Write), false, true, false, 14),
+ 15: ByteField("OperationalState", UnsignedIntegerAttributeType, 0x0002, 0, mapset.NewSetWith(Read), true, true, false, 15),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewMplsPseudowireTerminationPoint (class ID 333) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewMplsPseudowireTerminationPoint(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*mplspseudowireterminationpointBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/multicastgeminterworkingterminationpoint.go b/vendor/github.com/opencord/omci-lib-go/generated/multicastgeminterworkingterminationpoint.go
new file mode 100644
index 0000000..80c7bcb
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/multicastgeminterworkingterminationpoint.go
@@ -0,0 +1,173 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// MulticastGemInterworkingTerminationPointClassID is the 16-bit ID for the OMCI
+// Managed entity Multicast GEM interworking termination point
+const MulticastGemInterworkingTerminationPointClassID ClassID = ClassID(281)
+
+var multicastgeminterworkingterminationpointBME *ManagedEntityDefinition
+
+// MulticastGemInterworkingTerminationPoint (class ID #281)
+// An instance of this ME represents a point in a G-PON ONU where a multicast service interworks
+// with the GEM layer. At this point, a multicast bit stream is reconstructed from GEM packets.
+//
+// Instances of this ME are created and deleted by the OLT.
+//
+// Multicast interworking GEM modes of operation
+//
+// The default multicast operation of the PON is where all the multicast content streams are
+// carried in one PON layer connection (GEM port). This connection is then specified in the first
+// entry of the IPv4 or IPv6 multicast address table, as the case may be. This single entry also
+// specifies an all-inclusive IP multicast destination address (DA) range (e.g., 224.0.0.0 to
+// 239.255.255.255 in the case of IPv4). The ONU then filters the traffic based on either Ethernet
+// MAC addresses or IP addresses. The associated GEM port network CTP ME specifies the GEM port-ID
+// that supports all multicast connections.
+//
+// In the default multicast operation, all multicast content streams are placed in one PON layer
+// connection (GEM port). The OLT sets up a completely conventional model, a pointer from the
+// multicast GEM IW termination to a GEM port network CTP. The OLT configures the GEM port-ID of
+// the GEM port network CTP into the appropriate multicast address table attribute(s), along with
+// the other table fields that specify the range of IP multicast DAs. The ONU accepts the entire
+// multicast stream through the designated GEM port, then filters the traffic based on either the
+// Ethernet MAC address or IP DA.
+//
+// An optional multicast configuration supports separate multicast streams carried over separate
+// PON layer connections, i.e., on separate GEM ports. This permits the ONU to filter multicast
+// streams at the GEM level, which is efficient in hardware, while ignoring other multicast streams
+// that may be of interest to other ONUs on the PON.
+//
+// After configuring the explicit model for the first multicast GEM port, the OLT supports multiple
+// multicast GEM ports by then configuring additional entries into the multicast address table(s),
+// entries with different GEM port-IDs. The OMCI model is defined such that these ports are
+// implicitly grouped together and served by the single explicit GEM port network CTP. No
+// additional GEM network CTPs need be created or linked for the additional GEM ports.
+//
+// Several multicast GEM IW TPs can exist, each linked to separate bridge ports or mappers to serve
+// different communities of interest in a complex ONU.
+//
+// Discovery of multicast support
+//
+// The OLT uses the multicast GEM IW TP entity as the means to discover the ONU's multicast
+// capability. This entity is mandatory if multicast is supported by the ONU. If the OLT attempts
+// to create this entity on an ONU that does not support multicast, the create command fails. The
+// create or set command also fails if the OLT attempts to exploit optional features that the ONU
+// does not support, e.g., in attempting to write a multicast address table with more than a single
+// entry or to create multiple multicast GEM IW TPs.
+//
+// This ME is defined by a similarity to the unicast GEM IW TP, and a number of its attributes are
+// not meaningful in a multicast context. These attributes are set to 0 and not used, as indicated
+// in the following.
+//
+// Relationships
+// An instance of this ME exists for each occurrence of transformation of GEM packets into a
+// multicast data stream.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. The value 0xFFFF
+// is reserved. (R, setbycreate) (mandatory) (2-bytes)
+//
+// Gem Port Network Ctp Connectivity Pointer
+// GEM port network CTP connectivity pointer: This attribute points to an instance of the GEM port
+// network CTP that is associated with this multicast GEM IW TP. (R,-W, setbycreate) (mandatory)
+// (2-bytes)
+//
+// Interworking Option
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Service Profile Pointer
+// Service profile pointer: This attribute is set to 0 and not used. For backward compatibility, it
+// may also be set to point to a MAC bridge service profile or IEEE 802.1p mapper service profile.
+// (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Not Used 1
+// Not used 1: This attribute is set to 0 and not used. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Pptp Counter
+// PPTP counter: This attribute represents the number of instances of PPTP MEs associated with this
+// instance of the multicast GEM IW TP. This attribute conveys no information that is not available
+// elsewhere; it may be set to 0xFF and not used. (R) (optional) (1-byte)
+//
+// Operational State
+// Operational state: This attribute indicates whether the ME is capable of performing its
+// function. Valid values are enabled (0) and disabled (1). (R) (optional) (1-byte)
+//
+// Gal Profile Pointer
+// GAL profile pointer: This attribute is set to 0 and not used. For backward compatibility, it may
+// also be set to point to a GAL Ethernet profile. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Not Used 2
+// Not used 2: This attribute is set to 0 and not used. (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Ipv4 Multicast Address Table
+// IPv4 multicast address table: This attribute maps IP multicast addresses to PON layer addresses.
+// Each entry contains the following.
+//
+// Ipv6 Multicast Address Table
+// (R,-W) (optional) (24N bytes, where N is the number of entries in the list.)
+//
+type MulticastGemInterworkingTerminationPoint struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ multicastgeminterworkingterminationpointBME = &ManagedEntityDefinition{
+ Name: "MulticastGemInterworkingTerminationPoint",
+ ClassID: 281,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ GetNext,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffc0,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("GemPortNetworkCtpConnectivityPointer", PointerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: ByteField("InterworkingOption", EnumerationAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint16Field("ServiceProfilePointer", PointerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ 4: Uint16Field("NotUsed1", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ 5: ByteField("PptpCounter", UnsignedIntegerAttributeType, 0x0800, 255, mapset.NewSetWith(Read), false, true, false, 5),
+ 6: ByteField("OperationalState", EnumerationAttributeType, 0x0400, 0, mapset.NewSetWith(Read), true, true, false, 6),
+ 7: Uint16Field("GalProfilePointer", PointerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 7),
+ 8: ByteField("NotUsed2", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 8),
+ 9: TableField("Ipv4MulticastAddressTable", TableAttributeType, 0x0080, TableInfo{nil, 12}, mapset.NewSetWith(Read, Write), false, false, false, 9),
+ 10: TableField("Ipv6MulticastAddressTable", TableAttributeType, 0x0040, TableInfo{nil, 24}, mapset.NewSetWith(Read, Write), false, true, false, 10),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewMulticastGemInterworkingTerminationPoint (class ID 281) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewMulticastGemInterworkingTerminationPoint(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*multicastgeminterworkingterminationpointBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/multicastsubscriberconfiginfo.go b/vendor/github.com/opencord/omci-lib-go/generated/multicastsubscriberconfiginfo.go
new file mode 100644
index 0000000..59444a9
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/multicastsubscriberconfiginfo.go
@@ -0,0 +1,128 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// MulticastSubscriberConfigInfoClassID is the 16-bit ID for the OMCI
+// Managed entity Multicast subscriber config info
+const MulticastSubscriberConfigInfoClassID ClassID = ClassID(310)
+
+var multicastsubscriberconfiginfoBME *ManagedEntityDefinition
+
+// MulticastSubscriberConfigInfo (class ID #310)
+// This ME organizes data associated with multicast management at subscriber ports of IEEE-802.1
+// bridges, including IEEE-802.1p mappers when the provisioning model is mapper-based rather than
+// bridge-based. Instances of this ME are created and deleted by the OLT. Because of backward
+// compatibility considerations, a subscriber port without an associated multicast subscriber
+// config info ME would be expected to support unrestricted multicast access; this ME may therefore
+// be viewed as restrictive, rather than permissive.
+//
+// Through separate attributes, this ME supports either a single multicast operations profile in
+// its backward compatible form, or a list of multicast operations profiles instead (the list may
+// of course contain a single entry). The OLT can determine whether the ONU supports the multiple
+// profile capability by performing a get operation on the optional multicast service package table
+// attribute, which exists only on ONUs that are prepared to support the feature.
+//
+// Relationships
+// An instance of this ME is associated with one instance of the MAC bridge port configuration data
+// or the IEEE-802.1p mapper service profile.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the MAC bridge port configuration
+// data or IEEE-802.1p mapper ME. (R, setbycreate) (mandatory) (2-bytes)
+//
+// Me Type
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Multicast Operations Profile Pointer
+// Multicast operations profile pointer: This attribute points to an instance of the multicast
+// operations profile. This attribute is ignored by the ONU if a non-empty multicast service
+// package table attribute is present. (R,W, set-by-create) (mandatory) (2 bytes)
+//
+// Max Simultaneous Groups
+// Max simultaneous groups: This attribute specifies the maximum number of dynamic multicast groups
+// that may be replicated to the client port at any one time. The recommended default value 0
+// specifies that no administrative limit is to be imposed. (R,-W, setbycreate) (optional)
+// (2-bytes)
+//
+// Max Multicast Bandwidth
+// Max multicast bandwidth: This attribute specifies the maximum imputed dynamic bandwidth, in
+// bytes per second, that may be delivered to the client port at any one time. The recommended
+// default value 0 specifies that no administrative limit is to be imposed. (R,-W, setbycreate)
+// (optional) (4-bytes)
+//
+// Bandwidth Enforcement
+// Bandwidth enforcement: The recommended default value of this Boolean attribute is false, and
+// specifies that attempts to exceed the max multicast bandwidth be counted but honoured. The value
+// true specifies that such attempts be counted and denied. The imputed bandwidth value is taken
+// from the dynamic access control list table, both for a new join request and for pre-existing
+// groups. (R,-W, setbycreate) (optional) (1-byte)
+//
+// Multicast Service Package Table
+// (R,-W) (optional) (20N bytes, where N is the number of entries in the table)
+//
+// Allowed Preview Groups Table
+// Each list entry begins with a table control field:
+//
+type MulticastSubscriberConfigInfo struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ multicastsubscriberconfiginfoBME = &ManagedEntityDefinition{
+ Name: "MulticastSubscriberConfigInfo",
+ ClassID: 310,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ GetNext,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfe00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("MeType", EnumerationAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: Uint16Field("MulticastOperationsProfilePointer", PointerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint16Field("MaxSimultaneousGroups", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 3),
+ 4: Uint32Field("MaxMulticastBandwidth", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 4),
+ 5: ByteField("BandwidthEnforcement", EnumerationAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 5),
+ 6: TableField("MulticastServicePackageTable", TableAttributeType, 0x0400, TableInfo{nil, 20}, mapset.NewSetWith(Read, Write), false, true, false, 6),
+ 7: TableField("AllowedPreviewGroupsTable", TableAttributeType, 0x0200, TableInfo{nil, 22}, mapset.NewSetWith(Read, Write), false, false, false, 7),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewMulticastSubscriberConfigInfo (class ID 310) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewMulticastSubscriberConfigInfo(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*multicastsubscriberconfiginfoBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/multicastsubscribermonitor.go b/vendor/github.com/opencord/omci-lib-go/generated/multicastsubscribermonitor.go
new file mode 100644
index 0000000..b973144
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/multicastsubscribermonitor.go
@@ -0,0 +1,109 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// MulticastSubscriberMonitorClassID is the 16-bit ID for the OMCI
+// Managed entity Multicast subscriber monitor
+const MulticastSubscriberMonitorClassID ClassID = ClassID(311)
+
+var multicastsubscribermonitorBME *ManagedEntityDefinition
+
+// MulticastSubscriberMonitor (class ID #311)
+// This ME provides the current status of each port with respect to its multicast subscriptions. It
+// may be useful for status monitoring or debugging purposes. The status table includes all dynamic
+// groups currently subscribed by the port.
+//
+// Relationships
+// Instances of this ME are created and deleted at the request of the OLT. One instance may exist
+// for each IEEE-802.1 UNI configured to support multicast subscription.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the MAC bridge port configuration
+// data or IEEE-802.1p mapper ME. (R,-setbycreate) (mandatory) (2-bytes)
+//
+// Me Type
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Current Multicast Bandwidth
+// Current multicast bandwidth: This attribute is the ONU's (BE) estimate of the actual bandwidth
+// currently being delivered to this particular MAC bridge port over all dynamic multicast groups.
+// (R) (optional) (4-bytes)
+//
+// Join Messages Counter
+// Join messages counter: This attribute counts the number of times the corresponding subscriber
+// sent a join message that was accepted. When full, the counter rolls over to 0. (R) (optional)
+// (4-bytes)
+//
+// Bandwidth Exceeded Counter
+// Bandwidth exceeded counter: This attribute counts the number of join messages that did exceed,
+// or would have exceeded, the max multicast bandwidth, whether accepted or denied. When full, the
+// counter rolls over to 0. (R) (optional) (4-bytes)
+//
+// Ipv4 Active Group List Table
+// (R) (mandatory) (24N bytes)
+//
+// Ipv6 Active Group List Table
+// (R) (optional) (58N bytes)
+//
+type MulticastSubscriberMonitor struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ multicastsubscribermonitorBME = &ManagedEntityDefinition{
+ Name: "MulticastSubscriberMonitor",
+ ClassID: 311,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ GetNext,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfc00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("MeType", EnumerationAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: Uint32Field("CurrentMulticastBandwidth", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read), false, true, false, 2),
+ 3: Uint32Field("JoinMessagesCounter", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, true, false, 3),
+ 4: Uint32Field("BandwidthExceededCounter", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, true, false, 4),
+ 5: TableField("Ipv4ActiveGroupListTable", TableAttributeType, 0x0800, TableInfo{nil, 24}, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: TableField("Ipv6ActiveGroupListTable", TableAttributeType, 0x0400, TableInfo{nil, 58}, mapset.NewSetWith(Read), false, true, false, 6),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewMulticastSubscriberMonitor (class ID 311) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewMulticastSubscriberMonitor(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*multicastsubscribermonitorBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/networkaddress.go b/vendor/github.com/opencord/omci-lib-go/generated/networkaddress.go
new file mode 100644
index 0000000..48ae98d
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/networkaddress.go
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// NetworkAddressClassID is the 16-bit ID for the OMCI
+// Managed entity Network address
+const NetworkAddressClassID ClassID = ClassID(137)
+
+var networkaddressBME *ManagedEntityDefinition
+
+// NetworkAddress (class ID #137)
+// The network address ME associates a network address with security methods required to access a
+// server. It is conditionally required for ONUs that support VoIP services. The address may take
+// the form of a URL, a fully qualified path or IP address represented as an ACII string.
+//
+// If a non-OMCI interface is used to manage VoIP signalling, this ME is unnecessary.
+//
+// Instances of this ME are created and deleted by the OLT or the ONU, depending on the method used
+// and case.
+//
+// Relationships
+// Any ME that requires a network address may link to an instance of this ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Instances of
+// this ME created autonomously by the ONU have IDs in the range 0..0x7FFF. Instances created by
+// the OLT have IDs in the range 0x8000..0xFFFE. The value 0xFFFF is reserved. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Security Pointer
+// Security pointer: This attribute points to an authentication security method ME. The
+// authentication security method indicates the username and password to be used when retrieving
+// the network address indicated by this ME. A null pointer indicates that security attributes are
+// not defined for this network address. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Address Pointer
+// Address pointer: This attribute points to the large string ME that contains the network address.
+// It may contain a fully qualified domain name, URI or IP address. The URI may also contain a port
+// identifier (e.g., "x.y.z.com:5060"). A null pointer indicates that no network address is
+// defined. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+type NetworkAddress struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ networkaddressBME = &ManagedEntityDefinition{
+ Name: "NetworkAddress",
+ ClassID: 137,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xc000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("SecurityPointer", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: Uint16Field("AddressPointer", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewNetworkAddress (class ID 137) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewNetworkAddress(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*networkaddressBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/networkdialplantable.go b/vendor/github.com/opencord/omci-lib-go/generated/networkdialplantable.go
new file mode 100644
index 0000000..9ca0049
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/networkdialplantable.go
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// NetworkDialPlanTableClassID is the 16-bit ID for the OMCI
+// Managed entity Network dial plan table
+const NetworkDialPlanTableClassID ClassID = ClassID(145)
+
+var networkdialplantableBME *ManagedEntityDefinition
+
+// NetworkDialPlanTable (class ID #145)
+// The network dial plan table ME is optional for ONUs providing VoIP services. This ME is used to
+// provision dial plans from the OLT. Instances of this ME are created and deleted by the OLT. If a
+// non-OMCI interface is used to manage SIP for VoIP, this ME is unnecessary.
+//
+// Relationships
+// An instance of this ME may be associated with one or more instances of the SIP user data ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Dial Plan Number
+// Dial plan number: This attribute indicates the current number of dial plans in the dial plan
+// table. (R) (mandatory) (2-bytes)
+//
+// Dial Plan Table Max Size
+// Dial plan table max size: This attribute defines the maximum number of dial plans that can be
+// stored in the dial plan table. (R, setbycreate) (mandatory) (2-bytes)
+//
+// Critical Dial Timeout
+// Critical dial timeout: This attribute defines the critical dial timeout for digit map
+// processing, in milliseconds. The recommended default value is 4000-ms. (R,-W, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Partial Dial Timeout
+// Partial dial timeout: This attribute defines the partial dial timeout for digit map processing,
+// in milliseconds. The recommended default value is 16000-ms. (R,-W, setbycreate) (mandatory)
+// (2-bytes)
+//
+// Dial Plan Format
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Dial Plan Table
+// (R,-W) (mandatory) (30 * N bytes, where N is the number of dial plans)
+//
+type NetworkDialPlanTable struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ networkdialplantableBME = &ManagedEntityDefinition{
+ Name: "NetworkDialPlanTable",
+ ClassID: 145,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ GetNext,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfc00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("DialPlanNumber", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("DialPlanTableMaxSize", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 2),
+ 3: Uint16Field("CriticalDialTimeout", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ 4: Uint16Field("PartialDialTimeout", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ 5: ByteField("DialPlanFormat", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 5),
+ 6: TableField("DialPlanTable", TableAttributeType, 0x0400, TableInfo{nil, 30}, mapset.NewSetWith(Read, Write), false, false, false, 6),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewNetworkDialPlanTable (class ID 145) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewNetworkDialPlanTable(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*networkdialplantableBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/octetstring.go b/vendor/github.com/opencord/omci-lib-go/generated/octetstring.go
new file mode 100644
index 0000000..c6f3f0f
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/octetstring.go
@@ -0,0 +1,94 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// OctetStringClassID is the 16-bit ID for the OMCI
+// Managed entity Octet string
+const OctetStringClassID ClassID = ClassID(307)
+
+var octetstringBME *ManagedEntityDefinition
+
+// OctetString (class ID #307)
+// The octet string is modelled on the large string ME. The large string is constrained to
+// printable characters because it uses null as a trailing delimiter. The octet string has a length
+// attribute and is therefore suitable for arbitrary sequences of bytes.
+//
+// Instances of this ME are created and deleted by the OLT. To use this ME, the OLT instantiates
+// the octet string ME and then points to the created ME from other ME instances. Systems that
+// maintain the octet string should ensure that the octet string ME is not deleted while it is
+// still linked.
+//
+// Relationships
+// An instance of this ME may be cited by any ME that requires an octet string that can exceed
+// 25-bytes in length.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. The values 0 and
+// 0xFFFF are reserved. (R, setbycreate) (mandatory) (2-bytes)
+//
+// Length
+// Length: This attribute specifies the number of octets that comprise the sequence of octets. This
+// attribute defaults to 0 to indicate no octet string is defined. The maximum value of this
+// attribute is 375 (15 parts, 25-bytes each). (R,-W) (mandatory) (2-bytes)
+//
+// Part 1, Part 2, Part 3, Part 4, Part 5, Part 6, Part 7, Part 8, Part 9, Part 10, Part 11, Part 12, Part 13, Part 14, Part 15
+// Part 1, Part 2, Part 3, Part 4, Part 5, Part 6, Part 7, Part 8, Part 9, Part 10, Part 11, Part
+// 12, Part 13, Part 14, Part 15: (R,-W) (part 1 mandatory, others optional) (25-bytes * 15
+// attributes)
+//
+type OctetString struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ octetstringBME = &ManagedEntityDefinition{
+ Name: "OctetString",
+ ClassID: 307,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xc000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("Length", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: MultiByteField("Part1,Part2,Part3,Part4,Part5,Part6,Part7,Part8,Part9,Part10,Part11,Part12,Part13,Part14,Part15", OctetsAttributeType, 0x4000, 25, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read, Write), false, false, false, 2),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewOctetString (class ID 307) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewOctetString(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*octetstringBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/olt-g.go b/vendor/github.com/opencord/omci-lib-go/generated/olt-g.go
new file mode 100644
index 0000000..9f91f49
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/olt-g.go
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// OltGClassID is the 16-bit ID for the OMCI
+// Managed entity OLT-G
+const OltGClassID ClassID = ClassID(131)
+
+var oltgBME *ManagedEntityDefinition
+
+// OltG (class ID #131)
+// This optional ME identifies the OLT to which an ONU is connected. This ME provides a way for the
+// ONU to configure itself for operability with a particular OLT. It also provides a way for the
+// OLT to communicate the time of day to the ONU.
+//
+// An ONU that supports this ME automatically creates an instance of it. Immediately following the
+// start-up phase, the OLT should set the ONU to the desired configuration. Interpretation of the
+// OLT vendor ID, equipment ID and version attributes is a matter for negotiation between the two
+// vendors involved.
+//
+// Relationships
+// The single instance of this ME is associated with the ONU ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. There is only
+// one instance, number 0. (R) (mandatory) (2-bytes)
+//
+// Olt Vendor Id
+// OLT vendor ID: This attribute identifies the OLT vendor. It is the same as the four most
+// significant bytes of an ONU serial number specified in the respective TC layer specification.
+// Upon instantiation, this attribute comprises all spaces. (R,-W) (mandatory) (4-bytes)
+//
+// Equipment Id
+// Equipment ID: This attribute may be used to identify the specific type of OLT. The default value
+// of all spaces indicates that equipment ID information is not available or applicable to the OLT
+// being represented. (R,-W) (mandatory) (20-bytes)
+//
+// Version
+// Version: This attribute identifies the version of the OLT as defined by the vendor. The default
+// left-justified ASCII string "0" (padded with trailing nulls) indicates that version information
+// is not available or applicable to the OLT being represented. (R,-W) (mandatory) (14-bytes)
+//
+// Time Of Day Information
+// NOTE - In ITU-T G.987/ITU-T G.989 systems, the superframe count field of the time of day
+// information attribute contains the 32 LSBs of the actual counter.
+//
+type OltG struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ oltgBME = &ManagedEntityDefinition{
+ Name: "OltG",
+ ClassID: 131,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xf000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: MultiByteField("OltVendorId", StringAttributeType, 0x8000, 4, toOctets("ICAgIA=="), mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: MultiByteField("EquipmentId", StringAttributeType, 0x4000, 20, toOctets("ICAgICAgICAgICAgICAgICAgICA="), mapset.NewSetWith(Read, Write), false, false, false, 2),
+ 3: MultiByteField("Version", StringAttributeType, 0x2000, 14, toOctets("MAAAAAAAAAAAAAAAAAA="), mapset.NewSetWith(Read, Write), false, false, false, 3),
+ 4: MultiByteField("TimeOfDayInformation", OctetsAttributeType, 0x1000, 14, toOctets("AAAAAAAAAAAAAAAAAAA="), mapset.NewSetWith(Read, Write), false, true, false, 4),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewOltG (class ID 131) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewOltG(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*oltgBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/omci.go b/vendor/github.com/opencord/omci-lib-go/generated/omci.go
new file mode 100644
index 0000000..331674b
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/omci.go
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// OmciClassID is the 16-bit ID for the OMCI
+// Managed entity OMCI
+const OmciClassID ClassID = ClassID(287)
+
+var omciBME *ManagedEntityDefinition
+
+// Omci (class ID #287)
+// This ME describes the ONU's general level of support for OMCI MEs and messages. This ME is not
+// included in an MIB upload.
+//
+// Relationships
+// One instance exists in the ONU. The ME entities are related to the OMCI entity.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. There is only
+// one instance, number 0. (R) (mandatory) (2-bytes)
+//
+// Me Type Table
+// ME type table: This attribute lists the ME classes supported by the ONU. Each entry contains the
+// ME class value (see Table 11.2.4-1) of an ME type. (R) (mandatory) (2 * N bytes, where N is the
+// number of entries in the list.)
+//
+// Message Type Table
+// Message type table: This attribute is a list of message types (MTs) supported by the ONU. Each
+// entry contains the MT of an OMCI message (see Table-11.2.2-1). (R) (mandatory) (M bytes, where M
+// is the number of entries in the list.)
+//
+type Omci struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ omciBME = &ManagedEntityDefinition{
+ Name: "Omci",
+ ClassID: 287,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ GetNext,
+ ),
+ AllowedAttributeMask: 0xc000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: TableField("MeTypeTable", TableAttributeType, 0x8000, TableInfo{nil, 2}, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: TableField("MessageTypeTable", TableAttributeType, 0x4000, TableInfo{nil, 1}, mapset.NewSetWith(Read), false, false, false, 2),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewOmci (class ID 287) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewOmci(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*omciBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/omcidefs.go b/vendor/github.com/opencord/omci-lib-go/generated/omcidefs.go
new file mode 100644
index 0000000..4b7367b
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/omcidefs.go
@@ -0,0 +1,281 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import (
+ "fmt"
+ "github.com/deckarep/golang-set"
+ "github.com/google/gopacket"
+)
+
+// MsgType represents a OMCI message-type
+type MsgType byte
+
+// MsgType represents the status field in a OMCI Response frame
+type Results byte
+
+// AttributeAccess represents the access allowed to an Attribute. Some MEs
+// are instantiated by the ONU autonomously. Others are instantiated on
+// explicit request of the OLT via a create command, and a few ME types may
+// be instantiated in either way, depending on the ONU architecture or
+// circumstances.
+//
+// Attributes of an ME that is auto-instantiated by the ONU can be read (R),
+// write (W), or read, write (R, W). On the other hand, attributes of a ME
+// that is instantiated by the OLT can be either (R), (W), (R, W),
+// (R, set by create) or (R, W, set by create).
+type AttributeAccess byte
+
+// ClassID is a 16-bit value that uniquely defines a Managed Entity clas
+// from the ITU-T G.988 specification.
+type ClassID uint16
+
+func (cid ClassID) String() string {
+ if entity, err := LoadManagedEntityDefinition(cid); err.StatusCode() == Success {
+ return fmt.Sprintf("[%s] (%d/%#x)",
+ entity.GetManagedEntityDefinition().GetName(), uint16(cid), uint16(cid))
+ }
+ return fmt.Sprintf("unknown ClassID: %d (%#x)", uint16(cid), uint16(cid))
+}
+
+const (
+ // AK (Bit 6), indicates whether this message is an AK to an action request.
+ // If a message is an AK, this bit is set to 1. If the message is not a
+ // response to a command, this bit is set to 0. In messages sent by the OLT,
+ // this bit is always 0.
+ AK byte = 0x20
+
+ // AR (Bit 7), acknowledge request, indicates whether the message requires an
+ // AK. An AK is a response to an action request, not a link layer handshake.
+ // If an AK is expected, this bit is set to 1. If no AK is expected, this bit
+ // is 0. In messages sent by the ONU, this bit is always 0
+ AR byte = 0x40
+
+ // MsgTypeMask provides a mask to get the base message type
+ MsgTypeMask = 0x1F
+)
+
+const (
+ // Message Types
+ Create MsgType = 4
+ Delete MsgType = 6
+ Set MsgType = 8
+ Get MsgType = 9
+ GetAllAlarms MsgType = 11
+ GetAllAlarmsNext MsgType = 12
+ MibUpload MsgType = 13
+ MibUploadNext MsgType = 14
+ MibReset MsgType = 15
+ AlarmNotification MsgType = 16
+ AttributeValueChange MsgType = 17
+ Test MsgType = 18
+ StartSoftwareDownload MsgType = 19
+ DownloadSection MsgType = 20
+ EndSoftwareDownload MsgType = 21
+ ActivateSoftware MsgType = 22
+ CommitSoftware MsgType = 23
+ SynchronizeTime MsgType = 24
+ Reboot MsgType = 25
+ GetNext MsgType = 26
+ TestResult MsgType = 27
+ GetCurrentData MsgType = 28
+ SetTable MsgType = 29 // Defined in Extended Message Set Only
+)
+
+func (mt MsgType) String() string {
+ switch mt {
+ default:
+ return "Unknown"
+ case Create:
+ return "Create"
+ case Delete:
+ return "Delete"
+ case Set:
+ return "Set"
+ case Get:
+ return "Get"
+ case GetAllAlarms:
+ return "Get All Alarms"
+ case GetAllAlarmsNext:
+ return "Get All Alarms Next"
+ case MibUpload:
+ return "MIB Upload"
+ case MibUploadNext:
+ return "MIB Upload Next"
+ case MibReset:
+ return "MIB Reset"
+ case AlarmNotification:
+ return "Alarm Notification"
+ case AttributeValueChange:
+ return "Attribute Value Change"
+ case Test:
+ return "Test"
+ case StartSoftwareDownload:
+ return "Start Software Download"
+ case DownloadSection:
+ return "Download Section"
+ case EndSoftwareDownload:
+ return "EndSoftware Download"
+ case ActivateSoftware:
+ return "Activate Software"
+ case CommitSoftware:
+ return "Commit Software"
+ case SynchronizeTime:
+ return "Synchronize Time"
+ case Reboot:
+ return "Reboot"
+ case GetNext:
+ return "Get Next"
+ case TestResult:
+ return "Test Result"
+ case GetCurrentData:
+ return "Get Current Data"
+ case SetTable:
+ return "Set Table"
+ }
+}
+
+var allNotificationTypes = [...]MsgType{
+ AlarmNotification,
+ AttributeValueChange,
+ TestResult,
+}
+
+// SupportsMsgType returns true if the managed entity supports the desired
+// Message Type / action
+func SupportsMsgType(entity IManagedEntityDefinition, msgType MsgType) bool {
+ return entity.GetMessageTypes().Contains(msgType)
+}
+
+func IsAutonomousNotification(mt MsgType) bool {
+ for _, m := range allNotificationTypes {
+ if mt == m {
+ return true
+ }
+ }
+ return false
+}
+
+const (
+ // Response status codes
+ Success Results = 0 // command processed successfully
+ ProcessingError Results = 1 // command processing error
+ NotSupported Results = 2 // command not supported
+ ParameterError Results = 3 // parameter error
+ UnknownEntity Results = 4 // unknown managed entity
+ UnknownInstance Results = 5 // unknown managed entity instance
+ DeviceBusy Results = 6 // device busy
+ InstanceExists Results = 7 // instance exists
+ AttributeFailure Results = 9 // Attribute(s) failed or unknown
+)
+
+func (rc Results) String() string {
+ switch rc {
+ default:
+ return "Unknown"
+ case Success:
+ return "Success"
+ case ProcessingError:
+ return "Processing Error"
+ case NotSupported:
+ return "Not Supported"
+ case ParameterError:
+ return "Parameter Error"
+ case UnknownEntity:
+ return "Unknown Entity"
+ case UnknownInstance:
+ return "Unknown Instance"
+ case DeviceBusy:
+ return "Device Busy"
+ case InstanceExists:
+ return "Instance Exists"
+ case AttributeFailure:
+ return "Attribute Failure"
+ }
+}
+
+const (
+ // Access allowed on a Managed Entity attribute
+ Read AttributeAccess = 1 << iota
+ Write
+ SetByCreate
+)
+
+func (access AttributeAccess) String() string {
+ switch access {
+ default:
+ return "Unknown"
+ case Read:
+ return "Read"
+ case Write:
+ return "Write"
+ case SetByCreate:
+ return "SetByCreate"
+ case Read | Write:
+ return "Read/Write"
+ case Read | SetByCreate:
+ return "Read/SetByCreate"
+ case Write | SetByCreate:
+ return "Write/SetByCreate"
+ case Read | Write | SetByCreate:
+ return "Read/Write/SetByCreate"
+ }
+}
+
+// SupportsAttributeAccess returns true if the managed entity attribute
+// supports the desired access
+func SupportsAttributeAccess(attr AttributeDefinition, acc AttributeAccess) bool {
+ return attr.GetAccess().Contains(acc)
+}
+
+type IManagedEntityDefinition interface {
+ GetName() string
+ GetClassID() ClassID
+ GetMessageTypes() mapset.Set
+ GetAllowedAttributeMask() uint16
+ GetAttributeDefinitions() AttributeDefinitionMap
+
+ DecodeAttributes(uint16, []byte, gopacket.PacketBuilder, byte) (AttributeValueMap, error)
+ SerializeAttributes(AttributeValueMap, uint16, gopacket.SerializeBuffer, byte, int, bool) (error, uint16)
+}
+
+type IManagedEntity interface {
+ IManagedEntityDefinition
+ GetManagedEntityDefinition() IManagedEntityDefinition
+
+ GetEntityID() uint16
+ SetEntityID(uint16) error
+
+ GetAttributeMask() uint16
+
+ GetAttributeValueMap() AttributeValueMap
+ GetAttribute(string) (interface{}, error)
+ GetAttributeByIndex(uint) (interface{}, error)
+
+ SetAttribute(string, interface{}) error
+ SetAttributeByIndex(uint, interface{}) error
+
+ DeleteAttribute(string) error
+ DeleteAttributeByIndex(uint) error
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/omcierror.go b/vendor/github.com/opencord/omci-lib-go/generated/omcierror.go
new file mode 100644
index 0000000..2129bd2
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/omcierror.go
@@ -0,0 +1,302 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import (
+ "errors"
+ "fmt"
+)
+
+// Custom Go Error messages for common OMCI errors
+//
+// Response Status code related errors
+type OmciErrors interface {
+ Error() string
+ StatusCode() Results
+ GetError() error
+ GetFailureMask() uint16
+ GetUnsupporteMask() uint16
+}
+
+type OmciError struct {
+ err string
+ statusCode Results
+ failureMask uint16
+ unsupportedMask uint16
+}
+
+func (e *OmciError) GetError() error {
+ if e.statusCode == Success {
+ return nil
+ }
+ return errors.New(e.err)
+}
+
+func (e *OmciError) Error() string {
+ return e.err
+}
+
+func (e *OmciError) StatusCode() Results {
+ return e.statusCode
+}
+
+func (e *OmciError) GetFailureMask() uint16 {
+ return e.failureMask
+}
+
+func (e *OmciError) GetUnsupporteMask() uint16 {
+ return e.unsupportedMask
+}
+
+// NewOmciSuccess is used to convey a successful request. For Set/Get responses,
+// this indicates that all attributes were successfully set/retrieved.
+//
+// For Set/Get requests that have unsupported/failed attributes (code 1001), use the
+// NewAttributeFailureError() function to convey the proper status (AttributeFailure).
+//
+// For Create requests that have parameter errors (code 0011), use the NewParameterError()
+// function to signal which attributes were in error
+func NewOmciSuccess() OmciErrors {
+ return &OmciError{
+ statusCode: Success,
+ }
+}
+
+// NewNonStatusError is for processing errors that do not involve
+// frame processing status & results
+func NewNonStatusError(args ...interface{}) OmciErrors {
+ defaultValue := "command processing error"
+ return &OmciProcessingError{
+ OmciError: OmciError{
+ err: genMessage(defaultValue, args...),
+ },
+ }
+}
+
+type OmciProcessingError struct {
+ OmciError
+}
+
+// NewProcessingError means the command processing failed at the ONU
+// for reasons not described by one of the more specific error codes.
+func NewProcessingError(args ...interface{}) OmciErrors {
+ defaultValue := "command processing error"
+ return &OmciProcessingError{
+ OmciError: OmciError{
+ err: genMessage(defaultValue, args...),
+ statusCode: ProcessingError,
+ },
+ }
+}
+
+// NotSupportedError means that the message type indicated in byte 3 is
+// not supported by the ONU.
+type NotSupportedError struct {
+ OmciError
+}
+
+// NewNotSupportedError creates a NotSupportedError
+func NewNotSupportedError(args ...interface{}) OmciErrors {
+ defaultValue := "command not supported"
+ return &NotSupportedError{
+ OmciError: OmciError{
+ err: genMessage(defaultValue, args...),
+ statusCode: NotSupported,
+ },
+ }
+}
+
+// ParamError means that the command message received by the
+// ONU was errored. It would be appropriate if an attribute mask
+// were out of range, for example. In practice, this result code is
+// frequently used interchangeably with code 1001. However, the
+// optional attribute and attribute execution masks in the reply
+// messages are only defined for code 1001.
+type ParamError struct {
+ OmciError
+}
+
+// NewParameterError creates a ParamError
+//
+// For Set/Get requests that have unsupported/failed attributes (code 1001), use the
+// NewAttributeFailureError() function to convey the proper status (AttributeFailure).
+func NewParameterError(mask uint16, args ...interface{}) OmciErrors {
+ if mask == 0 {
+ panic("invalid attribute mask specified")
+ }
+ defaultValue := "parameter error"
+ err := &ParamError{
+ OmciError: OmciError{
+ err: genMessage(defaultValue, args...),
+ statusCode: ParameterError,
+ failureMask: mask,
+ },
+ }
+ return err
+}
+
+// UnknownEntityError means that the managed entity class
+// (bytes 5..6) is not supported by the ONU.
+type UnknownEntityError struct {
+ OmciError
+}
+
+// NewUnknownEntityError creates an UnknownEntityError
+func NewUnknownEntityError(args ...interface{}) OmciErrors {
+ defaultValue := "unknown managed entity"
+ return &UnknownEntityError{
+ OmciError: OmciError{
+ err: genMessage(defaultValue, args...),
+ statusCode: UnknownEntity,
+ },
+ }
+}
+
+// UnknownInstanceError means that the managed entity instance (bytes 7..8)
+// does not exist in the ONU.
+type UnknownInstanceError struct {
+ OmciError
+}
+
+// NewUnknownInstanceError creates an UnknownInstanceError
+func NewUnknownInstanceError(args ...interface{}) OmciErrors {
+ defaultValue := "unknown managed entity instance"
+ return &UnknownInstanceError{
+ OmciError: OmciError{
+ err: genMessage(defaultValue, args...),
+ statusCode: UnknownInstance,
+ },
+ }
+}
+
+// DeviceBusyError means that the command could not be processed due
+// to process-related congestion at the ONU. This result code may
+// also be used as a pause indication to the OLT while the ONU
+// conducts a time-consuming operation such as storage of a
+// software image into non-volatile memory.
+type DeviceBusyError struct {
+ OmciError
+}
+
+// NewDeviceBusyError creates a DeviceBusyError
+func NewDeviceBusyError(args ...interface{}) OmciErrors {
+ defaultValue := "device busy"
+ return &DeviceBusyError{
+ OmciError: OmciError{
+ err: genMessage(defaultValue, args...),
+ statusCode: DeviceBusy,
+ },
+ }
+}
+
+// InstanceExistsError means that the ONU already has a managed entity instance
+// that corresponds to the one the OLT is attempting to create.
+type InstanceExistsError struct {
+ OmciError
+}
+
+// NewInstanceExistsError
+func NewInstanceExistsError(args ...interface{}) OmciErrors {
+ defaultValue := "instance exists"
+ return &InstanceExistsError{
+ OmciError: OmciError{
+ err: genMessage(defaultValue, args...),
+ statusCode: InstanceExists,
+ },
+ }
+}
+
+// AttributeFailureError is used to encode failed attributes for Get/Set Requests
+//
+// For Get requests, the failed mask is used to report attributes that could not be
+// retrieved (most likely no space available to serialize) and could not be returned
+// to the caller. The unsupported mask reports attributes the ONU does not support.
+//
+// For Set requests, the failed mask is used to report attributes that have errors
+// (possibly constraints) and could not be set/saved. The unsupported mask reports
+// attributes the ONU does not support.
+//
+// For Create requests that have parameter errors (code 0011), use the NewParameterError()
+// function to signal which attributes were in error
+type AttributeFailureError struct {
+ OmciError
+}
+
+// NewAttributeFailureError is used to ceeate an AttributeFailure error status for
+// Get/Set requests
+func NewAttributeFailureError(failedMask uint16, unsupportedMask uint16, args ...interface{}) OmciErrors {
+ defaultValue := "attribute(s) failed or unknown"
+
+ err := &AttributeFailureError{
+ OmciError: OmciError{
+ err: genMessage(defaultValue, args...),
+ statusCode: AttributeFailure,
+ failureMask: failedMask,
+ unsupportedMask: unsupportedMask,
+ },
+ }
+ return err
+}
+
+// MessageTruncatedError means that the requested attributes could not
+// be added to the frame due to size limitations. This is typically an OMCI Error
+// returned internally by support functions in the OMCI library and used by the
+// frame encoding routines to eventually return an AttributeFailureError
+// result (code 1001)
+type MessageTruncatedError struct {
+ OmciError
+}
+
+// NewMessageTruncatedError creates a MessageTruncatedError message
+func NewMessageTruncatedError(args ...interface{}) OmciErrors {
+ defaultValue := "out-of-space. Cannot fit attribute into message"
+ return &MessageTruncatedError{
+ OmciError: OmciError{
+ err: genMessage(defaultValue, args...),
+ statusCode: ProcessingError,
+ },
+ }
+}
+
+func genMessage(defaultValue string, args ...interface{}) string {
+ switch len(args) {
+ case 0:
+ return defaultValue
+
+ case 1:
+ switch first := args[0].(type) {
+ case string:
+ // Assume a simple, pre-formatted string
+ return args[0].(string)
+
+ case func() string:
+ // Assume a closure with no other arguments used
+ return first()
+
+ default:
+ panic("Unsupported parameter type")
+ }
+ }
+ return fmt.Sprintf(args[0].(string), args[1:]...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/onu-g.go b/vendor/github.com/opencord/omci-lib-go/generated/onu-g.go
new file mode 100644
index 0000000..b08a5fc
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/onu-g.go
@@ -0,0 +1,155 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// OnuGClassID is the 16-bit ID for the OMCI
+// Managed entity ONU-G
+const OnuGClassID ClassID = ClassID(256)
+
+var onugBME *ManagedEntityDefinition
+
+// OnuG (class ID #256)
+// This ME represents the ONU as equipment. The ONU automatically creates an instance of this ME.
+// It assigns values to read-only attributes according to data within the ONU itself.
+//
+// This ME has evolved from the ONT-G of [ITUT G.984.4].
+//
+// Relationships
+// In ITU-T GTC based PON applications, all other MEs in this Recommendation are related directly
+// or indirectly to the ONU-G entity.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. There is only
+// one instance, number 0. (R) (mandatory) (2-bytes)
+//
+// Vendor Id
+// Vendor ID: This attribute identifies the vendor of the ONU. It is the same as the four most
+// significant bytes of the ONU serial number as specified in the respective transmission
+// convergence (TC) layer specification. (R) (mandatory) (4-bytes)
+//
+// Version
+// Version: This attribute identifies the version of the ONU as defined by the vendor. The
+// character value 0 indicates that version information is not available or applicable. (R)
+// (mandatory) (14-bytes)
+//
+// Serial Number
+// Serial number: The serial number is unique for each ONU. It is defined in the respective TC
+// layer specification and contains the vendor ID and version number. The first four bytes are an
+// ASCII-encoded four-letter vendor ID. The second four bytes are a binary encoded serial number,
+// under the control of the ONU vendor. (R) (mandatory) (8-bytes)
+//
+// Traffic Management Option
+// Upon ME instantiation, the ONU sets this attribute to the value that describes its
+// implementation. The OLT must adapt its model to conform to the ONU's selection. (R) (mandatory)
+// (1-byte)
+//
+// Deprecated
+// Deprecated: This attribute is not used. If it is present, it should be set to 0. (R) (optional)
+// (1-byte)
+//
+// Battery Backup
+// Battery backup: This Boolean attribute controls whether the ONU performs backup battery
+// monitoring (assuming it is capable of doing so). False disables battery alarm monitoring; true
+// enables battery alarm monitoring. (R,-W) (mandatory) (1-byte)
+//
+// Administrative State
+// Administrative state: This attribute locks (1) and unlocks (0) the functions performed by the
+// ONU as an entirety. Administrative state is further described in clause A.1.6. (R,-W)
+// (mandatory) (1-byte)
+//
+// Operational State
+// Operational state: This attribute reports whether the ME is currently capable of performing its
+// function. Valid values are enabled (0) and disabled (1). (R) (optional) (1-byte)
+//
+// Onu Survival Time
+// ONU survival time: This attribute indicates the minimum guaranteed time in milliseconds between
+// the loss of external power and the silence of the ONU. This does not include survival time
+// attributable to a backup battery. The value zero implies that the actual time is not known. (R)
+// (optional) (1-byte)
+//
+// Logical Onu Id
+// Logical ONU ID: This attribute provides a way for the ONU to identify itself. It is a text
+// string, null terminated if it is shorter than 24 bytes, with a null default value. The mechanism
+// for creation or modification of this information is beyond the scope of this Recommendation, but
+// might include, for example, a web page displayed to a user. (R) (optional) (24 bytes)
+//
+// Logical Password
+// Logical password: This attribute provides a way for the ONU to submit authentication
+// credentials. It is a text string, null terminated if it is shorter than 12 bytes, with a null
+// default value. The mechanism for creation or modification of this information is beyond the
+// scope of this Recommendation. (R) (optional) (12-bytes)
+//
+// Credentials Status
+// Other values are reserved.
+//
+// Extended Tc_Layer Options
+// (R) (optional) (2-bytes)
+//
+type OnuG struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ onugBME = &ManagedEntityDefinition{
+ Name: "OnuG",
+ ClassID: 256,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Reboot,
+ Set,
+ SynchronizeTime,
+ Test,
+ ),
+ AllowedAttributeMask: 0xfff8,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: MultiByteField("VendorId", StringAttributeType, 0x8000, 4, toOctets("ICAgIA=="), mapset.NewSetWith(Read), false, false, false, 1),
+ 2: MultiByteField("Version", StringAttributeType, 0x4000, 14, toOctets("MAAAAAAAAAAAAAAAAAA="), mapset.NewSetWith(Read), false, false, false, 2),
+ 3: MultiByteField("SerialNumber", OctetsAttributeType, 0x2000, 8, toOctets("AAAAAAAAAAA="), mapset.NewSetWith(Read), false, false, false, 3),
+ 4: ByteField("TrafficManagementOption", EnumerationAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: ByteField("Deprecated", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, true, true, 5),
+ 6: ByteField("BatteryBackup", EnumerationAttributeType, 0x0400, 0, mapset.NewSetWith(Read, Write), false, false, false, 6),
+ 7: ByteField("AdministrativeState", EnumerationAttributeType, 0x0200, 0, mapset.NewSetWith(Read, Write), false, false, false, 7),
+ 8: ByteField("OperationalState", EnumerationAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, true, false, 8),
+ 9: ByteField("OnuSurvivalTime", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, true, false, 9),
+ 10: MultiByteField("LogicalOnuId", OctetsAttributeType, 0x0040, 24, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"), mapset.NewSetWith(Read), false, true, false, 10),
+ 11: MultiByteField("LogicalPassword", OctetsAttributeType, 0x0020, 12, toOctets("AAAAAAAAAAAAAAAA"), mapset.NewSetWith(Read), false, true, false, 11),
+ 12: ByteField("CredentialsStatus", EnumerationAttributeType, 0x0010, 0, mapset.NewSetWith(Read, Write), false, true, false, 12),
+ 13: Uint16Field("ExtendedTcLayerOptions", BitFieldAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, true, false, 13),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewOnuG (class ID 256) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewOnuG(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*onugBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/onu2-g.go b/vendor/github.com/opencord/omci-lib-go/generated/onu2-g.go
new file mode 100644
index 0000000..d922d03
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/onu2-g.go
@@ -0,0 +1,153 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// Onu2GClassID is the 16-bit ID for the OMCI
+// Managed entity ONU2-G
+const Onu2GClassID ClassID = ClassID(257)
+
+var onu2gBME *ManagedEntityDefinition
+
+// Onu2G (class ID #257)
+// This ME contains additional attributes associated with a PON ONU. The ONU automatically creates
+// an instance of this ME. Its attributes are populated according to data within the ONU itself.
+//
+// This ME is the same as the ONT2-G of [ITUT G.984.4], with extensions.
+//
+// Relationships
+// This ME is paired with the ONU-G entity.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. There is only
+// one instance, number 0. (R) (mandatory) (2-bytes)
+//
+// Equipment Id
+// Equipment ID: This attribute may be used to identify the specific type of ONU. In some
+// environments, this attribute may include the common language equipment identification (CLEI)
+// code. (R) (optional) (20-bytes)
+//
+// Optical Network Unit Management And Control Channel Omcc Version
+// (R) (mandatory) (1-byte)
+//
+// Vendor Product Code
+// Vendor product code: This attribute contains a vendor-specific product code for the ONU. (R)
+// (optional) (2-bytes)
+//
+// Security Capability
+// (R) (mandatory) (1-byte)
+//
+// Security Mode
+// Upon ME instantiation, the ONU sets this attribute to 1, AES-128. Attribute value 1 does not
+// imply that any channels are encrypted; that process is negotiated at the PLOAM layer. It only
+// signifies that the advanced encryption standard (AES) with 128-bit keys is the security mode to
+// be used on any channels that the OLT may choose to encrypt. (R,-W) (mandatory) (1-byte)
+//
+// Total Priority Queue Number
+// Total priority queue number: This attribute reports the total number of upstream priority queues
+// that are not associated with a circuit pack, but with the ONU in its entirety. Upon ME
+// instantiation, the ONU sets this attribute to the value that represents its capabilities. (R)
+// (mandatory) (2-bytes)
+//
+// Total Traffic Scheduler Number
+// Total traffic scheduler number: This attribute reports the total number of traffic schedulers
+// that are not associated with a circuit pack, but with the ONU in its entirety. The ONU supports
+// null function, strict priority scheduling and weighted round robin (WRR) from the priority
+// control and guarantee of minimum rate control points of view, respectively. If the ONU has no
+// global traffic schedulers, this attribute is 0. (R) (mandatory) (1-byte)
+//
+// Deprecated
+// Deprecated: This attribute should always be set to 1 by the ONU and ignored by the OLT. (R)
+// (mandatory) (1-byte)
+//
+// Total Gem Port_Id Number
+// Total GEM port-ID number: This attribute reports the total number of GEM port-IDs supported by
+// the ONU. The maximum value is specified in the corresponding TC recommendations. Upon ME
+// instantiation, the ONU sets this attribute to the value that represents its capabilities. (R)
+// (optional) (2-bytes)
+//
+// Sysuptime
+// SysUpTime: This attribute counts 10 ms intervals since the ONU was last initialized. It rolls
+// over to 0 when full (see [IETF RFC 1213]). (R) (optional) (4-bytes)
+//
+// Connectivity Capability
+// (R) (optional) (2 bytes)
+//
+// Current Connectivity Mode
+// (R, W) (optional) (1 byte)
+//
+// Quality Of Service Qos Configuration Flexibility
+// The ME ID of both the T-CONT and traffic scheduler contains a slot number. Even when attributes
+// in the above list are RW, it is never permitted to change the slot number in a reference. That
+// is, configuration flexibility never extends across slots. It is also not permitted to change the
+// directionality of an upstream queue to downstream or vice versa.
+//
+// Priority Queue Scale Factor
+// NOTE 3 - Some legacy implementations may take the queue scale factor from the GEM block length
+// attribute of the ANI-G ME. That option is discouraged in new implementations.
+//
+type Onu2G struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ onu2gBME = &ManagedEntityDefinition{
+ Name: "Onu2G",
+ ClassID: 257,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfffc,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: MultiByteField("EquipmentId", StringAttributeType, 0x8000, 20, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAA="), mapset.NewSetWith(Read), false, true, false, 1),
+ 2: ByteField("OpticalNetworkUnitManagementAndControlChannelOmccVersion", EnumerationAttributeType, 0x4000, 164, mapset.NewSetWith(Read), true, false, false, 2),
+ 3: Uint16Field("VendorProductCode", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, true, false, 3),
+ 4: ByteField("SecurityCapability", EnumerationAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: ByteField("SecurityMode", EnumerationAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, false, false, 5),
+ 6: Uint16Field("TotalPriorityQueueNumber", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: ByteField("TotalTrafficSchedulerNumber", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: ByteField("Deprecated", UnsignedIntegerAttributeType, 0x0100, 1, mapset.NewSetWith(Read), false, false, true, 8),
+ 9: Uint16Field("TotalGemPortIdNumber", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, true, false, 9),
+ 10: Uint32Field("Sysuptime", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, true, false, 10),
+ 11: Uint16Field("ConnectivityCapability", BitFieldAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, true, false, 11),
+ 12: ByteField("CurrentConnectivityMode", BitFieldAttributeType, 0x0010, 0, mapset.NewSetWith(Read, Write), false, true, false, 12),
+ 13: Uint16Field("QualityOfServiceQosConfigurationFlexibility", BitFieldAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, true, false, 13),
+ 14: Uint16Field("PriorityQueueScaleFactor", UnsignedIntegerAttributeType, 0x0004, 1, mapset.NewSetWith(Read, Write), false, true, false, 14),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewOnu2G (class ID 257) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewOnu2G(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*onu2gBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/onudata.go b/vendor/github.com/opencord/omci-lib-go/generated/onudata.go
new file mode 100644
index 0000000..3806507
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/onudata.go
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// OnuDataClassID is the 16-bit ID for the OMCI
+// Managed entity ONU data
+const OnuDataClassID ClassID = ClassID(2)
+
+var onudataBME *ManagedEntityDefinition
+
+// OnuData (class ID #2)
+// This ME models the MIB itself. Clause I.1.3 explains the use of this ME with respect to MIB
+// synchronization.
+//
+// The ONU automatically creates an instance of this ME, and updates the associated attributes
+// according to data within the ONU itself.
+//
+// Relationships
+// One instance of this ME is contained in an ONU.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. There is only
+// one instance, number 0. (R) (mandatory) (2-bytes)
+//
+// Mib Data Sync
+// MIB data sync: This attribute is used to check the alignment of the MIB of the ONU with the
+// corresponding MIB in the OLT. MIB data sync relies on this attribute, which is a sequence number
+// that can be checked by the OLT to see if the MIB snapshots for the OLT and ONU match. Refer to
+// clause I.1.2.1 for a detailed description of this attribute. Upon ME instantiation, the ONU sets
+// this attribute to 0. (R,-W) (mandatory) (1-byte)
+//
+type OnuData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ onudataBME = &ManagedEntityDefinition{
+ Name: "OnuData",
+ ClassID: 2,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ GetAllAlarms,
+ GetAllAlarmsNext,
+ MibReset,
+ MibUpload,
+ MibUploadNext,
+ Set,
+ ),
+ AllowedAttributeMask: 0x8000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("MibDataSync", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewOnuData (class ID 2) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewOnuData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*onudataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/onudynamicpowermanagementcontrol.go b/vendor/github.com/opencord/omci-lib-go/generated/onudynamicpowermanagementcontrol.go
new file mode 100644
index 0000000..eabe189
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/onudynamicpowermanagementcontrol.go
@@ -0,0 +1,151 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// OnuDynamicPowerManagementControlClassID is the 16-bit ID for the OMCI
+// Managed entity ONU dynamic power management control
+const OnuDynamicPowerManagementControlClassID ClassID = ClassID(336)
+
+var onudynamicpowermanagementcontrolBME *ManagedEntityDefinition
+
+// OnuDynamicPowerManagementControl (class ID #336)
+// This ME models the ONU's ability to enter power conservation modes in cooperation with the OLT
+// in an ITU-T G.987 system. [ITUT G.987.3] originally specified two alternative modes, doze and
+// cyclic sleep. The subsequent revision of [ITUT G.987.3] simplified the specification providing a
+// single power conservation mode, watchful sleep.
+//
+// An ONU that supports power conservation modes automatically creates an instance of this ME.
+//
+// Relationships
+// One instance of this ME is associated with the ONU ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. There is only
+// one instance, number 0. (R) (mandatory) (2-bytes)
+//
+// Power Reduction Management Capability
+// 5..255 Reserved
+//
+// Power Reduction Management Mode
+// Power reduction management mode: This attribute enables one or more of the ONU's managed power
+// conservation modes. It is a bit map in which the bit value 0 disables the mode, while the value
+// 1 enables the mode. Bit assignments are the same as those of the power reduction management
+// capability attribute. The default value of each bit is 0. (R,-W) (mandatory) (1-byte)
+//
+// Itransinit
+// Itransinit: This attribute is the ONU vendor's statement of the complete transceiver
+// initialization time: the worst-case time required for the ONU to regain full functionality when
+// leaving the asleep state in cyclic sleep mode or low-power state in watchful sleep mode (i.e.,
+// turning on both the receiver and the transmitter and acquiring synchronization to the downstream
+// flow), measured in units of 125-us frames. The value zero indicates that the sleeping ONU can
+// respond to a bandwidth grant without delay. (R) (mandatory) (2-bytes)
+//
+// Itxinit
+// Itxinit: This attribute is the ONU vendor's statement of the transmitter initialization time:
+// the time required for the ONU to regain full functionality when leaving the listen state (i.e.,
+// turning on the transmitter), measured in units of 125-us frames. The value zero indicates that
+// the dozing ONU can respond to a bandwidth grant without delay. If watchful sleep is enabled, the
+// ONU ignores this attribute. (R) (mandatory) (2 bytes)
+//
+// Maximum Sleep Interval
+// Maximum sleep interval: The Isleep/Ilowpower attribute specifies the maximum time the ONU spends
+// in its asleep, listen, or low-power states, as a count of 125-us frames. Local or remote events
+// may truncate the ONU's sojourn in these states. The default value of this attribute is 0. (R,-W)
+// (mandatory) (4-bytes)
+//
+// Maximum Receiver_Off Interval
+// Maximum receiver-off interval: The Irxoff attribute specifies the maximum time the OLT can
+// afford to wait from the moment it decides to wake up an ONU in the low-power state of the
+// watchful sleep mode until the ONU is fully operational, specified as a count of 125-us frames.
+// (R,-W) (mandatory) (4-bytes)
+//
+// Minimum Aware Interval
+// Minimum aware interval: The Iaware attribute specifies the time the ONU spends in its aware
+// state, as a count of 125-us frames, before it re-enters asleep or listen states. Local or remote
+// events may independently cause the ONU to enter an active state rather than returning to a sleep
+// state. The default value of this attribute is 0. (R,-W) (mandatory) (4-bytes)
+//
+// Minimum Active Held Interval
+// Minimum active held interval: The Ihold attribute specifies the minimum time during which the
+// ONU remains in the active held state, as a count of 125-us frames. Its initial value is zero.
+// (R, W) (mandatory) (2-bytes)
+//
+// Maximum Sleep Interval Extension
+// (R,-W) (optional) (8-bytes)
+//
+// Ethernet Passive Optical Network Epon Capability Extension
+// - Configurations: ackEnable configuration = enable, Sleep indication configuration = disable,
+// Early wake-up configuration = enable
+//
+// Epon Setup Extension
+// (R,-W) (optional) (1-byte)
+//
+// Missing Consecutive Bursts Threshold
+// Missing consecutive bursts threshold: The Clobi attribute specifies the maximum number of
+// missing consecutive scheduled bursts from the ONU that the OLT is willing to tolerate without
+// raising an alarm. The value of this attribute defaults to 4. (R,-W) (mandatory) (4-bytes)
+//
+type OnuDynamicPowerManagementControl struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ onudynamicpowermanagementcontrolBME = &ManagedEntityDefinition{
+ Name: "OnuDynamicPowerManagementControl",
+ ClassID: 336,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfff0,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("PowerReductionManagementCapability", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: ByteField("PowerReductionManagementMode", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, Write), false, false, false, 2),
+ 3: Uint16Field("Itransinit", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint16Field("Itxinit", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("MaximumSleepInterval", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, false, false, 5),
+ 6: Uint32Field("MaximumReceiverOffInterval", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, Write), false, false, false, 6),
+ 7: Uint32Field("MinimumAwareInterval", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, Write), false, false, false, 7),
+ 8: Uint16Field("MinimumActiveHeldInterval", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, Write), false, false, false, 8),
+ 9: Uint64Field("MaximumSleepIntervalExtension", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, Write), false, true, false, 9),
+ 10: ByteField("EthernetPassiveOpticalNetworkEponCapabilityExtension", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, true, false, 10),
+ 11: ByteField("EponSetupExtension", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read, Write), false, true, false, 11),
+ 12: Uint32Field("MissingConsecutiveBurstsThreshold", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read, Write), false, false, false, 12),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewOnuDynamicPowerManagementControl (class ID 336) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewOnuDynamicPowerManagementControl(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*onudynamicpowermanagementcontrolBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/onupowershedding.go b/vendor/github.com/opencord/omci-lib-go/generated/onupowershedding.go
new file mode 100644
index 0000000..c698117
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/onupowershedding.go
@@ -0,0 +1,134 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// OnuPowerSheddingClassID is the 16-bit ID for the OMCI
+// Managed entity ONU power shedding
+const OnuPowerSheddingClassID ClassID = ClassID(133)
+
+var onupowersheddingBME *ManagedEntityDefinition
+
+// OnuPowerShedding (class ID #133)
+// This ME models the ONU's ability to shed services when the ONU goes into battery operation mode
+// after AC power failure. Shedding classes are defined in the following table, which may span
+// multiple circuit pack types. This feature works in conjunction with the power shed override
+// attribute of the circuit pack ME, which can selectively prevent power shedding of priority
+// ports.
+//
+// An ONU that supports power shedding automatically creates an instance of this ME.
+//
+// The following table defines the binding of shedding class and PPTP type. The coding is taken
+// from Table 9.1.5-1. In the case of hybrid circuit pack types, multiple shedding classes may
+// affect a circuit pack if the hardware is capable of partial power shedding.
+//
+// An ONU may choose to model its ports with the port-mapping package of clause 9.1.8, rather than
+// with real or virtual circuit packs. In this case, power shedding pertains to individual PPTPs
+// (listed in column 2 of the table).
+//
+// Relationships
+// One instance of this ME is associated with the ONU ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. There is only
+// one instance, number 0. (R) (mandatory) (2-bytes)
+//
+// Restore Power Timer Reset Interval
+// Restore power timer reset interval: The time delay, in seconds, before resetting the power-
+// shedding timers after full power restoration. Upon ME instantiation, the ONU sets this attribute
+// to 0. (R,-W) (mandatory) (2-bytes)
+//
+// Data Class Shedding Interval
+// Data class shedding interval: (R,-W) (mandatory) (2-bytes)
+//
+// Voice Class Shedding Interval
+// Voice class shedding interval: This attribute only pertains to voice services that terminate on
+// the ONU and are under the management control of the OMCI. (R,-W) (mandatory) (2-bytes)
+//
+// Video Overlay Class Shedding Interval
+// Video overlay class shedding interval: (R,-W) (mandatory) (2-bytes)
+//
+// Video Return Class Shedding Interval
+// Video return class shedding interval: (R,-W) (mandatory) (2-bytes)
+//
+// Digital Subscriber Line Class Shedding Interval
+// Digital subscriber line (DSL) class shedding interval: (R,-W) (mandatory) (2-bytes)
+//
+// Atm Class Shedding Interval
+// ATM class shedding interval: (R,-W) (mandatory) (2-bytes)
+//
+// Ces Class Shedding Interval
+// CES class shedding interval: (R,-W) (mandatory) (2-bytes)
+//
+// Frame Class Shedding Interval
+// Frame class shedding interval: (R,-W) (mandatory) (2-bytes)
+//
+// Sdh_Sonet Class Shedding Interval
+// Sdh-sonet class shedding interval: (R,-W) (mandatory) (2-bytes)
+//
+// Shedding Status
+// The ONU sets each bit to 1 when power shedding is active, and clears it to 0 when the service is
+// restored. (R) (optional) (2-bytes)
+//
+type OnuPowerShedding struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ onupowersheddingBME = &ManagedEntityDefinition{
+ Name: "OnuPowerShedding",
+ ClassID: 133,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffe0,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: Uint16Field("RestorePowerTimerResetInterval", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: Uint16Field("DataClassSheddingInterval", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, Write), false, false, false, 2),
+ 3: Uint16Field("VoiceClassSheddingInterval", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), false, false, false, 3),
+ 4: Uint16Field("VideoOverlayClassSheddingInterval", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, false, false, 4),
+ 5: Uint16Field("VideoReturnClassSheddingInterval", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, false, false, 5),
+ 6: Uint16Field("DigitalSubscriberLineClassSheddingInterval", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, Write), false, false, false, 6),
+ 7: Uint16Field("AtmClassSheddingInterval", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, Write), false, false, false, 7),
+ 8: Uint16Field("CesClassSheddingInterval", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, Write), false, false, false, 8),
+ 9: Uint16Field("FrameClassSheddingInterval", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, Write), false, false, false, 9),
+ 10: Uint16Field("SdhSonetClassSheddingInterval", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read, Write), false, false, false, 10),
+ 11: Uint16Field("SheddingStatus", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read), true, true, false, 11),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewOnuPowerShedding (class ID 133) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewOnuPowerShedding(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*onupowersheddingBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointcesuni.go b/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointcesuni.go
new file mode 100644
index 0000000..68f4887
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointcesuni.go
@@ -0,0 +1,154 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// PhysicalPathTerminationPointCesUniClassID is the 16-bit ID for the OMCI
+// Managed entity Physical path termination point CES UNI
+const PhysicalPathTerminationPointCesUniClassID ClassID = ClassID(12)
+
+var physicalpathterminationpointcesuniBME *ManagedEntityDefinition
+
+// PhysicalPathTerminationPointCesUni (class ID #12)
+// This ME represents the point at a CES UNI in the ONU where the physical path terminates and
+// physical level functions are performed.
+//
+// The ONU automatically creates an instance of this ME per port:
+//
+// o when the ONU has CES ports built into its factory configuration;
+//
+// o when a cardholder is provisioned to expect a circuit pack of a CES type;
+//
+// o when a cardholder provisioned for plug-and-play is equipped with a circuit pack of a CES type.
+// Note that the installation of a plug-and-play card may indicate the presence of CES ports via
+// equipment ID as well as its type and indeed may cause the ONU to instantiate a port-mapping
+// package that specifies CES ports.
+//
+// The ONU automatically deletes instances of this ME when a cardholder is neither provisioned to
+// expect a CES circuit pack, nor is it equipped with a CES circuit pack.
+//
+// Relationships
+// An instance of this ME is associated with each real or pre-provisioned CES port. It can be
+// linked from a GEM IW TP, a pseudowire TP or a logical N * 64 kbit/s CTP.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. This 2 byte
+// number indicates the physical position of the UNI. The first byte is the slot ID (defined in
+// clause 9.1.5). The second byte is the port ID, with the range 1..255. (R) (mandatory) (2-bytes)
+//
+// Expected Type
+// Upon ME instantiation, the ONU sets this attribute to 0. (R,-W) (mandatory) (1-byte)
+//
+// Sensed Type
+// Sensed type: If the value of expected type is not 0, then the value of sensed type equals the
+// value of expected type. If expected type-= 0, then the value of sensed type is one of the
+// compatible values from Table-9.1.5-1. Upon ME instantiation, the ONU sets this attribute to 0 or
+// to the value that reflects the physically present equipment. (R) (mandatory if the ONU supports
+// circuit packs with configurable interface types, e.g., C1.5/2/6.3) (1-byte)
+//
+// Ces Loopback Configuration
+// Upon ME instantiation, the ONU sets this attribute to 0. (R,-W) (mandatory) (1-byte)
+//
+// Administrative State
+// Administrative state: This attribute locks (1) and unlocks (0) the functions performed by this
+// ME. Administrative state is further described in clause A.1.6. (R,-W) (mandatory) (1-byte)
+//
+// Operational State
+// Operational state: This attribute indicates whether the ME is capable of performing its
+// function. Valid values are enabled (0) and disabled (1). (R) (optional) (1-byte)
+//
+// Framing
+// Upon ME instantiation, the ONU sets this attribute to a value that reflects the vendor's
+// default. (R,-W) (optional) (1-byte)
+//
+// Encoding
+// Upon ME instantiation, the ONU sets this attribute to 0. (R,-W) (mandatory for DS1 and DS3
+// interfaces) (1-byte)
+//
+// Line Length
+// Line length: This attribute specifies the length of the twisted pair cable from a DS1 physical
+// UNI to the DSX-1 cross-connect point or the length of coaxial cable from a DS3 physical UNI to
+// the DSX-3 cross-connect point. Valid values are given in Table 9.8.1-1. Upon ME instantiation
+// for a DS1 interface, the ONU assigns the value 0 for non-power feed type DS1 and the value 6 for
+// power feed type DS1. Upon ME instantiation for a DS3 interface, the ONU sets this attribute to
+// 0x0F. (R,-W) (optional) (1-byte)
+//
+// Ds1 Mode
+// In the event of conflicting values between this attribute and the (also optional) line length
+// attribute, the line length attribute is taken to be valid. This permits the separation of line
+// build-out (LBO) and power settings from smart jack and FDL behaviour. Upon ME instantiation, the
+// ONU sets this attribute to 0. (R,-W) (optional) (1-byte)
+//
+// Arc
+// ARC: See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+// Arc Interval
+// ARC interval: See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+// Line Type
+// (R,-W) (mandatory for DS3, E3 and multi-configuration interfaces, not applicable to other
+// interfaces) (1-byte)
+//
+type PhysicalPathTerminationPointCesUni struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ physicalpathterminationpointcesuniBME = &ManagedEntityDefinition{
+ Name: "PhysicalPathTerminationPointCesUni",
+ ClassID: 12,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfff0,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("ExpectedType", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: ByteField("SensedType", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read), true, false, false, 2),
+ 3: ByteField("CesLoopbackConfiguration", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), true, false, false, 3),
+ 4: ByteField("AdministrativeState", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, false, false, 4),
+ 5: ByteField("OperationalState", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read), true, true, false, 5),
+ 6: ByteField("Framing", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, Write), false, true, false, 6),
+ 7: ByteField("Encoding", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, Write), false, false, false, 7),
+ 8: ByteField("LineLength", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, Write), false, true, false, 8),
+ 9: ByteField("Ds1Mode", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, Write), false, true, false, 9),
+ 10: ByteField("Arc", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read, Write), true, true, false, 10),
+ 11: ByteField("ArcInterval", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read, Write), false, true, false, 11),
+ 12: ByteField("LineType", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read, Write), false, false, false, 12),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewPhysicalPathTerminationPointCesUni (class ID 12) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewPhysicalPathTerminationPointCesUni(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*physicalpathterminationpointcesuniBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointethernetuni.go b/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointethernetuni.go
new file mode 100644
index 0000000..ae562a0
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointethernetuni.go
@@ -0,0 +1,163 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// PhysicalPathTerminationPointEthernetUniClassID is the 16-bit ID for the OMCI
+// Managed entity Physical path termination point Ethernet UNI
+const PhysicalPathTerminationPointEthernetUniClassID ClassID = ClassID(11)
+
+var physicalpathterminationpointethernetuniBME *ManagedEntityDefinition
+
+// PhysicalPathTerminationPointEthernetUni (class ID #11)
+// This ME represents the point at an Ethernet UNI where the physical path terminates and Ethernet
+// physical level functions are performed.
+//
+// The ONU automatically creates an instance of this ME per port:
+//
+// o when the ONU has Ethernet ports built into its factory configuration;
+//
+// o when a cardholder is provisioned to expect a circuit pack of the Ethernet type;
+//
+// o when a cardholder provisioned for plug-and-play is equipped with a circuit pack of the
+// Ethernet type. Note that the installation of a plug-and-play card may indicate the presence of
+// Ethernet ports via equipment ID as well as its type, and indeed may cause the ONU to instantiate
+// a port-mapping package that specifies Ethernet ports.
+//
+// The ONU automatically deletes instances of this ME when a cardholder is neither provisioned to
+// expect an Ethernet circuit pack, nor is it equipped with an Ethernet circuit pack.
+//
+// Relationships
+// An instance of this ME is associated with each instance of a pre-provisioned or real Ethernet
+// port.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. This 2 byte
+// number indicates the physical position of the UNI. The first byte is the slot ID (defined in
+// clause 9.1.5). The second byte is the port ID, with the range 1..255. (R) (mandatory) (2-bytes)
+//
+// Expected Type
+// Upon ME instantiation, the ONU sets this attribute to 0. (R,-W) (mandatory) (1-byte)
+//
+// Sensed Type
+// (R) (mandatory if the ONU supports circuit packs with configurable interface types, e.g., 10/100
+// BASE-T card) (1-byte)
+//
+// Auto Detection Configuration
+// Upon ME instantiation, the ONU sets this attribute to 0. (R,-W) (mandatory for interfaces with
+// autodetection options) (1-byte)
+//
+// Ethernet Loopback Configuration
+// Upon ME instantiation, the ONU sets this attribute to 0. (R,-W) (mandatory) (1-byte)
+//
+// Administrative State
+// Administrative state: This attribute locks (1) and unlocks (0) the functions performed by this
+// ME. Administrative state is further described in clause A.1.6. (R,-W) (mandatory) (1-byte)
+//
+// Operational State
+// Operational state: This attribute indicates whether the ME is capable of performing its
+// function. Valid values are enabled (0) and disabled (1). (R) (optional) (1-byte)
+//
+// Configuration Ind
+// The value 0 indicates that the configuration status is unknown (e.g., Ethernet link is not
+// established or the circuit pack is not yet installed). Upon ME instantiation, the ONU sets this
+// attribute to 0. (R) (mandatory) (1-byte)
+//
+// Max Frame Size
+// Max frame size: This attribute denotes the maximum frame size allowed across this interface.
+// Upon ME instantiation, the ONU sets the attribute to 1518. (R,-W) (mandatory for G-PON, optional
+// for ITU-T G.986 systems) (2 bytes)
+//
+// Dte Or Dce Ind
+// (R,-W) (mandatory) (1-byte)
+//
+// Pause Time
+// Pause time: This attribute allows the PPTP to ask the subscriber terminal to temporarily suspend
+// sending data. Units are in pause quanta (1 pause quantum is 512 bit times of the particular
+// implementation). Values: 0..0xFFFF. Upon ME instantiation, the ONU sets this attribute to 0.
+// (R,-W) (optional) (2-bytes)
+//
+// Bridged Or Ip Ind
+// Upon ME instantiation, the ONU sets this attribute to 2. (R,-W) (optional) (1-byte)
+//
+// Arc
+// ARC: See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+// Arc Interval
+// ARC interval: See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+// Pppoe Filter
+// PPPoE filter: This attribute controls filtering of PPPoE packets on this Ethernet port. The
+// value 0 allows packets of all types. The value 1 discards everything but PPPoE packets. The
+// default value is 0. (R,-W) (optional) (1-byte)
+//
+// Power Control
+// NOTE - This attribute is the equivalent of the acPSEAdminControl variable defined in clause
+// 30.9.1.2.1 of [IEEE 802.3]. Other variables related to PoE appear in the PoE control ME.
+//
+type PhysicalPathTerminationPointEthernetUni struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ physicalpathterminationpointethernetuniBME = &ManagedEntityDefinition{
+ Name: "PhysicalPathTerminationPointEthernetUni",
+ ClassID: 11,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfffe,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("ExpectedType", EnumerationAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: ByteField("SensedType", EnumerationAttributeType, 0x4000, 0, mapset.NewSetWith(Read), true, false, false, 2),
+ 3: ByteField("AutoDetectionConfiguration", EnumerationAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), false, false, false, 3),
+ 4: ByteField("EthernetLoopbackConfiguration", EnumerationAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, false, false, 4),
+ 5: ByteField("AdministrativeState", EnumerationAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, false, false, 5),
+ 6: ByteField("OperationalState", EnumerationAttributeType, 0x0400, 0, mapset.NewSetWith(Read), true, true, false, 6),
+ 7: ByteField("ConfigurationInd", EnumerationAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint16Field("MaxFrameSize", UnsignedIntegerAttributeType, 0x0100, 1518, mapset.NewSetWith(Read, Write), false, false, false, 8),
+ 9: ByteField("DteOrDceInd", EnumerationAttributeType, 0x0080, 0, mapset.NewSetWith(Read, Write), false, false, false, 9),
+ 10: Uint16Field("PauseTime", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read, Write), false, true, false, 10),
+ 11: ByteField("BridgedOrIpInd", EnumerationAttributeType, 0x0020, 0, mapset.NewSetWith(Read, Write), false, true, false, 11),
+ 12: ByteField("Arc", EnumerationAttributeType, 0x0010, 0, mapset.NewSetWith(Read, Write), true, true, false, 12),
+ 13: ByteField("ArcInterval", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read, Write), false, true, false, 13),
+ 14: ByteField("PppoeFilter", EnumerationAttributeType, 0x0004, 0, mapset.NewSetWith(Read, Write), false, true, false, 14),
+ 15: ByteField("PowerControl", EnumerationAttributeType, 0x0002, 0, mapset.NewSetWith(Read, Write), false, true, false, 15),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewPhysicalPathTerminationPointEthernetUni (class ID 11) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewPhysicalPathTerminationPointEthernetUni(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*physicalpathterminationpointethernetuniBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointlctuni.go b/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointlctuni.go
new file mode 100644
index 0000000..e50cc4f
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointlctuni.go
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// PhysicalPathTerminationPointLctUniClassID is the 16-bit ID for the OMCI
+// Managed entity Physical path termination point LCT UNI
+const PhysicalPathTerminationPointLctUniClassID ClassID = ClassID(83)
+
+var physicalpathterminationpointlctuniBME *ManagedEntityDefinition
+
+// PhysicalPathTerminationPointLctUni (class ID #83)
+// This ME models debug access to the ONU from any physical or logical port, for example, via a
+// dedicated LCT UNI, via ordinary subscriber UNIs, or via the IP host config ME.
+//
+// The ONU automatically creates an instance of this ME per port:
+//
+// o when the ONU has an LCT port built into its factory configuration;
+//
+// o when a cardholder is provisioned to expect a circuit pack of the LCT type;
+//
+// o when a cardholder provisioned for plug-and-play is equipped with a circuit pack of the LCT
+// type;
+//
+// NOTE - The installation of a plug-and-play card may indicate the presence of LCT ports via
+// equipment ID as well as its type, and indeed may cause the ONU to instantiate a port-mapping
+// package that specifies LCT ports.
+//
+// o when the ONU supports debug access through some other physical or logical means.
+//
+// The ONU automatically deletes an instance of this ME when a cardholder is neither provisioned to
+// expect an LCT circuit pack, nor is it equipped with an LCT circuit pack, or if the ONU is
+// reconfigured in such a way that it no longer supports debug access.
+//
+// LCT instances are not reported during an MIB upload.
+//
+// Relationships
+// An instance of this ME is associated with an instance of a real or virtual circuit pack ME
+// classified as an LCT type. An instance of this ME may also be associated with the ONU as a
+// whole, if the ONU supports debug access through means other than a dedicated physical LCT port.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. This 2-byte
+// number indicates the physical position of the UNI. The first byte is the slot ID (defined in
+// clause 9.1.5). The second byte is the port ID, with the range 1..255. If the LCT UNI is
+// associated with the ONU as a whole, its ME ID should be 0. (R) (mandatory) (2 bytes)
+//
+// Administrative State
+// Administrative state: This attribute locks (1) and unlocks (0) the functions performed by this
+// ME. Administrative state is described generically in clause-A.1.6. The LCT has additional
+// administrative state behaviour. When the administrative state is set to lock, debug access
+// through all physical or logical means is blocked, except that the operation of a possible ONU
+// remote debug ME is not affected. Administrative lock of ME instance 0 overrides administrative
+// lock of any other PPTP LCT UNIs that may exist. (R, W) (mandatory) (1-byte)
+//
+type PhysicalPathTerminationPointLctUni struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ physicalpathterminationpointlctuniBME = &ManagedEntityDefinition{
+ Name: "PhysicalPathTerminationPointLctUni",
+ ClassID: 83,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0x8000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("AdministrativeState", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewPhysicalPathTerminationPointLctUni (class ID 83) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewPhysicalPathTerminationPointLctUni(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*physicalpathterminationpointlctuniBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointmocauni.go b/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointmocauni.go
new file mode 100644
index 0000000..a8cc094
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointmocauni.go
@@ -0,0 +1,162 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// PhysicalPathTerminationPointMocaUniClassID is the 16-bit ID for the OMCI
+// Managed entity Physical path termination point MoCA UNI
+const PhysicalPathTerminationPointMocaUniClassID ClassID = ClassID(162)
+
+var physicalpathterminationpointmocauniBME *ManagedEntityDefinition
+
+// PhysicalPathTerminationPointMocaUni (class ID #162)
+// This ME represents an MoCA UNI, where physical paths terminate and physical path level functions
+// are performed.
+//
+// The ONU automatically creates an instance of this ME per port as follows.
+//
+// o When the ONU has MoCA ports built into its factory configuration.
+//
+// o When a cardholder is provisioned to expect a circuit pack of the MoCA type.
+//
+// o When a cardholder provisioned for plug-and-play is equipped with a circuit pack of the MoCA
+// type. Note that the installation of a plug-and-play card may indicate the presence of MoCA ports
+// via equipment ID as well as its type, and indeed may cause the ONU to instantiate a port-mapping
+// package that specifies MoCA ports.
+//
+// The ONU automatically deletes instances of this ME when a cardholder is neither provisioned to
+// expect an MoCA circuit pack, nor is it equipped with an MoCA circuit pack.
+//
+// Relationships
+// An instance of this ME is associated with each real or pre-provisioned MoCA port.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. This 2-byte
+// number is directly associated with the physical position of the UNI. The first byte is the slot
+// ID (defined in clause 9.1.5). The second byte is the port ID, with the range 1..255. (R)
+// (mandatory) (2-bytes)
+//
+// Loopback Configuration
+// Upon ME instantiation, the ONU sets this attribute to 0. (R,-W) (optional) (1-byte)
+//
+// Administrative State
+// Administrative state: This attribute locks (1) and unlocks (0) the functions performed by this
+// ME. Administrative state is further described in clause A.1.6. (R,-W) (mandatory) (1-byte)
+//
+// Operational State
+// Operational state: This attribute indicates whether the ME is capable of performing its
+// function. Valid values are enabled (0) and disabled (1). (R) (optional) (1-byte)
+//
+// Max Frame Size
+// Max frame size: This attribute denotes the maximum frame size allowed across this interface.
+// Upon ME instantiation, the ONU sets this attribute to 1518. (R,-W) (mandatory) (2-bytes)
+//
+// Arc
+// ARC: See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+// Arc Interval
+// ARC interval: See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+// Pppoe Filter
+// PPPoE filter: This attribute controls filtering of PPPoE packets on this MoCA port. When its
+// value is 1, all packets other than PPPoE packets are discarded. The default 0 accepts packets of
+// all types. (R,-W) (optional) (1-byte)
+//
+// Network Status
+// (R) (mandatory) (1-byte)
+//
+// Password
+// Password: This attribute specifies the MoCA encryption key. It is an ASCII string of 17 decimal
+// digits. Upon ME instantiation, the ONU sets this attribute to 17 null bytes. (R,-W) (mandatory)
+// (17-bytes)
+//
+// Privacy Enabled
+// Privacy enabled: This attribute activates (1) link-layer security. The default value 0
+// deactivates it. (R,-W) (mandatory) (1-byte)
+//
+// Minimum Bandwidth Alarm Threshold
+// Minimum bandwidth alarm threshold: This attribute specifies the minimum desired PHY link
+// bandwidth between two nodes. If the actual bandwidth is lower, an LL alarm is declared. Valid
+// values are 0 to 0x0410 (260-Mbit/s) in 0.25-Mbit/s increments. The default value is 0x02D0
+// (180-Mbit/s). The value 0 disables the threshold. (R,-W) (optional) (2-bytes)
+//
+// Frequency Mask
+// Frequency mask: This attribute is a bit map of the centre frequencies that the interface is
+// permitted to use, where each bit represents a centre frequency. The LSB (b[1]) corresponds to
+// centre frequency 800-MHz. The next significant bit (b[2]) corresponds to centre frequency
+// 825-MHz. The 28th bit (b[28]) corresponds to centre frequency 1500-MHz. The four MSBs are not
+// used. (R,-W) (optional) (4-bytes)
+//
+// Rf Channel
+// RF channel: This attribute reports the frequency to which the MoCA interface is currently tuned,
+// in megahertz. (R) (mandatory) (2-bytes)
+//
+// Last Operational Frequency
+// Last operational frequency: This attribute reports the frequency to which the MoCA interface was
+// tuned when last operational, in megahertz. (R) (mandatory) (2-bytes)
+//
+type PhysicalPathTerminationPointMocaUni struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ physicalpathterminationpointmocauniBME = &ManagedEntityDefinition{
+ Name: "PhysicalPathTerminationPointMocaUni",
+ ClassID: 162,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfffc,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("LoopbackConfiguration", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, true, false, 1),
+ 2: ByteField("AdministrativeState", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, Write), false, false, false, 2),
+ 3: ByteField("OperationalState", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read), true, true, false, 3),
+ 4: Uint16Field("MaxFrameSize", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, false, false, 4),
+ 5: ByteField("Arc", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), true, true, false, 5),
+ 6: ByteField("ArcInterval", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, Write), false, true, false, 6),
+ 7: ByteField("PppoeFilter", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, Write), false, true, false, 7),
+ 8: ByteField("NetworkStatus", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: MultiByteField("Password", OctetsAttributeType, 0x0080, 17, toOctets("AAAAAAAAAAAAAAAAAAAAAAA="), mapset.NewSetWith(Read, Write), false, false, false, 9),
+ 10: ByteField("PrivacyEnabled", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read, Write), false, false, false, 10),
+ 11: Uint16Field("MinimumBandwidthAlarmThreshold", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read, Write), false, true, false, 11),
+ 12: Uint32Field("FrequencyMask", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read, Write), false, true, false, 12),
+ 13: Uint16Field("RfChannel", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, false, false, 13),
+ 14: Uint16Field("LastOperationalFrequency", UnsignedIntegerAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, false, false, 14),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewPhysicalPathTerminationPointMocaUni (class ID 162) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewPhysicalPathTerminationPointMocaUni(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*physicalpathterminationpointmocauniBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointpotsuni.go b/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointpotsuni.go
new file mode 100644
index 0000000..6318c3c
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointpotsuni.go
@@ -0,0 +1,171 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// PhysicalPathTerminationPointPotsUniClassID is the 16-bit ID for the OMCI
+// Managed entity Physical path termination point POTS UNI
+const PhysicalPathTerminationPointPotsUniClassID ClassID = ClassID(53)
+
+var physicalpathterminationpointpotsuniBME *ManagedEntityDefinition
+
+// PhysicalPathTerminationPointPotsUni (class ID #53)
+// This ME represents a POTS UNI in the ONU, where a physical path terminates and physical path
+// level functions (analogue telephony) are performed.
+//
+// The ONU automatically creates an instance of this ME per port as follows.
+//
+// o When the ONU has POTS ports built into its factory configuration.
+//
+// o When a cardholder is provisioned to expect a circuit pack of the POTS type.
+//
+// o When a cardholder provisioned for plug-and-play is equipped with a circuit pack of the POTS
+// type. Note that the installation of a plug-and-play card may indicate the presence of POTS ports
+// via equipment ID as well as type, and indeed may cause the ONU to instantiate a port-mapping
+// package that specifies POTS ports.
+//
+// The ONU automatically deletes instances of this ME when a cardholder is neither provisioned to
+// expect a POTS circuit pack, nor is it equipped with a POTS circuit pack.
+//
+// Relationships
+// An instance of this ME is associated with each real or pre-provisioned POTS port. Either a SIP
+// or a VoIP voice CTP links to the POTS UNI. Status is available from a VoIP line status ME, and
+// RTP and call control PM may be collected on this point.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. This 2-byte
+// number indicates the physical position of the UNI. The first byte is the slot ID (defined in
+// clause 9.1.5). The second byte is the port ID, with the range 1..255. (R) (mandatory) (2-bytes)
+//
+// Administrative State
+// When the administrative state is set to lock, all user functions of this UNI are blocked, and
+// alarms, TCAs and AVCs for this ME and all dependent MEs are no longer generated. Selection of a
+// default value for this attribute is outside the scope of this Recommendation. (R, W) (mandatory)
+// (1 byte)
+//
+// Deprecated
+// Deprecated: This attribute is not used and should not be supported. (R,-W) (optional) (2-bytes)
+//
+// Arc
+// ARC: See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+// Arc Interval
+// ARC interval: See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+// Impedance
+// where C1, R1, and R2 are related as shown in Figure 9.9.1-1. Upon ME instantiation, the ONU sets
+// this attribute to 0. (R,-W) (optional) (1-byte)
+//
+// Transmission Path
+// Transmission path: This attribute allows setting the POTS UNI either to full-time on-hook
+// transmission (0) or part-time on-hook transmission (1). Upon ME instantiation, the ONU sets this
+// attribute to 0. (R,-W) (optional) (1-byte)
+//
+// Rx Gain
+// Rx gain: This attribute specifies a gain value for the received signal in the form of a 2s
+// complement number. Valid values are -120 (12.0-dB) to 60 (+6.0-dB). The direction of the
+// affected signal is in the D to A direction, towards the telephone set. Upon ME instantiation,
+// the ONU sets this attribute to 0. (R, W) (optional) (1 byte)
+//
+// Tx Gain
+// Tx gain: This attribute specifies a gain value for the transmit signal in the form of a 2s
+// complement number. Valid values are -120 (12.0-dB) to 60 (+6.0-dB). The direction of the
+// affected signal is in the A to D direction, away from the telephone set. Upon ME instantiation,
+// the ONU sets this attribute to 0. (R, W) (optional) (1 byte)
+//
+// Operational State
+// Operational state: This attribute indicates whether the ME is capable of performing its
+// function. Valid values are enabled (0) and disabled (1). (R) (optional) (1-byte)
+//
+// Hook State
+// Hook state: This attribute indicates the current state of the subscriber line: 0-= on hook, 1-=
+// off hook (R) (optional) (1-byte)
+//
+// Pots Holdover Time
+// POTS holdover time: This attribute determines the time during which the POTS loop voltage is
+// held up when a LOS or softswitch connectivity is detected (please refer to the following table
+// for description of behaviours).. After the specified time elapses, the ONU drops the loop
+// voltage, and may thereby cause premises intrusion alarm or fire panel circuits to go active.
+// When the ONU ranges successfully on the PON or softswitch connectivity is restored, it restores
+// the POTS loop voltage immediately and resets the timer to zero. The attribute is expressed in
+// seconds. The default value 0 selects the vendor's factory policy. (R,-W) (optional) (2-bytes)
+//
+// Nominal Feed Voltage
+// Nominal feed voltage: This attribute indicates the designed nominal feed voltage of the POTS
+// loop. It is an absolute value with resolution 1-V. This attribute does not represent the actual
+// voltage measured on the loop, which is available through the test command. (R,-W) (optional)
+// (1-byte)
+//
+// Loss Of Softswitch
+// Loss of softswitch: This Boolean attribute controls whether the T/R holdover initiation
+// criteria. False disables loss of softswitch connectivity detection as criteria for initiating
+// the POTS holdover timer. True enables loss of softswitch connectivity detection as criteria for
+// initiating the POTS holdover timer. This attribute is optional (if not implemented, the POTS
+// holdover time is triggered on a LOS when POTS holdover is greater than zero). (R,-W) (optional)
+// (1-byte)
+//
+type PhysicalPathTerminationPointPotsUni struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ physicalpathterminationpointpotsuniBME = &ManagedEntityDefinition{
+ Name: "PhysicalPathTerminationPointPotsUni",
+ ClassID: 53,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ Test,
+ ),
+ AllowedAttributeMask: 0xfff8,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("AdministrativeState", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), true, false, false, 1),
+ 2: Uint16Field("Deprecated", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, Write), false, true, true, 2),
+ 3: ByteField("Arc", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), true, true, false, 3),
+ 4: ByteField("ArcInterval", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, true, false, 4),
+ 5: ByteField("Impedance", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, true, false, 5),
+ 6: ByteField("TransmissionPath", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, Write), false, true, false, 6),
+ 7: ByteField("RxGain", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, Write), false, true, false, 7),
+ 8: ByteField("TxGain", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, Write), false, true, false, 8),
+ 9: ByteField("OperationalState", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read), true, true, false, 9),
+ 10: ByteField("HookState", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, true, false, 10),
+ 11: Uint16Field("PotsHoldoverTime", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read, Write), false, true, false, 11),
+ 12: ByteField("NominalFeedVoltage", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read, Write), false, true, false, 12),
+ 13: ByteField("LossOfSoftswitch", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read, Write), false, true, false, 13),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewPhysicalPathTerminationPointPotsUni (class ID 53) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewPhysicalPathTerminationPointPotsUni(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*physicalpathterminationpointpotsuniBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointreuni.go b/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointreuni.go
new file mode 100644
index 0000000..f6bc1f1
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointreuni.go
@@ -0,0 +1,191 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// PhysicalPathTerminationPointReUniClassID is the 16-bit ID for the OMCI
+// Managed entity Physical path termination point RE UNI
+const PhysicalPathTerminationPointReUniClassID ClassID = ClassID(314)
+
+var physicalpathterminationpointreuniBME *ManagedEntityDefinition
+
+// PhysicalPathTerminationPointReUni (class ID #314)
+// This ME represents an S'/R' interface in a mid-span PON RE that supports OEO regeneration in at
+// least one direction, where physical paths terminate and physical path level functions are
+// performed (transmit or receive).
+//
+// Such an RE automatically creates an instance of this ME for each S'/R' interface port as
+// follows.
+//
+// o When the RE has mid-span PON RE UNI interface ports built into its factory configuration.
+//
+// o When a cardholder is provisioned to expect a circuit pack of the mid-span PON RE UNI type.
+//
+// o When a cardholder provisioned for plug-and-play is equipped with a circuit pack of the midspan
+// PON RE UNI type. Note that the installation of a plug-and-play card may indicate the presence of
+// a mid-span PON RE UNI port via equipment ID as well as its type attribute, and indeed may cause
+// the management ONU to instantiate a port-mapping package to specify the ports precisely.
+//
+// The management ONU automatically deletes instances of this ME when a cardholder is neither
+// provisioned to expect a mid-span PON RE UNI circuit pack, nor is it equipped with a mid-span PON
+// RE UNI circuit pack.
+//
+// As illustrated in Figure 8.2.10-3, a PPTP RE UNI may share the physical port with an RE upstream
+// amplifier. The ONU declares a shared configuration through the port-mapping package combined
+// port table, whose structure defines one ME as the master. It is recommended that the PPTP RE UNI
+// be the master, with the RE upstream amplifier as a secondary ME.
+//
+// The administrative state, operational state and ARC attributes of the master ME override similar
+// attributes in secondary MEs associated with the same port. In the secondary ME, these attributes
+// are present, but cause no action when written and have undefined values when read. The RE
+// upstream amplifier should use its provisionable upstream alarm thresholds and should declare
+// upstream alarms as necessary; other isomorphic alarms should be declared by the PPTP RE UNI. The
+// test action should be addressed to the master ME.
+//
+// Relationships
+// An instance of this ME is associated with each instance of a mid-span PON RE S'/R' physical
+// interface of an RE that includes OEO regeneration in either direction, and it may also be
+// associated with an RE upstream amplifier.
+//
+// Attributes
+// Managed Entity Id
+// NOTE 1 - This ME ID may be identical to that of an RE upstream amplifier if it shares the same
+// physical slot and port.
+//
+// Administrative State
+// NOTE 2 - Administrative lock of a PPTP RE UNI results in loss of signal to any downstream ONUs.
+//
+// Operational State
+// Operational state: This attribute indicates whether the ME is capable of performing its
+// function. Valid values are enabled (0) and disabled (1). (R) (optional) (1-byte)
+//
+// Arc
+// ARC: See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+// Arc Interval
+// ARC interval: See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+// Re Ani_G Pointer
+// RE ANI-G pointer: This attribute points to an RE ANI-G instance. (R,-W) (mandatory) (2-bytes)
+//
+// Total Optical Receive Signal Level Table
+// Total optical receive signal level table: This table attribute reports a series of measurements
+// of time averaged received upstream optical signal power. The measurement circuit should have a
+// temporal response similar to a simple 1-pole low pass filter, with an effective time constant of
+// the order of a GTC frame time. Each table entry has a 2-byte frame counter field (most
+// significant end), and a 2-byte power measurement field. The frame counter field contains the
+// least significant 16-bits of the superframe counter received closest to the time of the
+// measurement. The power measurement field is a 2s complement integer referred to 1-mW (i.e.,
+// dBm), with 0.002-dB granularity. The RE equipment should add entries to this table as frequently
+// as is reasonable. The RE should clear the table once it is read by the OLT. (R) (optional) (4-*
+// N-bytes, where N is the number of measurements present.)
+//
+// Per Burst Receive Signal Level Table
+// Per burst receive signal level table: This table attribute reports the most recent measurement
+// of received burst upstream optical signal power. Each table entry has a 2-byte ONU-ID field
+// (most significant end), and a 2-byte power measurement field. The power measurement field is a
+// 2s complement integer referred to 1-mW (i.e.,-dBm), with 0.002-dB granularity. (R) (optional)
+// (4-* N-bytes, where N is the number of distinct ONUs connected to the S'/R' interface.)
+//
+// Lower Receive Optical Threshold
+// Lower receive optical threshold: This attribute specifies the optical level that the RE uses to
+// declare the burst mode low received optical power alarm. Valid values are -127-dBm (coded as
+// 254) to 0-dBm (coded as 0) in 0.5-dB increments. The default value 0xFF selects the RE's
+// internal policy. (R,-W) (optional) (1-byte)
+//
+// Upper Receive Optical Threshold
+// Upper receive optical threshold: This attribute specifies the optical level that the RE uses to
+// declare the burst mode high optical power alarm. Valid values are -127-dBm (coded as 254) to
+// 0-dBm (coded as 0) in 0.5-dB increments. The default value 0xFF selects the RE's internal
+// policy. (R,-W) (optional) (1-byte)
+//
+// Transmit Optical Level
+// Transmit optical level: This attribute reports the current measurement of the downstream mean
+// optical launch power. Its value is a 2s complement integer referred to 1-mW (i.e., dBm), with
+// 0.002-dB granularity. (R) (optional) (2-bytes)
+//
+// Lower Transmit Power Threshold
+// Lower transmit power threshold: This attribute specifies the downstream minimum mean optical
+// launch power at the S'/R' interface that the RE uses to declare the low transmit optical power
+// alarm. Its value is a 2s complement integer referred to 1-mW (i.e., dBm), with 0.5-dB
+// granularity. The default value 0x7F selects the RE's internal policy. (R,-W) (optional) (1-byte)
+//
+// Upper Transmit Power Threshold
+// Upper transmit power threshold: This attribute specifies the downstream maximum mean optical
+// launch power at the S'/R' interface that the RE uses to declare the high transmit optical power
+// alarm. Its value is a 2s complement integer referred to 1-mW (i.e., dBm), with 0.5-dB
+// granularity. The default value 0x7F selects the RE's internal policy. (R,-W) (optional) (1-byte)
+//
+// A Dditional Preamble
+// Additional preamble: This attribute indicates the number of bytes of PLOu preamble that are
+// unavoidably consumed while passing the RE. (R) (mandatory) (1-byte)
+//
+// A Dditional Guard Time
+// Additional guard time: This attribute indicates the number of bytes of extra guard time that are
+// needed to ensure correct operation with the RE. (R) (mandatory) (1-byte)
+//
+type PhysicalPathTerminationPointReUni struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ physicalpathterminationpointreuniBME = &ManagedEntityDefinition{
+ Name: "PhysicalPathTerminationPointReUni",
+ ClassID: 314,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ GetNext,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfffc,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("AdministrativeState", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: ByteField("OperationalState", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read), true, true, false, 2),
+ 3: ByteField("Arc", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), true, true, false, 3),
+ 4: ByteField("ArcInterval", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, true, false, 4),
+ 5: Uint16Field("ReAniGPointer", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, false, false, 5),
+ 6: TableField("TotalOpticalReceiveSignalLevelTable", TableAttributeType, 0x0400, TableInfo{nil, 4}, mapset.NewSetWith(Read), false, true, false, 6),
+ 7: TableField("PerBurstReceiveSignalLevelTable", TableAttributeType, 0x0200, TableInfo{nil, 4}, mapset.NewSetWith(Read), false, true, false, 7),
+ 8: ByteField("LowerReceiveOpticalThreshold", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, Write), false, true, false, 8),
+ 9: ByteField("UpperReceiveOpticalThreshold", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, Write), false, true, false, 9),
+ 10: Uint16Field("TransmitOpticalLevel", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, true, false, 10),
+ 11: ByteField("LowerTransmitPowerThreshold", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read, Write), false, true, false, 11),
+ 12: ByteField("UpperTransmitPowerThreshold", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read, Write), false, true, false, 12),
+ 13: ByteField("ADditionalPreamble", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, false, false, 13),
+ 14: ByteField("ADditionalGuardTime", UnsignedIntegerAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, false, false, 14),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewPhysicalPathTerminationPointReUni (class ID 314) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewPhysicalPathTerminationPointReUni(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*physicalpathterminationpointreuniBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointvideoani.go b/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointvideoani.go
new file mode 100644
index 0000000..0a3d356
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointvideoani.go
@@ -0,0 +1,165 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// PhysicalPathTerminationPointVideoAniClassID is the 16-bit ID for the OMCI
+// Managed entity Physical path termination point video ANI
+const PhysicalPathTerminationPointVideoAniClassID ClassID = ClassID(90)
+
+var physicalpathterminationpointvideoaniBME *ManagedEntityDefinition
+
+// PhysicalPathTerminationPointVideoAni (class ID #90)
+// This ME represents an RF video ANI in the ONU, where physical paths terminate and physical path
+// level functions are performed.
+//
+// The ONU automatically creates an instance of this ME per port as follows.
+//
+// o When the ONU has video ANI ports built into its factory configuration.
+//
+// o When a cardholder is provisioned to expect a circuit pack of the video ANI type.
+//
+// o When a cardholder provisioned for plug-and-play is equipped with a circuit pack of the video
+// ANI type. Note that the installation of a plug-and-play card may indicate the presence of video
+// ANI ports via equipment ID as well as its type, and indeed may cause the ONU to instantiate a
+// port-mapping package that specifies video ANI ports.
+//
+// The ONU automatically deletes instances of this ME when a cardholder is neither provisioned to
+// expect a video ANI circuit pack, nor is it equipped with a video ANI circuit pack.
+//
+// Relationships
+// An instance of this ME is associated with each instance of a real or pre-provisioned video ANI
+// port.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. This 2-byte
+// number indicates the physical position of the ANI. The first byte is the slot ID (defined in
+// clause 9.1.5). The second byte is the port ID, with the range 1..255. (R) (mandatory) (2-bytes)
+//
+// Administrative State
+// Administrative state: This attribute locks (1) and unlocks (0) the functions performed by this
+// ME. Administrative state is further described in clause-A.1.6. (R,-W) (mandatory) (1-byte)
+//
+// Operational State
+// Operational state: This attribute indicates whether the ME is capable of performing its
+// function. Valid values are enabled (0) and disabled (1). (R) (optional) (1-byte)
+//
+// Arc
+// ARC: See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+// Arc Interval
+// ARC interval: See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+// Frequency Range Low
+// (R) (mandatory) (1-byte)
+//
+// Frequency Range High
+// (R) (mandatory) (1-byte)
+//
+// Signal Capability
+// (R) (mandatory) (1-byte)
+//
+// Optical Signal Level
+// (R) (optional) (1-byte)
+//
+// Pilot Signal Level
+// (R) (optional) (1-byte)
+//
+// Signal Level Min
+// Signal level min: This attribute indicates the minimum optical RF power per channel that results
+// in a CNR of 47-dBc for a channel of 4.5 MHz bandwidth at a receive optical power of -5-dBm. The
+// unit of this attribute is decibel-microwatt optical. (R) (mandatory) (1-byte)
+//
+// Signal Level Max
+// Signal level max: This attribute indicates the maximum optical RF power per channel that results
+// in a CTB of -57-dBc for an 80-channel ensemble of carriers at a perchannel optical modulation
+// index (OMI) of 3.5%. The unit of this attribute is decibel-microwatt optical. (R) (mandatory)
+// (1-byte)
+//
+// Pilot Frequency
+// (R,-W) (optional) (4-bytes)
+//
+// Agc Mode
+// (R,-W) (optional) (1-byte)
+//
+// Agc Setting
+// (R,-W) (optional) (1-byte)
+//
+// Video Lower Optical Threshold
+// NOTE - Because the power measurement returned in the optical signal level attribute has a
+// resolution of 1-dB, it is possible that the measured value could appear to be in-range, even
+// though an out-of-range alarm has been declared against a threshold with 0.1-dB resolution.
+//
+// Video Upper Optical Threshold
+// Video upper optical threshold: This attribute specifies the optical level used to declare the
+// video OOR high alarm. Valid values are -12 to +6-dBm in 0.1-dB increments, represented as a 2s
+// complement integer. (Coding -120 to +60, 0x00-= 0-dBm, 0x88-= -12.0-dBm, etc.) Upon ME
+// instantiation, the ONU sets this attribute to 0x19 (+2.5-dBm). (R,-W) (optional) (1-byte)
+//
+type PhysicalPathTerminationPointVideoAni struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ physicalpathterminationpointvideoaniBME = &ManagedEntityDefinition{
+ Name: "PhysicalPathTerminationPointVideoAni",
+ ClassID: 90,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffff,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("AdministrativeState", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: ByteField("OperationalState", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read), true, true, false, 2),
+ 3: ByteField("Arc", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), true, true, false, 3),
+ 4: ByteField("ArcInterval", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, true, false, 4),
+ 5: ByteField("FrequencyRangeLow", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: ByteField("FrequencyRangeHigh", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: ByteField("SignalCapability", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: ByteField("OpticalSignalLevel", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, true, false, 8),
+ 9: ByteField("PilotSignalLevel", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, true, false, 9),
+ 10: ByteField("SignalLevelMin", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ 11: ByteField("SignalLevelMax", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, false, false, 11),
+ 12: Uint32Field("PilotFrequency", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read, Write), false, true, false, 12),
+ 13: ByteField("AgcMode", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read, Write), false, true, false, 13),
+ 14: ByteField("AgcSetting", UnsignedIntegerAttributeType, 0x0004, 0, mapset.NewSetWith(Read, Write), false, true, false, 14),
+ 15: ByteField("VideoLowerOpticalThreshold", UnsignedIntegerAttributeType, 0x0002, 0, mapset.NewSetWith(Read, Write), false, true, false, 15),
+ 16: ByteField("VideoUpperOpticalThreshold", UnsignedIntegerAttributeType, 0x0001, 0, mapset.NewSetWith(Read, Write), false, true, false, 16),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewPhysicalPathTerminationPointVideoAni (class ID 90) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewPhysicalPathTerminationPointVideoAni(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*physicalpathterminationpointvideoaniBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointvideouni.go b/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointvideouni.go
new file mode 100644
index 0000000..ebbf415
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointvideouni.go
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// PhysicalPathTerminationPointVideoUniClassID is the 16-bit ID for the OMCI
+// Managed entity Physical path termination point video UNI
+const PhysicalPathTerminationPointVideoUniClassID ClassID = ClassID(82)
+
+var physicalpathterminationpointvideouniBME *ManagedEntityDefinition
+
+// PhysicalPathTerminationPointVideoUni (class ID #82)
+// This ME represents an RF video UNI in the ONU, where physical paths terminate and physical path
+// level functions are performed.
+//
+// The ONU automatically creates an instance of this ME per port:
+//
+// o when the ONU has RF video UNI ports built into its factory configuration;
+//
+// o when a cardholder is provisioned to expect a circuit pack of the video UNI type;
+//
+// o when a cardholder provisioned for plug-and-play is equipped with a circuit pack of the video
+// UNI type. Note that the installation of a plug-and-play card may indicate the presence of video
+// ports via equipment ID as well as its type, and indeed may cause the ONU to instantiate a port-
+// mapping package that specifies video ports.
+//
+// The ONU automatically deletes instances of this ME when a cardholder is neither provisioned to
+// expect a video circuit pack, nor is it equipped with a video circuit pack.
+//
+// Relationships
+// One or more instances of this ME are associated with an instance of a real or virtual circuit
+// pack classified as video type.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. This 2-byte
+// number indicates the physical position of the UNI. The first byte is the slot ID (defined in
+// clause 9.1.5). The second byte is the port ID, with the range 1..255. (R) (mandatory) (2-bytes)
+//
+// Administrative State
+// Administrative state: This attribute locks (1) and unlocks (0) the functions performed by this
+// ME. Administrative state is further described in clause A.1.6. (R,-W) (mandatory) (1-byte)
+//
+// Operational State
+// Operational state: This attribute indicates whether the ME is capable of performing its
+// function. Valid values are enabled (0) and disabled (1). (R) (optional) (1-byte)
+//
+// Arc
+// ARC: See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+// Arc Interval
+// ARC interval: See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+// Power Control
+// Power control: This attribute controls whether power is provided from the ONU to an external
+// equipment over the video PPTP. Value 1 enables power over coaxial cable. The default value 0
+// disables power feed. (R,-W) (optional) (1-byte)
+//
+type PhysicalPathTerminationPointVideoUni struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ physicalpathterminationpointvideouniBME = &ManagedEntityDefinition{
+ Name: "PhysicalPathTerminationPointVideoUni",
+ ClassID: 82,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xf800,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("AdministrativeState", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: ByteField("OperationalState", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read), true, true, false, 2),
+ 3: ByteField("Arc", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), true, true, false, 3),
+ 4: ByteField("ArcInterval", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, true, false, 4),
+ 5: ByteField("PowerControl", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, true, false, 5),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewPhysicalPathTerminationPointVideoUni (class ID 82) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewPhysicalPathTerminationPointVideoUni(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*physicalpathterminationpointvideouniBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointxdslunipart1.go b/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointxdslunipart1.go
new file mode 100644
index 0000000..fd720a3
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointxdslunipart1.go
@@ -0,0 +1,163 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// PhysicalPathTerminationPointXdslUniPart1ClassID is the 16-bit ID for the OMCI
+// Managed entity Physical path termination point xDSL UNI part 1
+const PhysicalPathTerminationPointXdslUniPart1ClassID ClassID = ClassID(98)
+
+var physicalpathterminationpointxdslunipart1BME *ManagedEntityDefinition
+
+// PhysicalPathTerminationPointXdslUniPart1 (class ID #98)
+// This ME represents the point where physical paths terminate on an xDSL CO modem (xTU-C). The
+// xDSL ME family is used for ADSL VDSL2 and FAST services. A legacy family of VDSL MEs remains
+// valid for ITUT G.993.1 VDSL, if needed. It is documented in [ITUT G.983.2].
+//
+// The ONU automatically creates an instance of this ME per port:
+//
+// o when the ONU has xDSL ports built into its factory configuration;
+//
+// o when a cardholder is provisioned to expect a circuit pack of the xDSL type;
+//
+// o when a cardholder provisioned for plug-and-play is equipped with a circuit pack of the xDSL
+// type. Note that the installation of a plug-and-play card may indicate the presence of xDSL ports
+// via equipment ID as well as its type, and indeed may cause the ONU to instantiate a port-mapping
+// package that specifies xDSL ports.
+//
+// The ONU automatically deletes instances of this ME when a cardholder is neither provisioned to
+// expect an xDSL circuit pack, nor is it equipped with an xDSL circuit pack.
+//
+// Relationships
+// An instance of this ME is associated with each instance of a real or pre-provisioned xDSL port.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. This 2 byte
+// number indicates the physical position of the UNI. The six LSBs of the first byte are the slot
+// ID, defined in clause 9.1.5. The two MSBs indicate the channel number in some of the implicitly
+// linked MEs, and must be 0 in the PPTP itself. This reduces the possible number of physical slots
+// to 64. The second byte is the port ID, with the range 1..255. (R) (mandatory) (2-bytes)
+//
+// Loopback Configuration
+// Upon ME instantiation, the ONU sets this attribute to 0. (R,-W) (mandatory) (1-byte)
+//
+// Administrative State
+// Administrative state: This attribute locks (1) and unlocks (0) the functions performed by this
+// ME. Administrative state is further described in clause A.1.6. (R,-W) (mandatory) (1-byte)
+//
+// Operational State
+// Operational state: This attribute indicates whether the ME is capable of performing its
+// function. Valid values are enabled (0) and disabled (1). (R) (optional) (1-byte)
+//
+// Xdsl Line Configuration Profile
+// xDSL line configuration profile: This attribute points to an instance of the xDSL line
+// configuration profiles (part 1, 2 and 3) MEs, and if necessary, also to VDSL2 line configuration
+// extensions (1 and 2) MEs, also to vectoring line configuration extension MEs. Upon ME
+// instantiation, the ONU sets this attribute to 0, a null pointer. (R,-W) (mandatory) (2-bytes)
+//
+// Xdsl Subcarrier Masking Downstream Profile
+// xDSL subcarrier masking downstream profile: This attribute points to an instance of the xDSL
+// subcarrier masking downstream profile ME. Upon ME instantiation, the ONU sets this attribute to
+// 0, a null pointer. (R,-W) (mandatory) (2-bytes)
+//
+// Xdsl Subcarrier Masking Upstream Profile
+// xDSL subcarrier masking upstream profile: This attribute points to an instance of the xDSL
+// subcarrier masking upstream profile ME. Upon ME instantiation, the ONU sets this attribute to 0,
+// a null pointer. (R,-W) (mandatory) (2-bytes)
+//
+// Xdsl Downstream Power Spectral Density Psd Mask Profile
+// xDSL downstream power spectral density (PSD) mask profile: This attribute points to an instance
+// of the xDSL PSD mask profile ME that defines downstream parameters. Upon ME instantiation, the
+// ONU sets this attribute to 0, a null pointer. (R,-W) (mandatory) (2-bytes)
+//
+// Xdsl Downstream Rfi Bands Profile
+// xDSL downstream RFI bands profile: This attribute points to an instance of the xDSL downstream
+// RFI bands profile ME. Upon ME instantiation, the ONU sets this attribute to 0, a null pointer.
+// (R,-W) (mandatory) (2-bytes)
+//
+// Arc
+// ARC: See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+// Arc Interval
+// ARC interval: See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+// Modem Type
+// NOTE - Many newer VDSL2 chip sets support only PTM. The ATM default is retained for backward
+// compatibility, but implementers should be aware that the default may need to be overridden by
+// provisioning before the xDSL UNI can be brought into service.
+//
+// Upstream Psd Mask Profile
+// Upstream PSD mask profile: This attribute points to an instance of the xDSL PSD mask profile
+// that defines upstream parameters. Upon ME instantiation, the ONU sets this attribute to 0, a
+// null pointer. (R,-W) (optional) (2-bytes)
+//
+// Network Specific Extensions Pointer
+// Network specific extensions pointer: This attribute points to a network address ME that contains
+// the path and name of a file containing network specific parameters for the associated UNI. Upon
+// ME instantiation, the ONU sets this attribute to 0xFFFF, a null pointer. (R,-W) (optional)
+// (2-bytes)
+//
+type PhysicalPathTerminationPointXdslUniPart1 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ physicalpathterminationpointxdslunipart1BME = &ManagedEntityDefinition{
+ Name: "PhysicalPathTerminationPointXdslUniPart1",
+ ClassID: 98,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfff8,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("LoopbackConfiguration", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: ByteField("AdministrativeState", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, Write), false, false, false, 2),
+ 3: ByteField("OperationalState", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read), true, true, false, 3),
+ 4: Uint16Field("XdslLineConfigurationProfile", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, false, false, 4),
+ 5: Uint16Field("XdslSubcarrierMaskingDownstreamProfile", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, false, false, 5),
+ 6: Uint16Field("XdslSubcarrierMaskingUpstreamProfile", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, Write), false, false, false, 6),
+ 7: Uint16Field("XdslDownstreamPowerSpectralDensityPsdMaskProfile", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, Write), false, false, false, 7),
+ 8: Uint16Field("XdslDownstreamRfiBandsProfile", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, Write), false, false, false, 8),
+ 9: ByteField("Arc", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, Write), true, true, false, 9),
+ 10: ByteField("ArcInterval", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read, Write), false, true, false, 10),
+ 11: ByteField("ModemType", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read, Write), false, true, false, 11),
+ 12: Uint16Field("UpstreamPsdMaskProfile", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read, Write), false, true, false, 12),
+ 13: Uint16Field("NetworkSpecificExtensionsPointer", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read, Write), false, true, false, 13),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewPhysicalPathTerminationPointXdslUniPart1 (class ID 98) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewPhysicalPathTerminationPointXdslUniPart1(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*physicalpathterminationpointxdslunipart1BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointxdslunipart2.go b/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointxdslunipart2.go
new file mode 100644
index 0000000..894c40a
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/physicalpathterminationpointxdslunipart2.go
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// PhysicalPathTerminationPointXdslUniPart2ClassID is the 16-bit ID for the OMCI
+// Managed entity Physical path termination point xDSL UNI part 2
+const PhysicalPathTerminationPointXdslUniPart2ClassID ClassID = ClassID(99)
+
+var physicalpathterminationpointxdslunipart2BME *ManagedEntityDefinition
+
+// PhysicalPathTerminationPointXdslUniPart2 (class ID #99)
+// This ME represents the point in the ONU where physical paths terminate on an xDSL CO modem
+// (xTU-C). Standards and chip sets support several forms of DSL, including VDSL2, and the xDSL ME
+// family is used for all of them, with specific extensions for technology variations.
+//
+// The ONU creates or deletes an instance of this ME at the same time it creates or deletes the
+// corresponding PPTP xDSL UNI part 1.
+//
+// Relationships
+// An instance of this ME is associated with each instance of a PPTP xDSL UNI part 1.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the PPTP xDSL UNI part 1. (R)
+// (mandatory) (2-bytes)
+//
+// Xdsl Channel Configuration Profile For Bearer Channel 0 Downstream
+// xDSL channel configuration profile for bearer channel 0 downstream: (R,-W) (optional) (2-bytes)
+//
+// Xdsl Channel Configuration Profile For Bearer Channel 1 Downstream
+// xDSL channel configuration profile for bearer channel 1 downstream: (R,-W) (optional) (2-bytes)
+//
+// Xdsl Channel Configuration Profile For Bearer Channel 2 Downstream
+// xDSL channel configuration profile for bearer channel 2 downstream: (R,-W) (optional) (2-bytes)
+//
+// Xdsl Channel Configuration Profile For Bearer Channel 3 Downstream
+// xDSL channel configuration profile for bearer channel 3 downstream: (R,-W) (optional) (2-bytes)
+//
+// Xdsl Channel Configuration Profile For Bearer Channel 0 Upstream
+// xDSL channel configuration profile for bearer channel 0 upstream: (R,-W) (optional) (2-bytes)
+//
+// Xdsl Channel Configuration Profile For Bearer Channel 1 Upstream
+// xDSL channel configuration profile for bearer channel 1 upstream: (R,-W) (optional) (2-bytes)
+//
+// Xdsl Channel Configuration Profile For Bearer Channel 2 Upstream
+// xDSL channel configuration profile for bearer channel 2 upstream: (R,-W) (optional) (2-bytes)
+//
+// Xdsl Channel Configuration Profile For Bearer Channel 3 Upstream
+// xDSL channel configuration profile for bearer channel 3 upstream: (R,-W) (optional) (2-bytes)
+//
+type PhysicalPathTerminationPointXdslUniPart2 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ physicalpathterminationpointxdslunipart2BME = &ManagedEntityDefinition{
+ Name: "PhysicalPathTerminationPointXdslUniPart2",
+ ClassID: 99,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xff00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: Uint16Field("XdslChannelConfigurationProfileForBearerChannel0Downstream", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, true, false, 1),
+ 2: Uint16Field("XdslChannelConfigurationProfileForBearerChannel1Downstream", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, Write), false, true, false, 2),
+ 3: Uint16Field("XdslChannelConfigurationProfileForBearerChannel2Downstream", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), false, true, false, 3),
+ 4: Uint16Field("XdslChannelConfigurationProfileForBearerChannel3Downstream", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, true, false, 4),
+ 5: Uint16Field("XdslChannelConfigurationProfileForBearerChannel0Upstream", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, true, false, 5),
+ 6: Uint16Field("XdslChannelConfigurationProfileForBearerChannel1Upstream", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, Write), false, true, false, 6),
+ 7: Uint16Field("XdslChannelConfigurationProfileForBearerChannel2Upstream", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, Write), false, true, false, 7),
+ 8: Uint16Field("XdslChannelConfigurationProfileForBearerChannel3Upstream", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, Write), false, true, false, 8),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewPhysicalPathTerminationPointXdslUniPart2 (class ID 99) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewPhysicalPathTerminationPointXdslUniPart2(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*physicalpathterminationpointxdslunipart2BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/priorityqueue.go b/vendor/github.com/opencord/omci-lib-go/generated/priorityqueue.go
new file mode 100644
index 0000000..0226bf6
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/priorityqueue.go
@@ -0,0 +1,230 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// PriorityQueueClassID is the 16-bit ID for the OMCI
+// Managed entity Priority queue
+const PriorityQueueClassID ClassID = ClassID(277)
+
+var priorityqueueBME *ManagedEntityDefinition
+
+// PriorityQueue (class ID #277)
+// NOTE 1 - In [ITU-T G.984.4], this is called a priority queue-G.
+//
+// This ME specifies the priority queue used by a GEM port network CTP in the upstream direction.
+// The upstream priority queue ME is also related to a T-CONT ME. By default, this relationship is
+// fixed by the ONU hardware architecture, but some ONUs may also permit the relationship to be
+// configured through the OMCI, as indicated by the QoS configuration flexibility attribute of the
+// ONU2G ME.
+//
+// In the downstream direction, priority queues are associated with UNIs. Again, the association is
+// fixed by default, but some ONUs may permit the association to be configured through the OMCI.
+//
+// If an ONU as a whole contains priority queues, it instantiates these queues autonomously.
+// Priority queues may also be localized to pluggable circuit packs, in which case the ONU creates
+// and deletes them in accordance with circuit pack pre-provisioning and the equipped
+// configuration.
+//
+// The OLT can find all the queues by reading the priority queue ME instances. If the OLT tries to
+// retrieve a non-existent priority queue, the ONU denies the get action with an error indication.
+//
+// See also Appendix II.
+//
+// Priority queues can exist in the ONU core and circuit packs serving both UNI and ANI functions.
+// Therefore, they can be indirectly created and destroyed through cardholder provisioning actions.
+//
+// In the upstream direction, the weight attribute permits the configuring of an optional traffic
+// scheduler. Several attributes support back pressure operation, whereby a back-pressure signal is
+// sent backwards and causes the attached terminal to temporarily suspend sending data.
+//
+// In the downstream direction, strict priority discipline among the queues serving a given UNI is
+// the default, with priorities established through the related port attribute. If two or more non-
+// empty queues have the same priority, capacity is allocated among them in proportion to their
+// weights. Note that the details of the downstream model differ from those of the upstream model.
+//
+// The yellow packet drop thresholds specify the drop probability for a packet that has been marked
+// yellow (drop eligible) by a traffic descriptor or by external equipment such as a residential
+// gateway (RG). If the current average queue occupancy is less than the minimum threshold, the
+// yellow packet drop probability is zero. If the current average queue occupancy is greater than
+// or equal to the maximum threshold, the yellow packet drop probability is one. The yellow drop
+// probability increases linearly between 0 and max_p as the current average queue occupancy
+// increases from the minimum to the maximum threshold.
+//
+// The same model can be configured for green packets, those regarded as being within the traffic
+// contract.
+//
+// Drop precedence colour marking indicates the method by which a packet is marked as drop eligible
+// (yellow). For discard eligibility indicator (DEI) and priority code point (PCP) marking, a drop
+// eligible indicator is equivalent to yellow colour; otherwise, the colour is green. For
+// differentiated services code point (DSCP) assured forwarding (AF) marking, the lowest drop
+// precedence is equivalent to green; otherwise, the colour is yellow.
+//
+// Relationships
+// One or more instances of this ME are associated with the ONU-G ME to model upstream priority
+// queues if the traffic management option attribute in the ONU-G ME is 0 or 2.//// One or more instances of this ME are associated with a PPTP UNI ME as downstream priority
+// queues. Downstream priority queues may or may not be provided for a virtual Ethernet interface
+// point (VEIP).
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. The MSB
+// represents the direction (1: upstream, 0:-downstream). The 15 LSBs represent a queue ID. The
+// queue ID is numbered in ascending order by the ONU itself. It is strongly encouraged that the
+// queue ID be formulated to simplify finding related queues. One way to do this is to number the
+// queues such that the related port attributes are in ascending order (for the downstream and
+// upstream queues separately). The range of downstream queue ids is 0 to 0x7FFF and the range of
+// upstream queue ids is 0x8000 to 0xFFFF. (R) (mandatory) (2-bytes)
+//
+// Queue Configuration Option
+// Queue configuration option: This attribute identifies the buffer partitioning policy. The value
+// 1 means that several queues share one buffer of maximum queue size, while the value 0 means that
+// each queue has an individual buffer of maximum queue size. (R) (mandatory) (1-byte)
+//
+// Maximum Queue Size
+// NOTE 2 - In this and the other similar attributes of the priority queue ME, some legacy
+// implementations may take the queue scale factor from the GEM block length attribute of the ANI-G
+// ME. This option is discouraged in new implementations.
+//
+// Allocated Queue Size
+// Allocated queue size: This attribute identifies the allocated size of this queue, in bytes,
+// scaled by the priority queue scale factor attribute of the ONU2G. (R, W) (mandatory) (2 bytes)
+//
+// Discard_Block Counter Reset Interval
+// Discard-block counter reset interval: This attribute represents the interval in milliseconds at
+// which the counter resets itself. (R,-W) (optional) (2-bytes)
+//
+// Threshold Value For Discarded Blocks Due To Buffer Overflow
+// Threshold value for discarded blocks due to buffer overflow: This attribute specifies the
+// threshold for the number of bytes (scaled by the priority queue scale factor attribute of the
+// ONU2G) discarded on this queue due to buffer overflow. Its value controls the declaration of the
+// block loss alarm. (R, W) (optional) (2-bytes)
+//
+// Related Port
+// If flexible configuration is not supported, the ONU should reject an attempt to set the related
+// port with a parameter error result-reason code.
+//
+// Traffic Scheduler Pointer
+// The ONU should reject an attempt to violate these conditions with a parameter error result-
+// reason code.
+//
+// Weight
+// Weight: This attribute represents weight for WRR scheduling. At a given priority level, capacity
+// is distributed to non-empty queues in proportion to their weights. In the upstream direction,
+// this weight is meaningful if several priority queues are associated with a traffic scheduler or
+// T-CONT whose policy is WRR. In the downstream direction, this weight is used by a UNI in a WRR
+// fashion. Upon ME instantiation, the ONU sets this attribute to 1. (R,-W) (mandatory) (1-byte)
+//
+// Back Pressure Operation
+// Back pressure operation: This attribute enables (0) or disables (1) back pressure operation. Its
+// default value is 0. (R,-W) (mandatory) (2-bytes)
+//
+// Back Pressure Time
+// Back pressure time: This attribute specifies the duration in microseconds of the backpressure
+// signal. It can be used as a pause time for an Ethernet UNI. Upon ME instantiation, the ONU sets
+// this attribute to 0. (R,-W) (mandatory) (4-bytes)
+//
+// Back Pressure Occur Queue Threshold
+// Back pressure occur queue threshold: This attribute identifies the threshold queue occupancy, in
+// bytes, scaled by the priority queue scale factor attribute of the ONU2G, to start sending a
+// back-pressure signal. (R, W) (mandatory) (2-bytes)
+//
+// Back Pressure Clear Queue Threshold
+// Back pressure clear queue threshold: This attribute identifies the threshold queue occupancy, in
+// bytes, scaled by the priority queue scale factor attribute of the ONU2G, to stop sending a back-
+// pressure signal. (R, W) (mandatory) (2-bytes)
+//
+// Packet Drop Queue Thresholds
+// Packet drop queue thresholds: This attribute is a composite of four 2-byte values, a minimum and
+// a maximum threshold, measured in bytes, scaled by the priority queue scale factor attribute of
+// the ONU2-G, for green and yellow packets. The first value is the minimum green threshold, the
+// queue occupancy below which all green packets are admitted to the queue. The second value is the
+// maximum green threshold, the queue occupancy at or above which all green packets are discarded.
+// The third value is the minimum yellow threshold, the queue occupancy below which all yellow
+// packets are admitted to the queue. The fourth value is the maximum yellow threshold, the queue
+// occupancy at or above which all yellow packets are discarded. The default is that all thresholds
+// take the value of the maximum queue size. (R,-W) (optional) (8-bytes)
+//
+// Packet Drop Max_P
+// Packet drop max_p: This attribute is a composite of two 1-byte values, the probability of
+// dropping a coloured packet when the queue occupancy lies just below the maximum threshold for
+// packets of that colour. The first value is the green packet max_p, and the second value is the
+// yellow packet max_p. The probability, max_p, is determined by adding one to the unsigned value
+// (0..255) of this attribute and dividing the result by 256. The default for each value is 255.
+// (R,-W) (optional) (2-bytes)
+//
+// Queue Drop W_Q
+// Queue drop w_q: This attribute determines the averaging coefficient, w_q, as described in
+// [b-Floyd]. The averaging coefficient, w_q, is equal to 2Queue_drop_w_q. For example, when queue
+// drop_w_q has the value 9, the averaging coefficient, w_q, is 1/512-= 0.001-9. The default value
+// is 9. (R,-W) (optional) (1-byte)
+//
+// Drop Precedence Colour Marking
+// (R,-W) (optional) (1-byte)
+//
+type PriorityQueue struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ priorityqueueBME = &ManagedEntityDefinition{
+ Name: "PriorityQueue",
+ ClassID: 277,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffff,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("QueueConfigurationOption", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("MaximumQueueSize", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read), false, false, false, 2),
+ 3: Uint16Field("AllocatedQueueSize", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), false, false, false, 3),
+ 4: Uint16Field("DiscardBlockCounterResetInterval", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, true, false, 4),
+ 5: Uint16Field("ThresholdValueForDiscardedBlocksDueToBufferOverflow", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, true, false, 5),
+ 6: Uint32Field("RelatedPort", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, Write), false, false, false, 6),
+ 7: Uint16Field("TrafficSchedulerPointer", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, Write), false, false, false, 7),
+ 8: ByteField("Weight", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, Write), false, false, false, 8),
+ 9: Uint16Field("BackPressureOperation", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, Write), false, false, false, 9),
+ 10: Uint32Field("BackPressureTime", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read, Write), false, false, false, 10),
+ 11: Uint16Field("BackPressureOccurQueueThreshold", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read, Write), false, false, false, 11),
+ 12: Uint16Field("BackPressureClearQueueThreshold", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read, Write), false, false, false, 12),
+ 13: Uint64Field("PacketDropQueueThresholds", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read, Write), false, true, false, 13),
+ 14: Uint16Field("PacketDropMaxP", UnsignedIntegerAttributeType, 0x0004, 0, mapset.NewSetWith(Read, Write), false, true, false, 14),
+ 15: ByteField("QueueDropWQ", UnsignedIntegerAttributeType, 0x0002, 0, mapset.NewSetWith(Read, Write), false, true, false, 15),
+ 16: ByteField("DropPrecedenceColourMarking", UnsignedIntegerAttributeType, 0x0001, 0, mapset.NewSetWith(Read, Write), false, true, false, 16),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewPriorityQueue (class ID 277) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewPriorityQueue(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*priorityqueueBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/pseudowiremaintenanceprofile.go b/vendor/github.com/opencord/omci-lib-go/generated/pseudowiremaintenanceprofile.go
new file mode 100644
index 0000000..65d5b89
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/pseudowiremaintenanceprofile.go
@@ -0,0 +1,162 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// PseudowireMaintenanceProfileClassID is the 16-bit ID for the OMCI
+// Managed entity Pseudowire maintenance profile
+const PseudowireMaintenanceProfileClassID ClassID = ClassID(284)
+
+var pseudowiremaintenanceprofileBME *ManagedEntityDefinition
+
+// PseudowireMaintenanceProfile (class ID #284)
+// The pseudowire maintenance profile permits the configuration of pseudowire service exception
+// handling. It is created and deleted by the OLT.
+//
+// The settings, and indeed existence, of a pseudowire maintenance profile affect the behaviour of
+// the pseudowire PM history data ME only in establishing criteria for counting SESs, but in no
+// other way. The pseudowire maintenance profile primarily affects the alarms declared by the
+// subscribing pseudowire TP.
+//
+// Relationships
+// One or more instances of the pseudowire TP may point to an instance of the pseudowire
+// maintenance profile. If the pseudowire TP does not refer to a pseudowire maintenance profile,
+// the ONU's default exception handling is implied.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. The value 0 is
+// reserved. (R, setbycreate) (mandatory) (2-bytes)
+//
+// Jitter Buffer Maximum Depth
+// Jitter buffer maximum depth: This attribute specifies the desired maximum depth of the playout
+// buffer in the PSN to the TDM direction. The value is expressed as a multiple of the 125-vs frame
+// rate. The default value 0 selects the ONU's internal policy. (R,-W, setbycreate) (optional)
+// (2-bytes)
+//
+// Jitter Buffer Desired Depth
+// Jitter buffer desired depth: This attribute specifies the desired nominal fill depth of the
+// playout buffer in the PSN to the TDM direction. The value is expressed as a multiple of the
+// 125-vs frame rate. The default value 0 selects the ONU's internal policy. (R,-W, setbycreate)
+// (optional) (2-bytes)
+//
+// Fill Policy
+// (R,-W, setbycreate) (optional) (1-byte)
+//
+// Misconnected Packets Declaration Policy
+// Misconnected packets declaration policy: (R,-W, setbycreate) (optional) (1-byte)
+//
+// Misconnected Packets Clear Policy
+// Misconnected packets clear policy: (R,-W, setbycreate) (optional) (1-byte)
+//
+// Loss Of Packets Declaration Policy
+// Loss of packets declaration policy: (R,-W, setbycreate) (optional) (1-byte)
+//
+// Loss Of Packets Clear Policy
+// Loss of packets clear policy: (R,-W, setbycreate) (optional) (1-byte)
+//
+// Buffer Overrun_Underrun Declaration Policy
+// Buffer overrun/underrun declaration policy: (R,-W, setbycreate) (optional) (1-byte)
+//
+// Buffer Overrun_Underrun Clear Policy
+// Buffer overrun/underrun clear policy: (R,-W, setbycreate) (optional) (1-byte)
+//
+// Malformed Packets Declaration Policy
+// Malformed packets declaration policy: (R,-W, setbycreate) (optional) (1-byte)
+//
+// Malformed Packets Clear Policy
+// Malformed packets clear policy: (R,-W, setbycreate) (optional) (1-byte)
+//
+// R_Bit Transmit Set Policy
+// R-bit transmit set policy: This attribute defines the number of consecutive lost packets that
+// causes the transmitted R bit to be set in the TDM to the PSN direction, indicating lost packets
+// to the far end. The default value 0 selects the ONU's internal policy. (R,-W, setbycreate)
+// (optional) (1-byte)
+//
+// R_Bit Transmit Clear Policy
+// R-bit transmit clear policy: This attribute defines the number of consecutive valid packets that
+// causes the transmitted R bit to be cleared in the TDM to the PSN direction, removing the remote
+// failure indication to the far end. The default value 0 selects the ONU's internal policy. (R,-W,
+// setbycreate) (optional) (1-byte)
+//
+// R_Bit Receive Policy
+// (R,-W, setbycreate) (optional) (1-byte)
+//
+// L Bit Receive Policy
+// (R,-W, setbycreate) (optional) (1-byte)
+//
+// Ses Threshold
+// SES threshold: Number of lost, malformed or otherwise unusable packets expected in the PSN to
+// the TDM direction within a 1-s interval that causes an SES to be counted. Stray packets do not
+// count towards an SES, nor do packets whose L bit is set at the far end. The value 0 specifies
+// that the ONU uses its internal default, which is not necessarily the same as the recommended
+// default value 3. (R, W, set-by-create) (optional) (2 bytes)
+//
+type PseudowireMaintenanceProfile struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ pseudowiremaintenanceprofileBME = &ManagedEntityDefinition{
+ Name: "PseudowireMaintenanceProfile",
+ ClassID: 284,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffff,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("JitterBufferMaximumDepth", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 1),
+ 2: Uint16Field("JitterBufferDesiredDepth", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 2),
+ 3: ByteField("FillPolicy", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 3),
+ 4: ByteField("MisconnectedPacketsDeclarationPolicy", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 4),
+ 5: ByteField("MisconnectedPacketsClearPolicy", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 5),
+ 6: ByteField("LossOfPacketsDeclarationPolicy", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 6),
+ 7: ByteField("LossOfPacketsClearPolicy", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 7),
+ 8: ByteField("BufferOverrunUnderrunDeclarationPolicy", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 8),
+ 9: ByteField("BufferOverrunUnderrunClearPolicy", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 9),
+ 10: ByteField("MalformedPacketsDeclarationPolicy", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 10),
+ 11: ByteField("MalformedPacketsClearPolicy", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 11),
+ 12: ByteField("RBitTransmitSetPolicy", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 12),
+ 13: ByteField("RBitTransmitClearPolicy", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 13),
+ 14: ByteField("RBitReceivePolicy", UnsignedIntegerAttributeType, 0x0004, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 14),
+ 15: ByteField("LBitReceivePolicy", UnsignedIntegerAttributeType, 0x0002, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 15),
+ 16: Uint16Field("SesThreshold", UnsignedIntegerAttributeType, 0x0001, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 16),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewPseudowireMaintenanceProfile (class ID 284) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewPseudowireMaintenanceProfile(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*pseudowiremaintenanceprofileBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/pseudowireperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/pseudowireperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..5799375
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/pseudowireperformancemonitoringhistorydata.go
@@ -0,0 +1,176 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// PseudowirePerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity Pseudowire performance monitoring history data
+const PseudowirePerformanceMonitoringHistoryDataClassID ClassID = ClassID(285)
+
+var pseudowireperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// PseudowirePerformanceMonitoringHistoryData (class ID #285)
+// This ME collects PM for a pseudowire TP. Most of the attributes monitor packets received from
+// the PSN, and may therefore be considered egress PM. For the most part, ingress PM is collected
+// at the CES PPTP ME.
+//
+// NOTE - The pseudowire PM history data ME collects data similar, but not identical, to that
+// available from the MAC bridge port PM history data ME associated with a MAC bridge. When the
+// pseudowire is bridge-based, it may not be necessary to collect both.
+//
+// Instances of this ME are created and deleted by the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an instance of the pseudowire TP.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the pseudowire TP. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 and 2 MEs
+// that contains PM threshold values. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Received Packets
+// Received packets: This attribute counts the total number of packets, both payload and
+// signalling, received in the PSN to the TDM direction. (R) (mandatory) (4-bytes)
+//
+// Transmitted Packets
+// Transmitted packets: This attribute counts the total number of packets, both payload and
+// signalling, transmitted in the TDM to the PSN direction. The count includes packets whose L bit
+// is set and which may therefore not contain a payload. (R) (mandatory) (4-bytes)
+//
+// Missing Packets
+// Missing packets: This attribute counts the number of lost packets, as indicated by gaps in the
+// control word numbering sequence. Both payload and signalling packets, if any, contribute to this
+// count. (R) (mandatory) (4-bytes)
+//
+// Misordered Packets, Usable
+// Misordered packets, usable: This attribute counts the number of packets received out of order,
+// but which were able to be successfully re-ordered and played out. Both payload and signalling
+// packets, if any, contribute to this count. (R) (mandatory) (4-bytes)
+//
+// Misordered Packets Dropped
+// Misordered packets dropped: This attribute counts the number of packets received out of sequence
+// that were discarded, either because the ONU did not support reordering or because it was too
+// late to reorder them. Both payload and signalling packets, if any, contribute to this count. (R)
+// (mandatory) (4-bytes)
+//
+// Playout Buffer Underruns_Overruns
+// Playout buffer underruns/overruns: This attribute counts the number of packets that were
+// discarded because they arrived too late or too early to be played out. Both payload and
+// signalling packets, if any, contribute to this count. (R) (mandatory) (4-bytes)
+//
+// Malformed Packets
+// Malformed packets: This attribute counts the number of malformed packets, e.g., because the
+// packet length was not as expected or because of an unexpected RTP payload type. Both payload and
+// signalling packets, if any, contribute to this count. (R) (mandatory) (4-bytes)
+//
+// Stray Packets
+// Stray packets: This attribute counts the number of packets whose ECID or RTP SSRC failed to
+// match the expected value, or which are otherwise known to have been misdelivered. Stray packets
+// are discarded without affecting any of the other PM counters. Both payload and signalling
+// packets, if any, contribute to this count. (R) (mandatory) (4-bytes)
+//
+// Remote Packet Loss
+// Remote packet loss: This attribute counts received packets whose R bit is set, indicating the
+// loss of packets at the far end. Both payload and signalling packets, if any, contribute to this
+// count. (R) (mandatory) (4-bytes)
+//
+// Tdm L_Bit Packets Transmitted
+// TDM L-bit packets transmitted: This attribute counts the number of packets transmitted with the
+// L bit set, indicating a near-end TDM fault. Both payload and signalling packets, if any,
+// contribute to this count. (R) (mandatory) (4-bytes)
+//
+// Es
+// ES: This attribute counts errored seconds. Any discarded, lost, malformed or unusable packet
+// received from the PSN during a given second causes this counter to increment. Both payload and
+// signalling packets, if any, contribute to this count. (R) (mandatory) (4-bytes)
+//
+// Ses
+// SES: This attribute counts severely errored seconds. The criterion for an SES may be configured
+// through the pseudowire maintenance profile ME. Both payload and signalling packets, if any,
+// contribute to this count. (R) (mandatory) (4-bytes)
+//
+// Uas
+// UAS: This attribute counts unavailable seconds. An unavailable second begins at the onset of 10
+// consecutive SES and ends at the onset of 10 consecutive seconds that are not severely errored. A
+// service is unavailable if either its payload or its signalling, if any, are unavailable. During
+// unavailable time, only UAS should be counted; other anomalies should not be counted. (R)
+// (mandatory) (4-bytes)
+//
+type PseudowirePerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ pseudowireperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "PseudowirePerformanceMonitoringHistoryData",
+ ClassID: 285,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfffe,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("ReceivedPackets", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("TransmittedPackets", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("MissingPackets", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("MisorderedPackets,Usable", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("MisorderedPacketsDropped", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint32Field("PlayoutBufferUnderrunsOverruns", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: Uint32Field("MalformedPackets", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: Uint32Field("StrayPackets", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ 11: Uint32Field("RemotePacketLoss", CounterAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, false, false, 11),
+ 12: Uint32Field("TdmLBitPacketsTransmitted", CounterAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, false, false, 12),
+ 13: Uint32Field("Es", CounterAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, false, false, 13),
+ 14: Uint32Field("Ses", CounterAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, false, false, 14),
+ 15: Uint32Field("Uas", CounterAttributeType, 0x0002, 0, mapset.NewSetWith(Read), false, false, false, 15),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewPseudowirePerformanceMonitoringHistoryData (class ID 285) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewPseudowirePerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*pseudowireperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/pseudowireterminationpoint.go b/vendor/github.com/opencord/omci-lib-go/generated/pseudowireterminationpoint.go
new file mode 100644
index 0000000..f5406c9
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/pseudowireterminationpoint.go
@@ -0,0 +1,148 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// PseudowireTerminationPointClassID is the 16-bit ID for the OMCI
+// Managed entity Pseudowire termination point
+const PseudowireTerminationPointClassID ClassID = ClassID(282)
+
+var pseudowireterminationpointBME *ManagedEntityDefinition
+
+// PseudowireTerminationPoint (class ID #282)
+// The pseudowire TP supports packetized (rather than TDM) transport of TDM services, transported
+// either directly over Ethernet, over UDP/IP or over MPLS. Instances of this ME are created and
+// deleted by the OLT.
+//
+// Relationships
+// One pseudowire TP ME exists for each distinct TDM service that is mapped to a pseudowire.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Underlying Transport
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Service Type
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Signalling
+// (R,-W, setbycreate) (mandatory for structured service type) (1-byte)
+//
+// Tdm Uni Pointer
+// TDM UNI pointer: If service type-= structured, this attribute points to a logical N-* 64-kbit/s
+// subport CTP. Otherwise, this attribute points to a PPTP CES UNI. (R,-W, setbycreate) (mandatory)
+// (2-bytes)
+//
+// North_Side Pointer
+// North-side pointer: When the pseudowire service is transported via IP, as indicated by the
+// underlying transport attribute, the northside pointer attribute points to an instance of the
+// TCP/UDP config data ME. When the pseudowire service is transported directly over Ethernet, the
+// north-side pointer attribute is not used - the linkage to the Ethernet flow TP is implicit in
+// the ME IDs. When the pseudowire service is transported over MPLS, the northside pointer
+// attribute points to an instance of the MPLS PW TP. (R, W, setbycreate) (mandatory) (2 bytes)
+//
+// Far_End Ip Info
+// A null pointer is appropriate if the pseudowire is not transported via IP. (R,-W, setbycreate)
+// (mandatory for IP transport) (2-bytes)
+//
+// Payload Size
+// (R,-W, setbycreate) (mandatory for unstructured service) (2-bytes)
+//
+// Payload Encapsulation Delay
+// (R,-W, setbycreate) (mandatory for structured service) (1-byte)
+//
+// Timing Mode
+// (R,-W) (mandatory) (1-byte)
+//
+// Transmit Circuit Id
+// (R,-W) (mandatory for MEF 8 transport) (8-bytes)
+//
+// Expected Circuit Id
+// (R,-W) (optional for MEF 8 transport) (8-bytes)
+//
+// Received Circuit Id
+// Received circuit ID: This attribute indicates the actual ECID(s) received on the payload and
+// signalling channels, respectively. It may be used for diagnostic purposes. (R) (optional for MEF
+// 8 transport) (8-bytes)
+//
+// Exception Policy
+// Exception policy: This attribute points to an instance of the pseudowire maintenance profile ME.
+// If the pointer has its default value 0, the ONU's internal defaults apply. (R,-W) (optional)
+// (2-bytes)
+//
+// Arc
+// ARC: See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+// Arc Interval
+// ARC interval: See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+type PseudowireTerminationPoint struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ pseudowireterminationpointBME = &ManagedEntityDefinition{
+ Name: "PseudowireTerminationPoint",
+ ClassID: 282,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfffe,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("UnderlyingTransport", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: ByteField("ServiceType", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: ByteField("Signalling", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ 4: Uint16Field("TdmUniPointer", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ 5: Uint16Field("NorthSidePointer", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 5),
+ 6: Uint16Field("FarEndIpInfo", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 6),
+ 7: Uint16Field("PayloadSize", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 7),
+ 8: ByteField("PayloadEncapsulationDelay", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 8),
+ 9: ByteField("TimingMode", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, Write), false, false, false, 9),
+ 10: Uint64Field("TransmitCircuitId", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read, Write), false, false, false, 10),
+ 11: Uint64Field("ExpectedCircuitId", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read, Write), false, false, false, 11),
+ 12: Uint64Field("ReceivedCircuitId", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, false, false, 12),
+ 13: Uint16Field("ExceptionPolicy", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read, Write), false, true, false, 13),
+ 14: ByteField("Arc", UnsignedIntegerAttributeType, 0x0004, 0, mapset.NewSetWith(Read, Write), true, true, false, 14),
+ 15: ByteField("ArcInterval", UnsignedIntegerAttributeType, 0x0002, 0, mapset.NewSetWith(Read, Write), false, true, false, 15),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewPseudowireTerminationPoint (class ID 282) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewPseudowireTerminationPoint(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*pseudowireterminationpointBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/pwatmconfigurationdata.go b/vendor/github.com/opencord/omci-lib-go/generated/pwatmconfigurationdata.go
new file mode 100644
index 0000000..84fa584
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/pwatmconfigurationdata.go
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// PwAtmConfigurationDataClassID is the 16-bit ID for the OMCI
+// Managed entity PW ATM configuration data
+const PwAtmConfigurationDataClassID ClassID = ClassID(337)
+
+var pwatmconfigurationdataBME *ManagedEntityDefinition
+
+// PwAtmConfigurationData (class ID #337)
+// This ME contains generic configuration data for an ATM pseudowire. Definitions of attributes are
+// from PW-ATM-MIB [IETF RFC 5605]. Instances of this ME are created and deleted by the OLT.
+//
+// Relationships
+// An instance of this ME is associated with an instance of the MPLS pseudowire TP ME with a
+// pseudowire type attribute equal to one of the following.//// 2 ATM AAL5 SDU VCC transport//// 3 ATM transparent cell transport//// 9 ATM n-to-one VCC cell transport//// 10 ATM n-to-one VPC cell transport//// 12 ATM one-to-one VCC cell mode//// 13 ATM one-to-one VPC cell mode//// 14 ATM AAL5 PDU VCC transport//// Alternatively, an instance of this ME may be associated with an Ethernet flow TP or a TCP/UDP
+// config data ME, depending on the transport layer of the pseudowire.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. (R,
+// setbycreate)-(mandatory) (2 bytes)
+//
+// Tp Type
+// 2 TCP/UDP config data
+//
+// Transport Tp Pointer
+// Transport TP pointer: This attribute points to an associated instance of the transport layer TP,
+// whose type is specified by the TP type attribute. (R, W, setbycreate) (mandatory) (2 bytes)
+//
+// Pptp Atm Uni Pointer
+// PPTP ATM UNI pointer: This attribute points to an associated instance of the ITU-T G.983.2 PPTP
+// ATM UNI. Refer to [ITUT G.983.2] for the definition of the target ME. (R, W, setbycreate)
+// (mandatory) (2 bytes)
+//
+// Max C Ell C Oncatenation
+// Max cell concatenation: This attribute specifies the maximum number of ATM cells that can be
+// concatenated into one PW packet in the upstream direction. (R, W, setbycreate) (mandatory) (2
+// bytes)
+//
+// Far End M Ax C Ell C Oncatenation
+// Far-end max cell concatenation: This attribute specifies the maximum number of ATM cells that
+// can be concatenated into one PW packet as provisioned at the far end. This attribute may be used
+// for error checking of downstream traffic. The value 0 specifies that the ONU uses its internal
+// default. (R, W, set-by-create) (optional) (2 bytes)
+//
+// Atm Cell Loss Priority Clp Qos Mapping
+// The value 0 specifies that the ONU uses its internal default. (R, W, setbycreate) (optional) (1
+// byte)
+//
+// Timeout Mode
+// The value 0 specifies that the ONU uses its internal default. (R, W, setbycreate) (optional) (1
+// byte)
+//
+// Pw Atm Mapping Table
+// (R,-W) (mandatory) (21N bytes, where N is the number of entries in the list)
+//
+type PwAtmConfigurationData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ pwatmconfigurationdataBME = &ManagedEntityDefinition{
+ Name: "PwAtmConfigurationData",
+ ClassID: 337,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ GetNext,
+ Set,
+ ),
+ AllowedAttributeMask: 0xff00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("TpType", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: Uint16Field("TransportTpPointer", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint16Field("PptpAtmUniPointer", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ 4: Uint16Field("MaxCEllCOncatenation", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ 5: Uint16Field("FarEndMAxCEllCOncatenation", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 5),
+ 6: ByteField("AtmCellLossPriorityClpQosMapping", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 6),
+ 7: ByteField("TimeoutMode", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 7),
+ 8: TableField("PwAtmMappingTable", TableAttributeType, 0x0100, TableInfo{nil, 21}, mapset.NewSetWith(Read, Write), false, false, false, 8),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewPwAtmConfigurationData (class ID 337) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewPwAtmConfigurationData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*pwatmconfigurationdataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/pwatmperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/pwatmperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..c68a56c
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/pwatmperformancemonitoringhistorydata.go
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// PwAtmPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity PW ATM performance monitoring history data
+const PwAtmPerformanceMonitoringHistoryDataClassID ClassID = ClassID(338)
+
+var pwatmperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// PwAtmPerformanceMonitoringHistoryData (class ID #338)
+// This ME collects PM data associated with an ATM pseudowire. Instances of this ME are created and
+// deleted by the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an instance of the PW ATM configuration data ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to the instance of the PW ATM configuration data ME.
+// (R, setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 ME that
+// contains PM threshold values. Since no threshold value attribute number exceeds 7, a threshold
+// data 2 ME is optional. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Downstream Missing Packets Counter
+// Downstream missing packets counter: This attribute counts missing packets, as detected via
+// control word sequence number gaps. (R) (mandatory) (4-bytes)
+//
+// Downstream Reordered Packets Counter
+// Downstream reordered packets counter: This attribute counts packets detected out of sequence via
+// the control word sequence number, but successfully reordered. Some implementations may not
+// support this feature. (R) (optional) (4-bytes)
+//
+// Downstream Misordered Packets Counter
+// Downstream misordered packets counter: This attribute counts packets detected out of order via
+// the control word sequence numbers. (R) (mandatory) (4-bytes)
+//
+// Upstream Timeout Packets Counter
+// Upstream timeout packets counter: This attribute counts packets transmitted due to timeout
+// expiration while attempting to collect cells. (R) (mandatory) (4-bytes)
+//
+// Upstream Transmitted Cells Counter
+// Upstream transmitted cells counter: This attribute counts transmitted cells. (R) (mandatory)
+// (4-bytes)
+//
+// Upstream Dropped Cells Counter
+// Upstream dropped cells counter: This attribute counts dropped cells. (R) (mandatory) (4-bytes)
+//
+// Upstream Received Cells Counter
+// Upstream received cells counter: This attribute counts received cells. (R) (mandatory) (4-bytes)
+//
+type PwAtmPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ pwatmperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "PwAtmPerformanceMonitoringHistoryData",
+ ClassID: 338,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xff80,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("DownstreamMissingPacketsCounter", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("DownstreamReorderedPacketsCounter", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, true, false, 4),
+ 5: Uint32Field("DownstreamMisorderedPacketsCounter", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("UpstreamTimeoutPacketsCounter", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("UpstreamTransmittedCellsCounter", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint32Field("UpstreamDroppedCellsCounter", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: Uint32Field("UpstreamReceivedCellsCounter", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewPwAtmPerformanceMonitoringHistoryData (class ID 338) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewPwAtmPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*pwatmperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/pwethernetconfigurationdata.go b/vendor/github.com/opencord/omci-lib-go/generated/pwethernetconfigurationdata.go
new file mode 100644
index 0000000..187b195
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/pwethernetconfigurationdata.go
@@ -0,0 +1,90 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// PwEthernetConfigurationDataClassID is the 16-bit ID for the OMCI
+// Managed entity PW Ethernet configuration data
+const PwEthernetConfigurationDataClassID ClassID = ClassID(339)
+
+var pwethernetconfigurationdataBME *ManagedEntityDefinition
+
+// PwEthernetConfigurationData (class ID #339)
+// This ME contains the Ethernet pseudowire configuration data. Instances of this ME are created
+// and deleted by the OLT.
+//
+// Relationships
+// An instance of this ME is associated with an instance of the MPLS pseudowire TP ME with a
+// pseudowire type attribute equal to the following.//// 5 Ethernet
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. (R,
+// setbycreate)-(mandatory) (2 bytes)
+//
+// Mpls Pseudowire Tp Pointer
+// MPLS pseudowire TP pointer: This attribute points to an instance of the MPLS pseudowire TP ME
+// associated with this ME. (R, W, setbycreate) (mandatory) (2 bytes)
+//
+// Tp Type
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Uni Pointer
+// UNI pointer: This attribute points to the associated instance of a UNI-side ME. The type of UNI
+// is determined by the TP type attribute. (R, W, setbycreate) (mandatory) (2 bytes)
+//
+type PwEthernetConfigurationData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ pwethernetconfigurationdataBME = &ManagedEntityDefinition{
+ Name: "PwEthernetConfigurationData",
+ ClassID: 339,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xe000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("MplsPseudowireTpPointer", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: ByteField("TpType", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint16Field("UniPointer", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewPwEthernetConfigurationData (class ID 339) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewPwEthernetConfigurationData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*pwethernetconfigurationdataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/radiusperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/radiusperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..08953b6
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/radiusperformancemonitoringhistorydata.go
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// RadiusPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity Radius performance monitoring history data
+const RadiusPerformanceMonitoringHistoryDataClassID ClassID = ClassID(293)
+
+var radiusperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// RadiusPerformanceMonitoringHistoryData (class ID #293)
+// This ME collects performance statistics on an ONU's radius client, particularly as related to
+// its IEEE-802.1X operation.
+//
+// Instances of this ME are created and deleted by the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an ONU.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID (namely 0), this ME is implicitly linked to an instance of a dot1X configuration
+// profile. (R, setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 ME that
+// contains PM threshold values. Since no threshold value attribute number exceeds 7, a threshold
+// data 2 ME is optional. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Access_Request Packets Transmitted
+// Access-request packets transmitted: This attribute counts transmitted radius access-request
+// messages, including retransmissions. (R) (mandatory) (4-bytes)
+//
+// Access_Request Retransmission Count
+// Access-request retransmission count: This attribute counts radius access-request
+// retransmissions. (R) (mandatory) (4-bytes)
+//
+// Access_Challenge Packets Received
+// Access-challenge packets received: This attribute counts received radius access-challenge
+// messages. (R) (mandatory) (4-bytes)
+//
+// Access_Accept Packets Received
+// Access-accept packets received: This attribute counts received radius access-accept messages.
+// (R) (mandatory) (4-bytes)
+//
+// Access_Reject Packets Received
+// Access-reject packets received: This attribute counts received radius access-reject messages.
+// (R) (mandatory) (4-bytes)
+//
+// Invalid Radius Packets Received
+// Invalid radius packets received: This attribute counts received invalid radius messages. (R)
+// (mandatory) (4-bytes)
+//
+type RadiusPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ radiusperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "RadiusPerformanceMonitoringHistoryData",
+ ClassID: 293,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xff00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("AccessRequestPacketsTransmitted", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("AccessRequestRetransmissionCount", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("AccessChallengePacketsReceived", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("AccessAcceptPacketsReceived", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("AccessRejectPacketsReceived", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint32Field("InvalidRadiusPacketsReceived", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewRadiusPerformanceMonitoringHistoryData (class ID 293) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewRadiusPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*radiusperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/reani-g.go b/vendor/github.com/opencord/omci-lib-go/generated/reani-g.go
new file mode 100644
index 0000000..5142e5c
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/reani-g.go
@@ -0,0 +1,196 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// ReAniGClassID is the 16-bit ID for the OMCI
+// Managed entity RE ANI-G
+const ReAniGClassID ClassID = ClassID(313)
+
+var reanigBME *ManagedEntityDefinition
+
+// ReAniG (class ID #313)
+// This ME organizes data associated with each R'/S' physical interface of an RE if the RE supports
+// OEO regeneration in either direction. The management ONU automatically creates one instance of
+// this ME for each R'/S' physical port (uni- or bidirectional) as follows.
+//
+// o When the RE has mid-span PON RE ANI interface ports built into its factory configuration.
+//
+// o When a cardholder is provisioned to expect a circuit pack of the mid-span PON RE ANI type.
+//
+// o When a cardholder provisioned for plug-and-play is equipped with a circuit pack of the midspan
+// PON RE ANI type. Note that the installation of a plug-and-play card may indicate the presence of
+// a mid-span PON RE ANI port via equipment ID as well as its type attribute, and indeed may cause
+// the management ONU to instantiate a port-mapping package to specify the ports precisely.
+//
+// The management ONU automatically deletes instances of this ME when a cardholder is neither
+// provisioned to expect a mid-span PON RE ANI circuit pack, nor is it equipped with a mid-span PON
+// RE ANI circuit pack.
+//
+// As illustrated in Figure 8.2.10-4, an RE ANI-G may share the physical port with an RE downstream
+// amplifier. The ONU declares a shared configuration through the port-mapping package combined
+// port table, whose structure defines one ME as the master. It is recommended that the RE ANI-G be
+// the master, with the RE downstream amplifier as a secondary ME.
+//
+// The administrative state, operational state and ARC attributes of the master ME override similar
+// attributes in secondary MEs associated with the same port. In the secondary ME, these attributes
+// are present, but cause no action when written and have undefined values when read. The RE
+// downstream amplifier should use its provisionable downstream alarm thresholds and should declare
+// downstream alarms as necessary; other isomorphic alarms should be declared by the RE ANI-G. The
+// test action should be addressed to the master ME.
+//
+// Relationships
+// An instance of this ME is associated with each R'/S' physical interface of an RE that includes
+// OEO regeneration in either direction, and with one or more instances of the PPTP RE UNI. It may
+// also be associated with an RE downstream amplifier.
+//
+// Attributes
+// Managed Entity Id
+// NOTE 1 - This ME ID may be identical to that of an RE downstream amplifier if it shares the same
+// physical slot and port.
+//
+// Administrative State
+// NOTE 2 - When an RE supports multiple PONs, or protected access to a single PON, its primary
+// ANI-G cannot be completely shut down, due to a loss of the management communications capability.
+// Complete blocking of service and removal of power may nevertheless be appropriate for secondary
+// RE ANI-Gs. Administrative lock suppresses alarms and notifications for an RE ANI-G, be it either
+// primary or secondary.
+//
+// Operational State
+// Operational state: This attribute indicates whether the ME is capable of performing its
+// function. Valid values are enabled (0) and disabled (1). (R) (optional) (1-byte)
+//
+// Arc
+// ARC: See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+// Arc Interval
+// ARC interval: See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+// Optical Signal Level
+// Optical signal level: This attribute reports the current measurement of total downstream optical
+// power. Its value is a 2s complement integer referred to 1-mW (i.e., dBm), with 0.002-dB
+// granularity. (R) (optional) (2-bytes)
+//
+// Lower Optical Threshold
+// Lower optical threshold: This attribute specifies the optical level that the RE uses to declare
+// the downstream low received optical power alarm. Valid values are -127-dBm (coded as 254) to
+// 0-dBm (coded as 0) in 0.5-dB increments. The default value 0xFF selects the RE's internal
+// policy. (R,-W) (optional) (1-byte)
+//
+// Upper Optical Threshold
+// Upper optical threshold: This attribute specifies the optical level that the RE uses to declare
+// the downstream high received optical power alarm. Valid values are -127-dBm (coded as 254) to
+// 0-dBm (coded as 0) in 0.5 dB increments. The default value 0xFF selects the RE's internal
+// policy. (R,-W) (optional) (1-byte)
+//
+// Transmit Optical Level
+// Transmit optical level: This attribute reports the current measurement of mean optical launch
+// power. Its value is a 2s complement integer referred to 1-mW (i.e., dBm), with 0.002-dB
+// granularity. (R) (optional) (2-bytes)
+//
+// Lower Transmit Power Threshold
+// Lower transmit power threshold: This attribute specifies the minimum mean optical launch power
+// that the RE uses to declare the low transmit optical power alarm. Its value is a 2s-complement
+// integer referred to 1-mW (i.e., dBm), with 0.5-dB granularity. The default value 0x7F selects
+// the RE's internal policy. (R,-W) (optional) (1-byte)
+//
+// Upper Transmit Power Threshold
+// Upper transmit power threshold: This attribute specifies the maximum mean optical launch power
+// that the RE uses to declare the high transmit optical power alarm. Its value is a 2s-complement
+// integer referred to 1-mW (i.e., dBm), with 0.5-dB granularity. The default value 0x7F selects
+// the RE's internal policy. (R,-W) (optional) (1-byte)
+//
+// Usage Mode
+// 3 This R'/S' interface is used as the uplink for both the embedded management ONU and one or
+// more PPTP RE UNI(s) (in a time division fashion).
+//
+// Target Upstream Frequency
+// Target upstream frequency: This attribute specifies the frequency of the converted upstream
+// signal on the optical trunk line (OTL), in gigahertz. The converted frequency must conform to
+// the frequency plan specified in [ITUT G.984.6]. The value 0 means that the upstream signal
+// frequency remains the same as the original frequency; no frequency conversion is done. If the RE
+// does not support provisionable upstream frequency (wavelength), this attribute should take the
+// fixed value representing the RE's capability and the RE should deny attempts to set the value of
+// the attribute. If the RE does support provisionable upstream frequency conversion, the default
+// value of this attribute is 0. (R, W) (optional) (4 bytes).
+//
+// Target Downstream Frequency
+// Target downstream frequency: This attribute specifies the frequency of the downstream signal
+// received by the RE on the OTL, in gigahertz. The incoming frequency must conform to the
+// frequency plan specified in [ITUT G.984.6]. The default value 0 means that the downstream
+// frequency remains the same as its original frequency; no frequency conversion is done. If the RE
+// does not support provisionable downstream frequency selectivity, this attribute should take the
+// fixed value representing the RE's capability, and the RE should deny attempts to set the value
+// of the attribute. If the RE does support provisionable downstream frequency selectivity, the
+// default value of this attribute is 0. (R, W) (optional) (4 bytes).
+//
+// Upstream Signal Transmission Mode
+// Upstream signal transmission mode: When true, this Boolean attribute enables conversion from
+// burst mode to continuous mode. The default value false specifies burst mode upstream
+// transmission. If the RE does not have the ability to convert from burst to continuous mode
+// transmission, it should deny attempts to set this attribute to true. (R, W) (optional) (1 byte)
+//
+type ReAniG struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ reanigBME = &ManagedEntityDefinition{
+ Name: "ReAniG",
+ ClassID: 313,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfffc,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("AdministrativeState", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: ByteField("OperationalState", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read), true, true, false, 2),
+ 3: ByteField("Arc", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), true, true, false, 3),
+ 4: ByteField("ArcInterval", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, true, false, 4),
+ 5: Uint16Field("OpticalSignalLevel", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, true, false, 5),
+ 6: ByteField("LowerOpticalThreshold", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, Write), false, true, false, 6),
+ 7: ByteField("UpperOpticalThreshold", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, Write), false, true, false, 7),
+ 8: Uint16Field("TransmitOpticalLevel", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, true, false, 8),
+ 9: ByteField("LowerTransmitPowerThreshold", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, Write), false, true, false, 9),
+ 10: ByteField("UpperTransmitPowerThreshold", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read, Write), false, true, false, 10),
+ 11: ByteField("UsageMode", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read, Write), false, false, false, 11),
+ 12: Uint32Field("TargetUpstreamFrequency", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read, Write), false, true, false, 12),
+ 13: Uint32Field("TargetDownstreamFrequency", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read, Write), false, true, false, 13),
+ 14: ByteField("UpstreamSignalTransmissionMode", UnsignedIntegerAttributeType, 0x0004, 0, mapset.NewSetWith(Read, Write), false, true, false, 14),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewReAniG (class ID 313) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewReAniG(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*reanigBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/recommonamplifierparameters.go b/vendor/github.com/opencord/omci-lib-go/generated/recommonamplifierparameters.go
new file mode 100644
index 0000000..637a758
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/recommonamplifierparameters.go
@@ -0,0 +1,143 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// ReCommonAmplifierParametersClassID is the 16-bit ID for the OMCI
+// Managed entity RE common amplifier parameters
+const ReCommonAmplifierParametersClassID ClassID = ClassID(328)
+
+var recommonamplifierparametersBME *ManagedEntityDefinition
+
+// ReCommonAmplifierParameters (class ID #328)
+// This ME organizes data associated with each OA supported by the RE. The management ONU
+// automatically creates one instance of this ME for each upstream or downstream OA.
+//
+// Relationships
+// An instance of this ME is associated with an instance of the RE downstream amplifier or RE
+// upstream amplifier ME.
+//
+// Attributes
+// Managed Entity Id
+// NOTE - The type of the linked ME can be determined by uniqueness of slot and port.
+//
+// Gain
+// Gain: This attribute reports the current measurement of the OA's gain, in decibels. Its value is
+// a 2s complement integer with 0.25-dB granularity, and with a range from -32-dB to 31.5-dB. The
+// value 0x7F indicates that the current measured gain is 0, i.e., negative infinity in decibels
+// terms. (R) (optional) (1-byte)
+//
+// Lower Gain Threshold
+// Lower gain threshold: This attribute specifies the gain the RE uses to declare the low gain
+// alarm. Valid values are 0-dB (coded as 0x00) to 63.5-dB (coded as 0xFE). The default value 0xFF
+// selects the RE's internal policy. (R,-W) (optional) (1-byte)
+//
+// Upper Gain Threshold
+// Upper gain threshold: This attribute specifies the gain the RE uses to declare the high gain
+// alarm. Valid values are 0-dB (coded as 0x00) to 63.5-dB (coded as 0xFE). The default value 0xFF
+// selects the RE's internal policy. (R,-W) (optional) (1-byte)
+//
+// Target Gain
+// Target gain: This attribute specifies the target gain, when the operational mode of the parent
+// RE downstream or upstream amplifier is set to constant gain mode. Valid values are 0-dB (coded
+// as 0x00) to 63.5-dB (coded as 0xFE). The default value 0xFF selects the RE's internal policy.
+// (R,-W) (optional) (1-byte)
+//
+// Device Temperature
+// Device temperature: This attribute reports the temperature in degrees Celcius of the active
+// device (SOA or pump) in the OA. Its value is a 2s complement integer with granularity
+// 1/256-degree-C. (R) (optional) (2-bytes)
+//
+// Lower Device Temperature Threshold
+// Lower device temperature threshold: This attribute is a 2s complement integer that specifies the
+// temperature the RE uses to declare the low temperature alarm. Valid values are -64 to
+// +63-degree-C in 0.5-degree-C increments. The default value 0x7F selects the RE's internal
+// policy. (R,-W) (optional) (1-byte)
+//
+// Upper Device Temperature Threshold
+// Upper device temperature threshold: This attribute is a 2s complement integer that specifies the
+// temperature the RE uses to declare the high temperature alarm. Valid values are -64 to
+// +63-degree-C in 0.5-degree-C increments. The default value 0x7F selects the RE's internal
+// policy. (R,-W) (optional) (1-byte)
+//
+// Device Bias Current
+// Device bias current: This attribute contains the measured bias current applied to the SOA or
+// pump laser. Its value is an unsigned integer with granularity 2-mA. Valid values are 0 to
+// 512-mA. (R) (optional) (1-byte)
+//
+// Amplifier Saturation Output Power
+// Amplifier saturation output power: This attribute reports the saturation output power of the
+// amplifier as specified by the manufacturer. Its value is an unsigned integer referred to 1-mW
+// (i.e., dBm), with 0.1-dB granularity. (R) (optional) (2-bytes)
+//
+// Amplifier Noise Figure
+// Amplifier noise figure: This attribute reports the intrinsic noise figure of the amplifier, as
+// specified by the manufacturer. Its value is an unsigned integer with 0.1-dB granularity (R)
+// (optional) (1-byte)
+//
+// Amplifier Saturation Gain
+// Amplifier saturation gain: This attribute reports the gain of the amplifier at saturation, as
+// specified by the manufacturer. Its value is an unsigned integer with 0.25-dB granularity, and
+// with a range from 0 to 63.75-dB. (R) (optional) (1-byte)
+//
+type ReCommonAmplifierParameters struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ recommonamplifierparametersBME = &ManagedEntityDefinition{
+ Name: "ReCommonAmplifierParameters",
+ ClassID: 328,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffe0,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("Gain", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, true, false, 1),
+ 2: ByteField("LowerGainThreshold", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, Write), false, true, false, 2),
+ 3: ByteField("UpperGainThreshold", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), false, true, false, 3),
+ 4: ByteField("TargetGain", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, true, false, 4),
+ 5: Uint16Field("DeviceTemperature", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, true, false, 5),
+ 6: ByteField("LowerDeviceTemperatureThreshold", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, Write), false, true, false, 6),
+ 7: ByteField("UpperDeviceTemperatureThreshold", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, Write), false, true, false, 7),
+ 8: ByteField("DeviceBiasCurrent", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, true, false, 8),
+ 9: Uint16Field("AmplifierSaturationOutputPower", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, true, false, 9),
+ 10: ByteField("AmplifierNoiseFigure", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, true, false, 10),
+ 11: ByteField("AmplifierSaturationGain", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, true, false, 11),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewReCommonAmplifierParameters (class ID 328) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewReCommonAmplifierParameters(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*recommonamplifierparametersBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/redownstreamamplifier.go b/vendor/github.com/opencord/omci-lib-go/generated/redownstreamamplifier.go
new file mode 100644
index 0000000..59d758b
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/redownstreamamplifier.go
@@ -0,0 +1,166 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// ReDownstreamAmplifierClassID is the 16-bit ID for the OMCI
+// Managed entity RE downstream amplifier
+const ReDownstreamAmplifierClassID ClassID = ClassID(316)
+
+var redownstreamamplifierBME *ManagedEntityDefinition
+
+// ReDownstreamAmplifier (class ID #316)
+// This ME organizes data associated with each OA for downstream data supported by the RE. The
+// management ONU automatically creates one instance of this ME for each downstream OA as follows.
+//
+// o When the RE has mid-span PON RE downstream OA ports built into its factory configuration.
+//
+// o When a cardholder is provisioned to expect a circuit pack of the mid-span PON RE downstream OA
+// type.
+//
+// o When a cardholder provisioned for plug-and-play is equipped with a circuit pack of the midspan
+// PON RE downstream OA type. Note that the installation of a plug-and-play card may indicate the
+// presence of a mid-span PON RE downstream OA via equipment ID as well as its type attribute, and
+// indeed may cause the management ONU to instantiate a port-mapping package to specify the ports
+// precisely.
+//
+// The management ONU automatically deletes instances of this ME when a cardholder is neither
+// provisioned to expect a mid-span PON RE downstream OA circuit pack, nor is it equipped with a
+// mid-span PON RE downstream OA circuit pack.
+//
+// Relationships
+// An instance of this ME is associated with a downstream OA and with an instance of a circuit
+// pack. If the RE includes OEO regeneration in either direction, the RE downstream amplifier is
+// also associated with an RE ANI-G. Refer to clause-9.14.1 for further discussion.
+//
+// Attributes
+// Managed Entity Id
+// NOTE 1 - This ME ID may be identical to that of an RE ANI-G if it shares the same physical slot-
+// port.
+//
+// Administrative State
+// NOTE 2- When an RE supports multiple PONs, or protected access to a single PON, its primary
+// ANI-G cannot be completely shut down, due to a loss of the management communications capability.
+// Complete blocking of service and removal of power may nevertheless be appropriate for secondary
+// RE ANI-Gs. Administrative lock suppresses alarms and notifications for both primary and
+// secondary RE ANI-Gs. Administrative lock suppresses alarms and notifications for an RE
+// downstream amplifier, be it either primary or secondary.
+//
+// Operational State
+// Operational state: This attribute indicates whether the ME is capable of performing its
+// function. Valid values are enabled (0) and disabled (1). (R) (optional) (1-byte)
+//
+// Arc
+// ARC: See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+// Arc Interval
+// ARC interval: See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+// Operational Mode
+// (R,W) (mandatory) (1-byte)
+//
+// Input Optical Signal Level
+// Input optical signal level: This attribute reports the current measurement of the input optical
+// signal power of the downstream OA. Its value is a 2s-complement integer referred to 1-mW (i.e.,
+// dBm), with 0.002-dB granularity. (R) (optional) (2-bytes)
+//
+// Lower Input Optical Threshold
+// Lower input optical threshold: This attribute specifies the optical level the RE uses to declare
+// the low received optical power alarm. Valid values are -127-dBm (coded as 254) to 0-dBm (coded
+// as 0) in 0.5-dB increments. The default value 0xFF selects the RE's internal policy. (R,-W)
+// (optional) (1-byte)
+//
+// Upper Input Optical Threshold
+// Upper input optical threshold: This attribute specifies the optical level the RE uses to declare
+// the high received optical power alarm. Valid values are -127-dBm (coded as 254) to 0-dBm (coded
+// as 0) in 0.5-dB increments. The default value 0xFF selects the RE's internal policy. (R,-W)
+// (optional) (1-byte)
+//
+// Output Optical Signal Level
+// Output optical signal level: This attribute reports the current measurement of the mean optical
+// launch power of the downstream OA. Its value is a 2s-complement integer referred to 1-mW (i.e.,
+// dBm), with 0.002-dB granularity. (R) (optional) (2-bytes)
+//
+// Lower Output Optical Threshold
+// Lower output optical threshold: This attribute specifies the minimum mean optical launch power
+// that the RE uses to declare the low transmit optical power alarm. Its value is a 2s complement
+// integer referred to 1-mW (i.e., dBm), with 0.5-dB granularity. The default value 0x7F selects
+// the RE's internal policy. (R,-W) (optional) (1-byte)
+//
+// Upper Output Optical Threshold
+// Upper output optical threshold: This attribute specifies the maximum mean optical launch power
+// that the RE uses to declare the high transmit optical power alarm. Its value is a 2s complement
+// integer referred to 1-mW (i.e., dBm), with 0.5-dB granularity. The default value 0x7F selects
+// the RE's internal policy. (R,-W) (optional) (1-byte)
+//
+// R'S' Splitter Coupling Ratio
+// R'S' splitter coupling ratio: This attribute reports the coupling ratio of the splitter at the
+// R'/S' interface that connects the embedded management ONU and the amplifiers to the OTL. Valid
+// values are 99:1 (coded as 99-decimal) to 1:99 (coded as 1 decimal), where the first value is the
+// value encoded and is the percentage of the optical signal connected to the amplifier. The
+// default value 0xFF indicates that there is no splitter connected to this upstream/downstream
+// amplifier pair. (R) (optional) (1-byte)
+//
+type ReDownstreamAmplifier struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ redownstreamamplifierBME = &ManagedEntityDefinition{
+ Name: "ReDownstreamAmplifier",
+ ClassID: 316,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ Test,
+ ),
+ AllowedAttributeMask: 0xfff0,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("AdministrativeState", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: ByteField("OperationalState", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read), true, true, false, 2),
+ 3: ByteField("Arc", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), true, true, false, 3),
+ 4: ByteField("ArcInterval", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, true, false, 4),
+ 5: ByteField("OperationalMode", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, false, false, 5),
+ 6: Uint16Field("InputOpticalSignalLevel", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, true, false, 6),
+ 7: ByteField("LowerInputOpticalThreshold", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, Write), false, true, false, 7),
+ 8: ByteField("UpperInputOpticalThreshold", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, Write), false, true, false, 8),
+ 9: Uint16Field("OutputOpticalSignalLevel", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, true, false, 9),
+ 10: ByteField("LowerOutputOpticalThreshold", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read, Write), false, true, false, 10),
+ 11: ByteField("UpperOutputOpticalThreshold", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read, Write), false, true, false, 11),
+ 12: ByteField("R'S'SplitterCouplingRatio", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, true, false, 12),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewReDownstreamAmplifier (class ID 316) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewReDownstreamAmplifier(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*redownstreamamplifierBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/reupstreamamplifier.go b/vendor/github.com/opencord/omci-lib-go/generated/reupstreamamplifier.go
new file mode 100644
index 0000000..0f81c6a
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/reupstreamamplifier.go
@@ -0,0 +1,174 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// ReUpstreamAmplifierClassID is the 16-bit ID for the OMCI
+// Managed entity RE upstream amplifier
+const ReUpstreamAmplifierClassID ClassID = ClassID(315)
+
+var reupstreamamplifierBME *ManagedEntityDefinition
+
+// ReUpstreamAmplifier (class ID #315)
+// This ME organizes data associated with each upstream RE optical amplifier (OA) supported by the
+// RE. The management ONU automatically creates one instance of this ME for each upstream OA as
+// follows.
+//
+// o When the RE has mid-span PON RE upstream OA ports built into its factory configuration.
+//
+// o When a cardholder is provisioned to expect a circuit pack of the mid-span PON RE upstream OA
+// type.
+//
+// o When a cardholder provisioned for plug-and-play is equipped with a circuit pack of the mid-
+// span PON RE upstream OA type. Note that the installation of a plug-and-play card may indicate
+// the presence of a mid-span PON RE upstream OA via equipment ID as well as its type attribute,
+// and indeed may cause the management ONU to instantiate a port-mapping package to specify the
+// ports precisely.
+//
+// The management ONU automatically deletes instances of this ME when a cardholder is neither
+// provisioned to expect a mid-span PON RE upstream OA circuit pack, nor is it equipped with a mid-
+// span PON RE upstream OA circuit pack.
+//
+// Relationships
+// An instance of this ME is associated with an upstream OA, and with an instance of a circuit
+// pack. If the RE includes OEO regeneration in either direction, the RE upstream amplifier is also
+// associated with a PPTP RE UNI. Refer to clause-9.14.2 for further discussion.
+//
+// Attributes
+// Managed Entity Id
+// NOTE 1 - This ME ID may be identical to that of a PPTP RE UNI if it shares the same physical
+// slot and port.
+//
+// Administrative State
+// NOTE 2 - Administrative lock of an RE upstream amplifier results in LOS from any downstream
+// ONUs.
+//
+// Operational State
+// Operational state: This attribute indicates whether the ME is capable of performing its
+// function. Valid values are enabled (0) and disabled (1). (R) (optional) (1-byte)
+//
+// Operational Mode
+// (R,-W) (mandatory) (1-byte)
+//
+// Arc
+// ARC: See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+// Arc Interval
+// ARC interval: See clause A.1.4.3. (R,-W) (optional) (1-byte)
+//
+// Re Downstream Amplifier Pointer
+// RE downstream amplifier pointer: This attribute points to an RE downstream amplifier instance.
+// The default value is 0xFFFF, a null pointer. (R,-W) (mandatory) (2-bytes)
+//
+// Total Optical Receive Signal Level Table
+// Total optical receive signal level table: This table attribute reports a series of measurements
+// of time-averaged input upstream optical signal power. The measurement circuit should have a
+// temporal response similar to a simple 1 pole low pass filter, with an effective time constant on
+// the order of a GTC frame time. Each table entry has a 2-byte frame counter field (most
+// significant end), and a 2-byte power measurement field. The frame counter field contains the
+// least significant 16-bits of the superframe counter received closest to the time of the
+// measurement. The power measurement field is a 2s-complement integer referred to 1-mW (i.e.,
+// dBm), with 0.002-dB granularity. The RE equipment should add entries to this table as frequently
+// as is reasonable. The RE should clear the table once it is read by the OLT. (R) (optional) (4-*
+// N-bytes, where N is the number of measurements present.)
+//
+// Per Burst Receive Signal Level Table
+// Per burst receive signal level table: This table attribute reports the most recent measurement
+// of received burst upstream optical signal power. Each table entry has a 2-byte ONU-ID field
+// (most significant end), and a 2-byte power measurement field. The power measurement field is a
+// 2s-complement integer referred to 1-mW (i.e.,-dBm), with 0.002-dB granularity. (R) (optional)
+// (4-* N-bytes, where N is the number of distinct ONUs connected to the S'/R' interface.)
+//
+// Lower Receive Optical Threshold
+// Lower receive optical threshold: This attribute specifies the optical level that the RE uses to
+// declare the low received optical power alarm. Valid values are -127-dBm (coded as 254) to 0-dBm
+// (coded as 0) in 0.5-dB increments. The default value 0xFF selects the RE's internal policy.
+// (R,-W) (optional) (1-byte)
+//
+// Upper Receive Optical Threshold
+// Upper receive optical threshold: This attribute specifies the optical level that the RE uses to
+// declare the high received optical power alarm. Valid values are -127-dBm (coded as 254) to 0-dBm
+// (coded as 0) in 0.5-dB increments. The default value 0xFF selects the RE's internal policy.
+// (R,-W) (optional) (1-byte)
+//
+// Transmit Optical Signal Level
+// Transmit optical signal level: This attribute reports the current measurement of the mean
+// optical launch power of the upstream OA. Its value is a 2s-complement integer referred to 1-mW
+// (i.e., dBm), with 0.002-dB granularity. (R) (optional) (2-bytes)
+//
+// Lower Transmit Optical Threshold
+// Lower transmit optical threshold: This attribute specifies the minimum mean optical launch power
+// that the RE uses to declare the low transmit optical power alarm. Its value is a 2s-complement
+// integer referred to 1-mW (i.e., dBm), with 0.5-dB granularity. The default value 0x7F selects
+// the RE's internal policy. (R,-W) (optional) (1-byte)
+//
+// Upper Transmit Optical Threshold
+// Upper transmit optical threshold: This attribute specifies the maximum mean optical launch power
+// that the RE uses to declare the high transmit optical power alarm. Its value is a 2s complement
+// integer referred to 1-mW (i.e., dBm), with 0.5-dB granularity. The default value 0x7F selects
+// the RE's internal policy. (R,-W) (optional) (1-byte)
+//
+type ReUpstreamAmplifier struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ reupstreamamplifierBME = &ManagedEntityDefinition{
+ Name: "ReUpstreamAmplifier",
+ ClassID: 315,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ GetNext,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfff8,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("AdministrativeState", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: ByteField("OperationalState", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read), true, true, false, 2),
+ 3: ByteField("OperationalMode", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), false, false, false, 3),
+ 4: ByteField("Arc", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), true, true, false, 4),
+ 5: ByteField("ArcInterval", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, true, false, 5),
+ 6: Uint16Field("ReDownstreamAmplifierPointer", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, Write), false, false, false, 6),
+ 7: TableField("TotalOpticalReceiveSignalLevelTable", TableAttributeType, 0x0200, TableInfo{nil, 4}, mapset.NewSetWith(Read), false, true, false, 7),
+ 8: TableField("PerBurstReceiveSignalLevelTable", TableAttributeType, 0x0100, TableInfo{nil, 4}, mapset.NewSetWith(Read), false, true, false, 8),
+ 9: ByteField("LowerReceiveOpticalThreshold", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, Write), false, true, false, 9),
+ 10: ByteField("UpperReceiveOpticalThreshold", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read, Write), false, true, false, 10),
+ 11: Uint16Field("TransmitOpticalSignalLevel", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, true, false, 11),
+ 12: ByteField("LowerTransmitOpticalThreshold", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read, Write), false, true, false, 12),
+ 13: ByteField("UpperTransmitOpticalThreshold", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read, Write), false, true, false, 13),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewReUpstreamAmplifier (class ID 315) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewReUpstreamAmplifier(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*reupstreamamplifierBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/rtpperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/rtpperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..9fb4891
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/rtpperformancemonitoringhistorydata.go
@@ -0,0 +1,127 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// RtpPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity RTP performance monitoring history data
+const RtpPerformanceMonitoringHistoryDataClassID ClassID = ClassID(144)
+
+var rtpperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// RtpPerformanceMonitoringHistoryData (class ID #144)
+// This ME collects PM data related to an RTP session. Instances of this ME are created and deleted
+// by the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an instance of the PPTP POTS UNI ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the PPTP POTS UNI ME. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 ME that
+// contains PM threshold values. Since no threshold value attribute number exceeds 7, a threshold
+// data 2 ME is optional. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Rtp Errors
+// RTP errors: This attribute counts RTP packet errors. (R) (mandatory) (4-bytes)
+//
+// Packet Loss
+// Packet loss: This attribute represents the fraction of packets lost. This attribute is
+// calculated at the end of the 15-min interval, and is undefined under the get current data
+// action. The value 0 indicates no packet loss, scaling linearly to 0xFFFF FFFF to indicate 100%
+// packet loss (zero divided by zero is defined to be zero). (R) (mandatory) (4-bytes)
+//
+// Maximum Jitter
+// Maximum jitter: This attribute is a high water-mark that represents the maximum jitter
+// identified during the measured interval, expressed in RTP timestamp units. (R) (mandatory)
+// (4-bytes)
+//
+// Maximum Time Between Real_Time Transport Control Protocol Rtcp Packets
+// Maximum time between real-time transport control protocol (RTCP) packets: This attribute is a
+// high water-mark that represents the maximum time between RTCP packets during the measured
+// interval, in milliseconds. (R) (mandatory) (4-bytes)
+//
+// Buffer Underflows
+// Buffer underflows: This attribute counts the number of times the reassembly buffer underflows.
+// In the case of continuous underflow caused by a loss of IP packets, a single buffer underflow
+// should be counted. If the IW function is implemented with multiple buffers, such as a packet
+// level buffer and a bit level buffer, then the underflow of either buffer increments this
+// counter. (R) (mandatory) (4-bytes)
+//
+// Buffer Overflows
+// Buffer overflows: This attribute counts the number of times the reassembly buffer overflows. If
+// the IW function is implemented with multiple buffers, such as a packet level buffer and a bit
+// level buffer, then the overflow of either buffer increments this counter. (R) (mandatory)
+// (4-bytes)
+//
+type RtpPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ rtpperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "RtpPerformanceMonitoringHistoryData",
+ ClassID: 144,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xff00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("RtpErrors", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("PacketLoss", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("MaximumJitter", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("MaximumTimeBetweenRealTimeTransportControlProtocolRtcpPackets", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("BufferUnderflows", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint32Field("BufferOverflows", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewRtpPerformanceMonitoringHistoryData (class ID 144) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewRtpPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*rtpperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/rtpprofiledata.go b/vendor/github.com/opencord/omci-lib-go/generated/rtpprofiledata.go
new file mode 100644
index 0000000..6d1330e
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/rtpprofiledata.go
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// RtpProfileDataClassID is the 16-bit ID for the OMCI
+// Managed entity RTP profile data
+const RtpProfileDataClassID ClassID = ClassID(143)
+
+var rtpprofiledataBME *ManagedEntityDefinition
+
+// RtpProfileData (class ID #143)
+// This ME configures RTP. It is conditionally required for ONUs that offer VoIP service. If a non-
+// OMCI interface is used to manage VoIP, this ME is unnecessary.
+//
+// An instance of this ME is created and deleted by the OLT. An RTP profile is needed for each
+// unique set of attributes.
+//
+// Relationships
+// An instance of this ME may be associated with one or more VoIP media profile MEs.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Local Port Min
+// Local port min: This attribute defines the base UDP port that should be used by RTP for voice
+// traffic. The recommended default is 50000 (R,-W, set-by-create) (mandatory) (2-bytes)
+//
+// Local Port Max
+// Local port max: This attribute defines the highest UDP port used by RTP for voice traffic. The
+// value must be greater than the local port minimum. The value 0 specifies that the local port
+// maximum be equal to the local port minimum. (R,-W, set-by-create) (optional) (2-bytes)
+//
+// Dscp Mark
+// DSCP mark: Diffserv code point to be used for outgoing RTP packets for this profile. The
+// recommended default value is expedited forwarding (EF)-= 0x2E. (R,-W, setbycreate) (mandatory)
+// (1-byte)
+//
+// Piggyback Events
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Tone Events
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Dtmf Events
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Cas Events
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Ip Host Config Pointer
+// IP host config pointer: This optional pointer associates the bearer (voice) flow with an IP host
+// config data or IPv6 host config data ME. If this attribute is not present or is not populated
+// with a valid pointer value, the bearer flow uses the same IP stack that is used for signalling,
+// indicated by the TCP/UDP pointer in the associated SIP agent or MGC config data. The default
+// value is 0xFFFF, a null pointer. (R,-W) (optional) (2-bytes)
+//
+type RtpProfileData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ rtpprofiledataBME = &ManagedEntityDefinition{
+ Name: "RtpProfileData",
+ ClassID: 143,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xff00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("LocalPortMin", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: Uint16Field("LocalPortMax", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 2),
+ 3: ByteField("DscpMark", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ 4: ByteField("PiggybackEvents", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ 5: ByteField("ToneEvents", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 5),
+ 6: ByteField("DtmfEvents", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 6),
+ 7: ByteField("CasEvents", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 7),
+ 8: Uint16Field("IpHostConfigPointer", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, Write), false, true, false, 8),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewRtpProfileData (class ID 143) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewRtpProfileData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*rtpprofiledataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/rtppseudowireparameters.go b/vendor/github.com/opencord/omci-lib-go/generated/rtppseudowireparameters.go
new file mode 100644
index 0000000..e089f91
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/rtppseudowireparameters.go
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// RtpPseudowireParametersClassID is the 16-bit ID for the OMCI
+// Managed entity RTP pseudowire parameters
+const RtpPseudowireParametersClassID ClassID = ClassID(283)
+
+var rtppseudowireparametersBME *ManagedEntityDefinition
+
+// RtpPseudowireParameters (class ID #283)
+// If a pseudowire service uses RTP, the RTP pseudowire parameters ME provides configuration
+// information for the RTP layer. Instances of this ME are created and deleted by the OLT. The use
+// of RTP on a pseudowire is optional, and is determined by the existence of the RTP pseudowire
+// parameters ME.
+//
+// Relationships
+// An instance of the RTP pseudowire parameters ME may exist for each pseudowire TP ME, to which it
+// is implicitly bound by a common ME ID.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the pseudowire TP ME. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Clock Reference
+// Clock reference: This attribute specifies the frequency of the common timing reference, in
+// multiples of 8 kHz. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Rtp Timestamp Mode
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Ptype
+// PTYPE: This attribute specifies the RTP payload type in the TDM to the PSN direction. It
+// comprises two 1-byte values. The first is for the payload channel, the second, for the optional
+// separate signalling channel. Assignable PTYPEs lie in the dynamic range 96..127. If signalling
+// is not transported in its own channel, the second value should be set to 0. (R,-W, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Ssrc
+// SSRC: This attribute specifies the RTP synchronization source in the TDM to the PSN direction.
+// It comprises two 4-byte values. The first is for the payload channel, the second, for the
+// optional separate signalling channel. If signalling is not transported in its own channel, the
+// second value should be set to 0. (R,-W, setbycreate) (mandatory) (8-bytes)
+//
+// Expected Ptype
+// Expected PTYPE: This attribute specifies the RTP payload type in the PSN to the TDM direction.
+// The received payload type may be used to detect malformed packets. It comprises two 1-byte
+// values. The first is for the payload channel, the second, for the optional separate signalling
+// channel. To disable either or both of the check functions, set the corresponding value to its
+// default value 0. (R,-W, setbycreate) (optional) (2-bytes)
+//
+// Expected Ssrc
+// Expected SSRC: This attribute specifies the RTP synchronization source in the PSN to the TDM
+// direction. The received SSRC may be used to detect misconnection (stray packets). It comprises
+// two 4-byte values. The first is for the payload channel, the second, for the optional separate
+// signalling channel. To disable either or both of the check functions, set the corresponding
+// value to its default value 0. (R,-W, setbycreate) (optional) (8-bytes)
+//
+type RtpPseudowireParameters struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ rtppseudowireparametersBME = &ManagedEntityDefinition{
+ Name: "RtpPseudowireParameters",
+ ClassID: 283,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfc00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("ClockReference", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: ByteField("RtpTimestampMode", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint16Field("Ptype", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ 4: Uint64Field("Ssrc", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ 5: Uint16Field("ExpectedPtype", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 5),
+ 6: Uint64Field("ExpectedSsrc", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 6),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewRtpPseudowireParameters (class ID 283) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewRtpPseudowireParameters(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*rtppseudowireparametersBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/sipagentconfigdata.go b/vendor/github.com/opencord/omci-lib-go/generated/sipagentconfigdata.go
new file mode 100644
index 0000000..f6dedcb
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/sipagentconfigdata.go
@@ -0,0 +1,180 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// SipAgentConfigDataClassID is the 16-bit ID for the OMCI
+// Managed entity SIP agent config data
+const SipAgentConfigDataClassID ClassID = ClassID(150)
+
+var sipagentconfigdataBME *ManagedEntityDefinition
+
+// SipAgentConfigData (class ID #150)
+// The SIP agent config data ME models a SIP signalling agent. It defines the configuration
+// necessary to establish communication for signalling between the SIP user agent (UA) and a SIP
+// server.
+//
+// NOTE 1 - If a non-OMCI interface is used to manage SIP for VoIP, this ME is unnecessary. The
+// non-OMCI interface supplies the necessary data, which may be read back to the OLT via the SIP
+// config portal ME.
+//
+// Instances of this ME are created and deleted by the OLT.
+//
+// Relationships
+// An instance of this ME serves one or more SIP user data MEs and points to a TCP/UDP config data
+// that carries signalling messages. Other pointers establish additional agent parameters such as
+// proxy servers.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Proxy Server Address Pointer
+// Proxy server address pointer: This attribute points to a large string ME that contains the name
+// (IP address or URI) of the SIP proxy server for SIP signalling messages. (R,-W, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Outbound Proxy Address Pointer
+// Outbound proxy address pointer: An outbound SIP proxy may or may not be required within a given
+// network. If an outbound SIP proxy is used, the outbound proxy address pointer attribute must be
+// set to point to a valid large string ME that contains the name (IP address or URI) of the
+// outbound proxy server for SIP signalling messages. If an outbound SIP proxy is not used, the
+// outbound proxy address pointer attribute must be set to a null pointer. (R,-W, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Primary Sip Dns
+// Primary SIP DNS: This attribute specifies the primary SIP DNS IP address. If the value of this
+// attribute is 0, the primary DNS server is defined in the corresponding IP host config data or
+// IPv6 host config data ME. If the value is non-zero, it takes precedence over the primary DNS
+// server defined in the IP host config data or IPv6 host config data ME. (R,-W, set-by-create)
+// (mandatory) (4-bytes)
+//
+// Secondary Sip Dns
+// Secondary SIP DNS: This attribute specifies the secondary SIP DNS IP address. If the value of
+// this attribute is 0, the secondary DNS server is defined in the corresponding IP host config
+// data or IPv6 host config data ME. If the value is non-zero, it takes precedence over the
+// secondary DNS server defined in the IP host config data or IPv6 host config data ME. (R,-W, set-
+// by-create) (mandatory) (4-bytes)
+//
+// Tcp_Udp Pointer
+// TCP/UDP pointer: This pointer associates the SIP agent with the TCP/UDP config data ME to be
+// used for communication with the SIP server. The default value is 0xFFFF, a null pointer. (R,-W)
+// (mandatory) (2-bytes)
+//
+// Sip Reg Exp Time
+// SIP reg exp time: This attribute specifies the SIP registration expiration time in seconds. If
+// its value is 0, the SIP agent does not add an expiration time to the registration requests and
+// does not perform reregistration. The default value is 3600-s. (R,-W) (mandatory) (4-bytes)
+//
+// Sip Rereg Head Start Time
+// SIP rereg head start time: This attribute specifies the time in seconds prior to timeout that
+// causes the SIP agent to start the re-registration process. The default value is 360-s. (R,-W)
+// (mandatory) (4-bytes)
+//
+// Host Part Uri
+// Host part URI: This attribute points to a large string ME that contains the host or domain part
+// of the SIP address of record for users connected to this ONU. A null pointer indicates that the
+// current address in the IP host config ME is to be used. (R,-W, setbycreate) (mandatory)
+// (2-bytes)
+//
+// Sip Status
+// (R) (mandatory) (1-byte)
+//
+// Sip Registrar
+// SIP registrar: This attribute points to a network address ME that contains the name (IP address
+// or resolved name) of the registrar server for SIP signalling messages. Examples: "10.10.10.10"
+// and "proxy.voip.net". (R,-W, set-by-create) (mandatory) (2-bytes)
+//
+// Softswitch
+// Softswitch: This attribute identifies the SIP gateway softswitch vendor. The format is four
+// ASCII coded alphabetic characters [A..Z] as defined in [ATIS0300220]. A value of four null bytes
+// indicates an unknown or unspecified vendor. (R,-W, setbycreate) (mandatory) (4-bytes)
+//
+// Sip Response Table
+// NOTE 2 - This model assumes that SIP response tones and text are common to all POTS lines that
+// share a given SIP agent.
+//
+// Sip Option Transmit Control
+// SIP option transmit control: This Boolean attribute specifies that the ONU is (true) or is not
+// (false) enabled to transmit SIP options. The default value is recommended to be false. (R, W,
+// setbycreate) (optional) (1 byte)
+//
+// Sip Uri Format
+// SIP URI format: This attribute specifies the format of the URI in outgoing SIP messages. The
+// recommended default value 0 specifies TEL URIs; the value 1 specifies SIP URIs. Other values are
+// reserved. (R, W, setbycreate) (optional) (1 byte)
+//
+// Redundant Sip Agent Pointer
+// Redundant SIP agent pointer: This attribute points to another SIP agent config data ME, which is
+// understood to provide redundancy. The initial SIP agent is determined by the pointer from the
+// SIP user data ME. It is the manager's responsibility to provision a group of redundant SIP
+// agents with mutually consistent attributes. (R, W, setbycreate) (optional) (2 bytes)
+//
+type SipAgentConfigData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ sipagentconfigdataBME = &ManagedEntityDefinition{
+ Name: "SipAgentConfigData",
+ ClassID: 150,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfffe,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("ProxyServerAddressPointer", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: Uint16Field("OutboundProxyAddressPointer", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("PrimarySipDns", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ 4: Uint32Field("SecondarySipDns", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ 5: Uint16Field("TcpUdpPointer", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, false, false, 5),
+ 6: Uint32Field("SipRegExpTime", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, Write), false, false, false, 6),
+ 7: Uint32Field("SipReregHeadStartTime", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, Write), false, false, false, 7),
+ 8: Uint16Field("HostPartUri", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 8),
+ 9: ByteField("SipStatus", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read), true, false, false, 9),
+ 10: Uint16Field("SipRegistrar", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 10),
+ 11: Uint32Field("Softswitch", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 11),
+ 12: MultiByteField("SipResponseTable", OctetsAttributeType, 0x0010, 5, toOctets("AAAAAAA="), mapset.NewSetWith(Read, Write), false, true, false, 12),
+ 13: ByteField("SipOptionTransmitControl", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 13),
+ 14: ByteField("SipUriFormat", UnsignedIntegerAttributeType, 0x0004, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 14),
+ 15: Uint16Field("RedundantSipAgentPointer", UnsignedIntegerAttributeType, 0x0002, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 15),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewSipAgentConfigData (class ID 150) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewSipAgentConfigData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*sipagentconfigdataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/sipagentperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/sipagentperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..0759e1c
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/sipagentperformancemonitoringhistorydata.go
@@ -0,0 +1,154 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// SipAgentPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity SIP agent performance monitoring history data
+const SipAgentPerformanceMonitoringHistoryDataClassID ClassID = ClassID(151)
+
+var sipagentperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// SipAgentPerformanceMonitoringHistoryData (class ID #151)
+// This ME collects PM data for the associated VoIP SIP agent. Instances of this ME are created and
+// deleted by the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with a SIP agent config data or SIP config portal object.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the corresponding SIP agent config
+// data or to the SIP config portal. If a non-OMCI configuration method is used for VoIP, there can
+// be only one live ME instance, associated with the SIP config portal, and with ME ID 0. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 ME that
+// contains PM threshold values. Since no threshold value attribute number exceeds 7, a threshold
+// data 2 ME is optional. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Transactions
+// Transactions: This attribute counts the number of new transactions that were initiated. (R)
+// (optional) (4-bytes)
+//
+// Rx Invite Reqs
+// Rx invite reqs: This attribute counts received invite messages, including retransmissions. (R)
+// (optional) (4-bytes)
+//
+// Rx Invite Retrans
+// Rx invite retrans: This attribute counts received invite retransmission messages. (R) (optional)
+// (4-bytes)
+//
+// Rx Noninvite Reqs
+// Rx noninvite reqs: This attribute counts received non-invite messages, including
+// retransmissions. (R) (optional) (4-bytes)
+//
+// Rx Noninvite Retrans
+// Rx noninvite retrans: This attribute counts received non-invite retransmission messages. (R)
+// (optional) (4-bytes)
+//
+// Rx Response
+// Rx response: This attribute counts total responses received. (R) (optional) (4-bytes)
+//
+// Rx Response Retransmissions
+// Rx response retransmissions: This attribute counts total response retransmissions received. (R)
+// (optional) (4-bytes)
+//
+// Tx Invite Reqs
+// Tx invite reqs: This attribute counts transmitted invite messages, including retransmissions.
+// (R) (optional) (4-bytes)
+//
+// Tx Invite Retrans
+// Tx invite retrans: This attribute counts transmitted invite retransmission messages. (R)
+// (optional) (4-bytes)
+//
+// Tx Noninvite Reqs
+// Tx noninvite reqs: This attribute counts transmitted non-invite messages, including
+// retransmissions. (R) (optional) (4-bytes)
+//
+// Tx Noninvite Retrans
+// Tx noninvite retrans: This attribute counts transmitted non-invite retransmission messages. (R)
+// (optional) (4-bytes)
+//
+// Tx Response
+// Tx response: This attribute counts the total responses sent. (R) (optional) (4-bytes)
+//
+// Tx Response Retransmissions
+// Tx response retransmissions: This attribute counts total response retransmissions sent. (R)
+// (optional) (4-bytes)
+//
+type SipAgentPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ sipagentperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "SipAgentPerformanceMonitoringHistoryData",
+ ClassID: 151,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfffe,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("Transactions", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, true, false, 3),
+ 4: Uint32Field("RxInviteReqs", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, true, false, 4),
+ 5: Uint32Field("RxInviteRetrans", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, true, false, 5),
+ 6: Uint32Field("RxNoninviteReqs", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, true, false, 6),
+ 7: Uint32Field("RxNoninviteRetrans", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, true, false, 7),
+ 8: Uint32Field("RxResponse", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, true, false, 8),
+ 9: Uint32Field("RxResponseRetransmissions", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, true, false, 9),
+ 10: Uint32Field("TxInviteReqs", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, true, false, 10),
+ 11: Uint32Field("TxInviteRetrans", CounterAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, true, false, 11),
+ 12: Uint32Field("TxNoninviteReqs", CounterAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, true, false, 12),
+ 13: Uint32Field("TxNoninviteRetrans", CounterAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, true, false, 13),
+ 14: Uint32Field("TxResponse", CounterAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, true, false, 14),
+ 15: Uint32Field("TxResponseRetransmissions", CounterAttributeType, 0x0002, 0, mapset.NewSetWith(Read), false, true, false, 15),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewSipAgentPerformanceMonitoringHistoryData (class ID 151) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewSipAgentPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*sipagentperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/sipcallinitiationperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/sipcallinitiationperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..f1d3990
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/sipcallinitiationperformancemonitoringhistorydata.go
@@ -0,0 +1,117 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// SipCallInitiationPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity SIP call initiation performance monitoring history data
+const SipCallInitiationPerformanceMonitoringHistoryDataClassID ClassID = ClassID(152)
+
+var sipcallinitiationperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// SipCallInitiationPerformanceMonitoringHistoryData (class ID #152)
+// This ME collects PM data related to call initiations of a VoIP SIP agent. Instances of this ME
+// are created and deleted by the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an instance of the SIP agent config data or SIP config
+// portal ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the SIP agent config data or the
+// SIP config portal ME. If a nonOMCI configuration method is used for VoIP, there can be only one
+// live ME instance, associated with the SIP config portal, and with ME ID 0. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 ME that
+// contains PM threshold values. Since no threshold value attribute number exceeds 7, a threshold
+// data 2 ME is optional. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Failed To Connect Counter
+// Failed to connect counter: This attribute counts the number of times that the SIP UA failed to
+// reach/connect its TCP/UDP peer during SIP call initiations. (R) (mandatory) (4-bytes)
+//
+// Failed To Validate Counter
+// Failed to validate counter: This attribute counts the number of times that the SIP UA failed to
+// validate its peer during SIP call initiations. (R) (mandatory) (4-bytes)
+//
+// Timeout Counter
+// Timeout counter: This attribute counts the number of times that the SIP UA timed out during SIP
+// call initiations. (R) (mandatory) (4-bytes)
+//
+// Failure Received Counter
+// Failure received counter: This attribute counts the number of times that the SIP UA received a
+// failure error code during SIP call initiations. (R) (mandatory) (4-bytes)
+//
+// Failed To Authenticate Counter
+// Failed to authenticate counter: This attribute counts the number of times that the SIP UA failed
+// to authenticate itself during SIP call initiations. (R) (mandatory) (4-bytes)
+//
+type SipCallInitiationPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ sipcallinitiationperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "SipCallInitiationPerformanceMonitoringHistoryData",
+ ClassID: 152,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfe00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("FailedToConnectCounter", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("FailedToValidateCounter", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("TimeoutCounter", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("FailureReceivedCounter", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("FailedToAuthenticateCounter", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewSipCallInitiationPerformanceMonitoringHistoryData (class ID 152) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewSipCallInitiationPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*sipcallinitiationperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/sipuserdata.go b/vendor/github.com/opencord/omci-lib-go/generated/sipuserdata.go
new file mode 100644
index 0000000..d8ee85f
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/sipuserdata.go
@@ -0,0 +1,151 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// SipUserDataClassID is the 16-bit ID for the OMCI
+// Managed entity SIP user data
+const SipUserDataClassID ClassID = ClassID(153)
+
+var sipuserdataBME *ManagedEntityDefinition
+
+// SipUserData (class ID #153)
+// The SIP user data defines the user specific configuration attributes associated with a specific
+// VoIP CTP. This entity is conditionally required for ONUs that offer VoIP SIP services. If a non-
+// OMCI interface is used to manage SIP for VoIP, this ME is unnecessary. The non-OMCI interface
+// supplies the necessary data, which may be read back to the OLT via the SIP config portal ME.
+//
+// An instance of this ME is created and deleted by the OLT. A SIP user data instance is required
+// for each POTS UNI port using SIP protocol and configured by the OMCI.
+//
+// Relationships
+// An instance of this ME is associated with one VoIP voice CTP ME and a PPTP POTS UNI.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Sip Agent Pointer
+// SIP agent pointer: This attribute points to the SIP agent config data ME to be used for
+// signalling. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// User Part Aor
+// User part AOR: This attribute points to a large string that contains the user identification
+// part of the address of record. This can take the form of an alphanumeric string or the
+// subscriber's directory number. A null pointer indicates the absence of an AOR. (R,-W,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Sip Display Name
+// SIP display name: This ASCII string attribute defines the customer ID used for the display
+// attribute in outgoing SIP messages. The default value is null (all zero bytes) (R,-W)
+// (mandatory) (25-bytes)
+//
+// Username And Password
+// Username and password: This attribute points to an authentication security method ME that
+// contains the SIP user name and password used for authentication. A null pointer indicates no
+// username and password. (R,-W, setbycreate) (mandatory) (2)
+//
+// Voicemail Server Sip Uri
+// Voicemail server SIP URI: This attribute points to a network address ME that contains the name
+// (IP address or URI) of the SIP voicemail server for SIP signalling messages. A null pointer
+// indicates the absence of a SIP voicemail server. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Voicemail Subscription Expiration Time
+// Voicemail subscription expiration time: This attribute defines the voicemail subscription
+// expiration time in seconds. If this value is 0, the SIP agent uses an implementation-specific
+// value. This attribute is recommended to be set to 3600-s by default. (R,-W, setbycreate)
+// (mandatory) (4-bytes)
+//
+// Network Dial Plan Pointer
+// Network dial plan pointer: This attribute points to a network dial plan table. A null pointer
+// indicates the absence of a network dial plan. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Application Services Profile Pointer
+// Application services profile pointer: This attribute points to a VoIP application services
+// profile. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Feature Code Pointer
+// Feature code pointer: This attribute points to the VoIP feature access codes ME for this
+// subscriber. A null pointer indicates the absence of a VoIP feature access codes ME. (R,-W, set-
+// by-create) (mandatory) (2-bytes)
+//
+// Pptp Pointer
+// PPTP pointer: This attribute points to the PPTP POTS UNI ME that provides the analogue telephony
+// adaptor (ATA) function. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Release Timer
+// Release timer: This attribute contains a release timer defined in seconds. The value 0 specifies
+// that the ONU is to use its internal default. The default value of this attribute is 10-s. (R,-W)
+// (optional) (1-byte)
+//
+// Receiver Off Hook Roh Timer
+// Receiver off hook (ROH) timer: This attribute defines the time in seconds for the ROH condition
+// before ROH tone is applied. The value 0 disables ROH timing. The value 0xFF specifies that the
+// ONU is to use its internal default, which may or may not be the same as the 15-s OMCI default
+// value. (R,-W) (optional) (1-byte)
+//
+type SipUserData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ sipuserdataBME = &ManagedEntityDefinition{
+ Name: "SipUserData",
+ ClassID: 153,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfff0,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("SipAgentPointer", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: Uint16Field("UserPartAor", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: MultiByteField("SipDisplayName", OctetsAttributeType, 0x2000, 25, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read, Write), false, false, false, 3),
+ 4: Uint16Field("UsernameAndPassword", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ 5: Uint16Field("VoicemailServerSipUri", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 5),
+ 6: Uint32Field("VoicemailSubscriptionExpirationTime", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 6),
+ 7: Uint16Field("NetworkDialPlanPointer", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 7),
+ 8: Uint16Field("ApplicationServicesProfilePointer", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 8),
+ 9: Uint16Field("FeatureCodePointer", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 9),
+ 10: Uint16Field("PptpPointer", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 10),
+ 11: ByteField("ReleaseTimer", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read, Write), false, true, false, 11),
+ 12: ByteField("ReceiverOffHookRohTimer", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read, Write), false, true, false, 12),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewSipUserData (class ID 153) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewSipUserData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*sipuserdataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/snmpconfigurationdata.go b/vendor/github.com/opencord/omci-lib-go/generated/snmpconfigurationdata.go
new file mode 100644
index 0000000..2219b3e
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/snmpconfigurationdata.go
@@ -0,0 +1,118 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// SnmpConfigurationDataClassID is the 16-bit ID for the OMCI
+// Managed entity SNMP configuration data
+const SnmpConfigurationDataClassID ClassID = ClassID(335)
+
+var snmpconfigurationdataBME *ManagedEntityDefinition
+
+// SnmpConfigurationData (class ID #335)
+// The SNMP configuration data ME provides a way for the OLT to provision an IP path for an SNMP
+// management agent.
+//
+// The SNMP configuration data ME is created and deleted by the OLT.
+//
+// Relationships
+// One instance of this ME is created by the OLT for each SNMP management path termination.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. The ME IDs 0 and
+// 0xFFFF are reserved. (R, setbycreate) (mandatory) (2-bytes)
+//
+// Snmp Version
+// SNMP version: This integer attribute is the SNMP protocol version to be supported. (R,-W,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Snmp Agent Address
+// SNMP agent address: This attribute is a pointer to a TCP/UDP config data ME, which provides the
+// SNMP agent. (R, W, setbycreate) (mandatory) (2 bytes)
+//
+// Snmp Server Address
+// SNMP server address: This attribute is the IP address of the SNMP server. (R, W, setbycreate)
+// (mandatory) (4 bytes)
+//
+// Snmp Server Port
+// SNMP server port: This attribute is the UDP port number of the SNMP server. (R, W, setbycreate)
+// (mandatory) (2 bytes)
+//
+// Security Name Pointer
+// Security name pointer: This attribute points to a large string whose content represents the SNMP
+// security name in a human-readable format that is independent of the security model. SecurityName
+// is defined in [b-IETF RFC 2571]. (R, W, setbycreate) (mandatory) (2 bytes)
+//
+// Community For Read
+// Community for read: This attribute is a pointer to a large string that contains the name of the
+// read community. (R, W, setbycreate) (mandatory) (2 bytes)
+//
+// Community For Write
+// Community for write: This attribute is a pointer to a large string that contains the name of the
+// write community. (R, W, setbycreate) (mandatory) (2 bytes)
+//
+// Sys Name Pointer
+// Sys name pointer: This attribute points to a large string whose content identifies the SNMP
+// system name. SysName is defined in [b-IETF RFC-3418]. (R, W, setbycreate) (mandatory) (2 bytes)
+//
+type SnmpConfigurationData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ snmpconfigurationdataBME = &ManagedEntityDefinition{
+ Name: "SnmpConfigurationData",
+ ClassID: 335,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xff00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("SnmpVersion", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: Uint16Field("SnmpAgentAddress", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("SnmpServerAddress", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ 4: Uint16Field("SnmpServerPort", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ 5: Uint16Field("SecurityNamePointer", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 5),
+ 6: Uint16Field("CommunityForRead", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 6),
+ 7: Uint16Field("CommunityForWrite", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 7),
+ 8: Uint16Field("SysNamePointer", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 8),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewSnmpConfigurationData (class ID 335) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewSnmpConfigurationData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*snmpconfigurationdataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/softwareimage.go b/vendor/github.com/opencord/omci-lib-go/generated/softwareimage.go
new file mode 100644
index 0000000..27efb8f
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/softwareimage.go
@@ -0,0 +1,140 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// SoftwareImageClassID is the 16-bit ID for the OMCI
+// Managed entity Software image
+const SoftwareImageClassID ClassID = ClassID(7)
+
+var softwareimageBME *ManagedEntityDefinition
+
+// SoftwareImage (class ID #7)
+// This ME models an executable software image stored in the ONU (documented here as its
+// fundamental usage). It may also be used to represent an opaque vendor-specific file
+// (vendorspecific usage).
+//
+// Fundamental usage
+//
+// The ONU automatically creates two instances of this ME upon the creation of each ME that
+// contains independently manageable software, either the ONU itself or an individual circuit pack.
+// It populates ME attributes according to data within the ONU or the circuit pack.
+//
+// Some pluggable equipment may not contain software. Others may contain software that is
+// intrinsically bound to the ONU's own software image. No software image ME need exist for such
+// equipment, though it may be convenient for the ONU to create them to support software version
+// audit from the OLT. In this case, the dependent MEs would support only the get action.
+//
+// A slot may contain various equipment over its lifetime, and if software image MEs exist, the ONU
+// must automatically create and delete them as the equipped configuration changes. The identity of
+// the software image is tied to the cardholder.
+//
+// When an ONU controller packs are duplicated, each can be expected to contain two software image
+// MEs, managed through reference to the individual controller packs themselves. When this occurs,
+// the ONU should not have a global pair of software images MEs (instance 0), since an action
+// (download, activate, commit) directed to instance 0 would be ambiguous.
+//
+// Relationships
+// Two instances of the software image ME are associated with each instance of the ONU or
+// cardholder whose software is independently managed.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. The first byte
+// indicates the physical location of the equipment hosting the software image, either the ONU (0)
+// or a cardholder (1..254). The second byte distinguishes between the two software image ME
+// instances (0..1). (R) (mandatory) (2-bytes)
+//
+// Version
+// Version: This string attribute identifies the version of the software. (R) (mandatory)
+// (14-bytes)
+//
+// Is Committed
+// Is committed: This attribute indicates whether the associated software image is committed (1) or
+// uncommitted (0). By definition, the committed software image is loaded and executed upon reboot
+// of the ONU or circuit pack. During normal operation, one software image is always committed,
+// while the other is uncommitted. Under no circumstances are both software images allowed to be
+// committed at the same time. On the other hand, both software images could be uncommitted at the
+// same time if both were invalid. Upon ME instantiation, instance 0 is initialized to committed,
+// while instance 1 is initialized to uncommitted (i.e., the ONU ships from the factory with image
+// 0 committed). (R) (mandatory) (1-byte)
+//
+// Is Active
+// Is active: This attribute indicates whether the associated software image is active (1) or
+// inactive (0). By definition, the active software image is one that is currently loaded and
+// executing in the ONU or circuit pack. Under normal operation, one software image is always
+// active while the other is inactive. Under no circumstances are both software images allowed to
+// be active at the same time. On the other hand, both software images could be inactive at the
+// same time if both were invalid. (R) (mandatory) (1-byte)
+//
+// Is Valid
+// Is valid: This attribute indicates whether the associated software image is valid (1) or invalid
+// (0). By definition, a software image is valid if it has been verified to be an executable code
+// image. The verification mechanism is not subject to standardization; however, it should include
+// at least a data integrity check [e.g., a cyclic redundancy check (CRC)] of the entire code
+// image. Upon ME instantiation or software download completion, the ONU validates the associated
+// code image and sets this attribute according to the result. (R) (mandatory) (1-byte)
+//
+// Product Code
+// Product code: This attribute provides a way for a vendor to indicate product code information on
+// a file. It is a character string, padded with trailing nulls if it is shorter than 25 bytes. (R)
+// (optional) (25 bytes)
+//
+// Image Hash
+// Image hash: This attribute is an MD5 hash of the software image. It is computed at completion of
+// the end download action. (R) (optional) (16-bytes)
+//
+type SoftwareImage struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ softwareimageBME = &ManagedEntityDefinition{
+ Name: "SoftwareImage",
+ ClassID: 7,
+ MessageTypes: mapset.NewSetWith(
+ ActivateSoftware,
+ CommitSoftware,
+ DownloadSection,
+ EndSoftwareDownload,
+ Get,
+ StartSoftwareDownload,
+ ),
+ AllowedAttributeMask: 0xfc00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: MultiByteField("Version", StringAttributeType, 0x8000, 14, toOctets("ICAgICAgICAgICAgICA="), mapset.NewSetWith(Read), true, false, false, 1),
+ 2: ByteField("IsCommitted", EnumerationAttributeType, 0x4000, 0, mapset.NewSetWith(Read), true, false, false, 2),
+ 3: ByteField("IsActive", EnumerationAttributeType, 0x2000, 0, mapset.NewSetWith(Read), true, false, false, 3),
+ 4: ByteField("IsValid", EnumerationAttributeType, 0x1000, 0, mapset.NewSetWith(Read), true, false, false, 4),
+ 5: MultiByteField("ProductCode", OctetsAttributeType, 0x0800, 25, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read), true, true, false, 5),
+ 6: MultiByteField("ImageHash", StringAttributeType, 0x0400, 16, toOctets("AAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read), true, true, false, 6),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewSoftwareImage (class ID 7) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewSoftwareImage(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*softwareimageBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/t-cont.go b/vendor/github.com/opencord/omci-lib-go/generated/t-cont.go
new file mode 100644
index 0000000..61a26b4
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/t-cont.go
@@ -0,0 +1,114 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// TContClassID is the 16-bit ID for the OMCI
+// Managed entity T-CONT
+const TContClassID ClassID = ClassID(262)
+
+var tcontBME *ManagedEntityDefinition
+
+// TCont (class ID #262)
+// An instance of the traffic container ME T-CONT represents a logical connection group associated
+// with a G-PON PLOAM layer alloc-ID. A T-CONT can accommodate GEM packets in priority queues or
+// traffic schedulers that exist in the GEM layer.
+//
+// The ONU autonomously creates instances of this ME. The OLT can discover the number of TCONT
+// instances via the ANI-G ME. When the ONU's MIB is reset or created for the first time, all
+// supported T-CONTs are created. The OLT provisions alloc-IDs to the ONU via the PLOAM channel.
+// Via the OMCI, the OLT must then set the alloc-ID attributes in the T-CONTs that it wants to
+// activate for user traffic, to create the appropriate association with the allocation ID in the
+// PLOAM channel. There should be a one-to-one relationship between allocation IDs and T-CONT MEs;
+// the connection of multiple T-CONTs to a single allocation ID is undefined.
+//
+// The allocation ID that matches the ONU-ID itself is defined to be the default alloc-ID. This
+// allocID is used to carry the OMCC. The default alloc-ID can also be used to carry user traffic,
+// and hence can be assigned to one of the T-CONT MEs. However, this OMCI relationship only
+// pertains to user traffic, and the OMCC relationship is unaffected. It can also be true that the
+// OMCC is not contained in any T-CONT ME construct; rather, that the OMCC remains outside of the
+// OMCI, and that the OMCI is not used to manage the OMCC in any way. Multiplexing of the OMCC and
+// user data in GPON systems is discussed in clause B.2.4.
+//
+// Relationships
+// One or more instances of this ME are associated with an instance of a circuit pack that supports
+// a PON interface function, or with the ONU-G itself.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. This 2-byte
+// number indicates the physical capability that realizes the TCONT. It may be represented as
+// 0xSSBB, where SS indicates the slot ID that contains this T-CONT (0 for the ONU as a whole), and
+// BB is the TCONT ID, numbered by the ONU itself. T-CONTs are numbered in ascending order, with
+// the range 0..255 in each slot. (R) (mandatory) (2-bytes)
+//
+// Alloc_Id
+// Alloc-ID: This attribute links the T-CONT with the alloc-ID assigned by the OLT in the
+// assign_alloc-ID PLOAM message. The respective TC layer specification should be referenced for
+// the legal values for that system. Prior to the setting of this attribute by the OLT, this
+// attribute has an unambiguously unusable initial value, namely the value 0x00FF or 0xFFFF for
+// ITU-T G.984 systems, and the value 0xFFFF for all other ITU-T GTC based PON systems. (R,-W)
+// (mandatory) (2-bytes)
+//
+// Deprecated
+// Deprecated: The ONU should set this attribute to the value 1, and the OLT should ignore it. (R)
+// (mandatory) (1-byte)
+//
+// Policy
+// NOTE - This attribute is read-only, unless otherwise specified by the QoS configuration
+// flexibility attribute of the ONU2-G ME. If flexible configuration is not supported, the ONU
+// should reject an attempt to set it with a parameter error result-reason code.
+//
+type TCont struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ tcontBME = &ManagedEntityDefinition{
+ Name: "TCont",
+ ClassID: 262,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xe000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: Uint16Field("AllocId", UnsignedIntegerAttributeType, 0x8000, 65535, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: ByteField("Deprecated", UnsignedIntegerAttributeType, 0x4000, 1, mapset.NewSetWith(Read), false, false, true, 2),
+ 3: ByteField("Policy", EnumerationAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), false, false, false, 3),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewTCont (class ID 262) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewTCont(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*tcontBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/tcadaptorperformancemonitoringhistorydataxdsl.go b/vendor/github.com/opencord/omci-lib-go/generated/tcadaptorperformancemonitoringhistorydataxdsl.go
new file mode 100644
index 0000000..fc4e55a
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/tcadaptorperformancemonitoringhistorydataxdsl.go
@@ -0,0 +1,131 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// TcAdaptorPerformanceMonitoringHistoryDataXdslClassID is the 16-bit ID for the OMCI
+// Managed entity TC adaptor performance monitoring history data xDSL
+const TcAdaptorPerformanceMonitoringHistoryDataXdslClassID ClassID = ClassID(116)
+
+var tcadaptorperformancemonitoringhistorydataxdslBME *ManagedEntityDefinition
+
+// TcAdaptorPerformanceMonitoringHistoryDataXdsl (class ID #116)
+// This ME collects PM data of an xTUC to xTUR ATM data path. Instances of this ME are created and
+// deleted by the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an xDSL UNI.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the PPTP xDSL UNI part 1. (R)
+// (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data1/2 ID: This attribute points to an instance of the threshold data1 ME that
+// contains PM threshold values. Since no threshold value attribute number exceeds 7, a threshold
+// data 2 ME is optional. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Near_End Hec Violation Count
+// Near-end HEC violation count: This attribute counts near-end HEC anomalies in the ATM data path.
+// (R) (mandatory) (2-bytes)
+//
+// Near_End Delineated Total Cell Count Cd P
+// Near-end delineated total cell count (CDP): This attribute counts the total number of cells
+// passed through the cell delineation and HEC function process operating on the ATM data path
+// while in the SYNC state. (R) (mandatory) (4-bytes)
+//
+// Near_End User Total Cell Count Cu_P
+// Near-end user total cell count(CU-P): This attribute counts the total number of cells in the ATM
+// data path delivered at the V-C interface. (R) (mandatory) (4-bytes)
+//
+// Near_End Idle Cell Bit Error Count
+// Near-end idle cell bit error count: This attribute counts cells with bit errors in the ATM data
+// path idle payload received at the near end. (R) (mandatory) (2-bytes)
+//
+// Far_End Hec Violation Count
+// Far-end HEC violation count: This attribute counts far-end HEC anomalies in the ATM data path.
+// (R) (mandatory) (2-bytes)
+//
+// Far_End Delineated Total Cell Count Cd_Pfe
+// Far-end delineated total cell count (CD-PFE): This attribute counts the total number of cells
+// passed through the cell delineation process and HEC function operating on the ATM data path
+// while in the SYNC state. (R) (mandatory) (4-bytes)
+//
+// Far_End User Total Cell Count Cu_Pfe
+// Far-end user total cell count (CU-PFE): This attribute counts the total number of cells in the
+// ATM data path delivered at the T-R interface. (R) (mandatory) (4-bytes)
+//
+// Far_End Idle Cell Bit Error Count
+// Far-end idle cell bit error count: This attribute counts cells with bit errors in the ATM data
+// path idle payload received at the far end. (R) (mandatory) (2-bytes)
+//
+type TcAdaptorPerformanceMonitoringHistoryDataXdsl struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ tcadaptorperformancemonitoringhistorydataxdslBME = &ManagedEntityDefinition{
+ Name: "TcAdaptorPerformanceMonitoringHistoryDataXdsl",
+ ClassID: 116,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffc0,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint16Field("NearEndHecViolationCount", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("NearEndDelineatedTotalCellCountCdP", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("NearEndUserTotalCellCountCuP", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint16Field("NearEndIdleCellBitErrorCount", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint16Field("FarEndHecViolationCount", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint32Field("FarEndDelineatedTotalCellCountCdPfe", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: Uint32Field("FarEndUserTotalCellCountCuPfe", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: Uint16Field("FarEndIdleCellBitErrorCount", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewTcAdaptorPerformanceMonitoringHistoryDataXdsl (class ID 116) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewTcAdaptorPerformanceMonitoringHistoryDataXdsl(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*tcadaptorperformancemonitoringhistorydataxdslBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/tcpudpconfigdata.go b/vendor/github.com/opencord/omci-lib-go/generated/tcpudpconfigdata.go
new file mode 100644
index 0000000..e041031
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/tcpudpconfigdata.go
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// TcpUdpConfigDataClassID is the 16-bit ID for the OMCI
+// Managed entity TCP/UDP config data
+const TcpUdpConfigDataClassID ClassID = ClassID(136)
+
+var tcpudpconfigdataBME *ManagedEntityDefinition
+
+// TcpUdpConfigData (class ID #136)
+// The TCP/UDP config data ME configures services based on the transmission control protocol (TCP)
+// and user datagram protocol (UDP) that are offered from an IP host. If a non-OMCI interface is
+// used to manage an IP service, this ME is unnecessary; the non-OMCI interface supplies the
+// necessary data.
+//
+// An instance of this ME is created and deleted on request of the OLT.
+//
+// Relationships
+// One or more instances of this ME may be associated with an instance of an IP host config data or
+// IPv6 host config data ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. It is
+// recommended that the ME ID be the same as the port number. (R, setbycreate) (mandatory)
+// (2-bytes)
+//
+// Port Id
+// Port ID: This attribute specifies the port number that offers the TCP/UDP service. (R,-W,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Protocol
+// Protocol: This attribute specifies the protocol type as defined by [b-IANA] (protocol numbers),
+// for example UDP (0x11). (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Tos_Diffserv Field
+// TOS/diffserv field: This attribute specifies the value of the TOS/diffserv field of the IPv4
+// header. The contents of this attribute may contain the type of service per [IETF RFC 2474] or a
+// DSCP. Valid values for DSCP are as defined by [b-IANA] (differentiated services field code
+// points). (R,-W, set-by-create) (mandatory) (1-byte)
+//
+// Ip Host Pointer
+// IP host pointer: This attribute points to the IP host config data or IPv6 host config data ME
+// associated with this TCP/UDP data. Any number of ports and protocols may be associated with an
+// IP host. (R, W, set-by-create) (mandatory) (2 bytes)
+//
+type TcpUdpConfigData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ tcpudpconfigdataBME = &ManagedEntityDefinition{
+ Name: "TcpUdpConfigData",
+ ClassID: 136,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xf000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("PortId", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: ByteField("Protocol", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: ByteField("TosDiffservField", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ 4: Uint16Field("IpHostPointer", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewTcpUdpConfigData (class ID 136) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewTcpUdpConfigData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*tcpudpconfigdataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/tcpudpperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/tcpudpperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..ec7567f
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/tcpudpperformancemonitoringhistorydata.go
@@ -0,0 +1,114 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// TcpUdpPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity TCP/UDP performance monitoring history data
+const TcpUdpPerformanceMonitoringHistoryDataClassID ClassID = ClassID(342)
+
+var tcpudpperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// TcpUdpPerformanceMonitoringHistoryData (class ID #342)
+// This ME collects PM data related to a TCP or UDP port. Instances of this ME are created and
+// deleted by the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an instance of the TCP/UDP config data ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the TCP/UDP config data ME. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 ME that
+// contains PM threshold values. Since no threshold value attribute number exceeds 7, a threshold
+// data 2 ME is optional. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Socket Failed
+// Socket failed: This attribute is incremented when an attempt to create a socket associated with
+// a port fails. (R) (mandatory) (2-bytes)
+//
+// Listen Failed
+// Listen failed: This attribute is incremented when an attempt by a service to listen for a
+// request on a port fails. (R) (mandatory) (2-bytes)
+//
+// Bind Failed
+// Bind failed: This attribute is incremented when an attempt by a service to bind to a port fails.
+// (R) (mandatory) (2-bytes)
+//
+// Accept Failed
+// Accept failed: This attribute is incremented when an attempt to accept a connection on a port
+// fails. (R) (mandatory) (2-bytes)
+//
+// Select Failed
+// Select failed: This attribute is incremented when an attempt to perform a select on a group of
+// ports fails. (R) (mandatory) (2-bytes)
+//
+type TcpUdpPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ tcpudpperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "TcpUdpPerformanceMonitoringHistoryData",
+ ClassID: 342,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfe00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint16Field("SocketFailed", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint16Field("ListenFailed", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint16Field("BindFailed", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint16Field("AcceptFailed", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint16Field("SelectFailed", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewTcpUdpPerformanceMonitoringHistoryData (class ID 342) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewTcpUdpPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*tcpudpperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/thresholddata1.go b/vendor/github.com/opencord/omci-lib-go/generated/thresholddata1.go
new file mode 100644
index 0000000..b0ecfa9
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/thresholddata1.go
@@ -0,0 +1,109 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// ThresholdData1ClassID is the 16-bit ID for the OMCI
+// Managed entity Threshold data 1
+const ThresholdData1ClassID ClassID = ClassID(273)
+
+var thresholddata1BME *ManagedEntityDefinition
+
+// ThresholdData1 (class ID #273)
+// Threshold data are partitioned into two MEs for historical reasons. An instance of this ME,
+// together with an optional instance of the threshold data 2 ME, contains threshold values for
+// counters in PM history data MEs.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Instances of this ME are created and deleted by the OLT.
+//
+// Relationships
+// An instance of this ME may be related to multiple instances of PM history data type MEs.//// Paired instances of threshold data 1 ME and threshold data 2 ME are implicitly linked together
+// through a common ME ID.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Threshold Value_1
+// Threshold value-1: (R,-W, setbycreate) (mandatory) (4-bytes)
+//
+// Threshold Value_2
+// Threshold value-2: (R,-W, setbycreate) (mandatory) (4-bytes)
+//
+// Threshold Value_3
+// Threshold value-3: (R,-W, setbycreate) (mandatory) (4-bytes)
+//
+// Threshold Value_4
+// Threshold value-4: (R,-W, setbycreate) (mandatory) (4-bytes)
+//
+// Threshold Value_5
+// Threshold value-5: (R,-W, setbycreate) (mandatory) (4-bytes)
+//
+// Threshold Value_6
+// Threshold value-6: (R,-W, setbycreate) (mandatory) (4-bytes)
+//
+// Threshold Value_7
+// Threshold value-7: (R,-W, setbycreate) (mandatory) (4-bytes)
+//
+type ThresholdData1 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ thresholddata1BME = &ManagedEntityDefinition{
+ Name: "ThresholdData1",
+ ClassID: 273,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfe00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint32Field("ThresholdValue1", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: Uint32Field("ThresholdValue2", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("ThresholdValue3", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ 4: Uint32Field("ThresholdValue4", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ 5: Uint32Field("ThresholdValue5", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 5),
+ 6: Uint32Field("ThresholdValue6", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 6),
+ 7: Uint32Field("ThresholdValue7", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 7),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewThresholdData1 (class ID 273) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewThresholdData1(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*thresholddata1BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/thresholddata2.go b/vendor/github.com/opencord/omci-lib-go/generated/thresholddata2.go
new file mode 100644
index 0000000..a4266d8
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/thresholddata2.go
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// ThresholdData2ClassID is the 16-bit ID for the OMCI
+// Managed entity Threshold data 2
+const ThresholdData2ClassID ClassID = ClassID(274)
+
+var thresholddata2BME *ManagedEntityDefinition
+
+// ThresholdData2 (class ID #274)
+// Together with an instance of the threshold data 1 ME, an instance of this ME contains threshold
+// values for counters maintained in one or more instances of PM history data MEs.
+//
+// For a complete discussion of generic PM architecture, refer to clause-I.4.
+//
+// Instances of this ME are created and deleted by the OLT.
+//
+// Relationships
+// Refer to the relationships of the threshold data 1 ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Its value is the
+// same as that of the paired threshold data-1-instance. (R, setbycreate) (mandatory) (2-bytes)
+//
+// Threshold Value_8
+// Threshold value-8: (R,-W, setbycreate) (mandatory) (4-bytes)
+//
+// Threshold Value_9
+// Threshold value-9: (R,-W, setbycreate) (mandatory) (4-bytes)
+//
+// Threshold Value_10
+// Threshold value-10: (R,-W, setbycreate) (mandatory) (4-bytes)
+//
+// Threshold Value_11
+// Threshold value-11: (R,-W, setbycreate) (mandatory) (4-bytes)
+//
+// Threshold Value_12
+// Threshold value-12: (R,-W, setbycreate) (mandatory) (4-bytes)
+//
+// Threshold Value_13
+// Threshold value-13: (R,-W, setbycreate) (mandatory) (4-bytes)
+//
+// Threshold Value_14
+// Threshold value-14: (R,-W, setbycreate) (mandatory) (4-bytes)
+//
+type ThresholdData2 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ thresholddata2BME = &ManagedEntityDefinition{
+ Name: "ThresholdData2",
+ ClassID: 274,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfe00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint32Field("ThresholdValue8", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: Uint32Field("ThresholdValue9", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("ThresholdValue10", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ 4: Uint32Field("ThresholdValue11", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ 5: Uint32Field("ThresholdValue12", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 5),
+ 6: Uint32Field("ThresholdValue13", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 6),
+ 7: Uint32Field("ThresholdValue14", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 7),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewThresholdData2 (class ID 274) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewThresholdData2(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*thresholddata2BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/trafficdescriptor.go b/vendor/github.com/opencord/omci-lib-go/generated/trafficdescriptor.go
new file mode 100644
index 0000000..1a23f08
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/trafficdescriptor.go
@@ -0,0 +1,132 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// TrafficDescriptorClassID is the 16-bit ID for the OMCI
+// Managed entity Traffic descriptor
+const TrafficDescriptorClassID ClassID = ClassID(280)
+
+var trafficdescriptorBME *ManagedEntityDefinition
+
+// TrafficDescriptor (class ID #280)
+// The traffic descriptor is a profile that allows for traffic management. A priority controlled
+// ONU can point from a MAC bridge port configuration data ME to a traffic descriptor in order to
+// implement traffic management (marking, policing). A rate controlled ONU can point to a traffic
+// descriptor from either a MAC bridge port configuration data ME or a GEM port network CTP to
+// implement traffic management (marking, shaping).
+//
+// Packets are determined to be green, yellow or red as a function of the ingress packet rate and
+// the settings in this ME. The colour indicates drop precedence (eligibility), subsequently used
+// by the priority queue ME to drop packets conditionally during congestion conditions. Packet
+// colour is also used by the optional mode 1 DBA status reporting function described in [ITUT
+// G.984.3]. Red packets are dropped immediately. Yellow packets are marked as drop eligible, and
+// green packets are marked as not drop eligible, according to the egress colour marking attribute.
+//
+// The algorithm used to determine the colour marking is specified by the meter type attribute. If
+// [bIETF RFC 4115] is used, then:
+//
+// CIR4115-=-CIR
+//
+// EIR4115-=-PIR - CIR (EIR: excess information rate)
+//
+// CBS4115-=-CBS
+//
+// EBS4115-=-PBS - CBS.
+//
+// Relationships
+// This ME is associated with a GEM port network CTP or a MAC bridge port configuration data ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Cir
+// CIR: This attribute specifies the committed information rate, in bytes per second. The default
+// is 0. (R,-W, setbycreate) (optional) (4-bytes)
+//
+// Pir
+// PIR: This attribute specifies the peak information rate, in bytes per second. The default value
+// 0 accepts the ONU's factory policy. (R,-W, setbycreate) (optional) (4-bytes)
+//
+// Cbs
+// CBS: This attribute specifies the committed burst size, in bytes. The default is 0. (R,-W,
+// setbycreate) (optional) (4-bytes)
+//
+// Pbs
+// PBS: This attribute specifies the peak burst size, in bytes. The default value 0 accepts the
+// ONU's factory policy. (R,-W, setbycreate) (optional) (4-bytes)
+//
+// Colour Mode
+// (R,-W, setbycreate) (optional) (1-byte)
+//
+// Ingress Colour Marking
+// (R,-W, setbycreate) (optional) (1-byte)
+//
+// Egress Colour Marking
+// (R,-W, setbycreate) (optional) (1-byte)
+//
+// Meter Type
+// (R, setbycreate) (optional) (1-byte)
+//
+type TrafficDescriptor struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ trafficdescriptorBME = &ManagedEntityDefinition{
+ Name: "TrafficDescriptor",
+ ClassID: 280,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xff00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint32Field("Cir", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 1),
+ 2: Uint32Field("Pir", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 2),
+ 3: Uint32Field("Cbs", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 3),
+ 4: Uint32Field("Pbs", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 4),
+ 5: ByteField("ColourMode", EnumerationAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 5),
+ 6: ByteField("IngressColourMarking", EnumerationAttributeType, 0x0400, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 6),
+ 7: ByteField("EgressColourMarking", EnumerationAttributeType, 0x0200, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 7),
+ 8: ByteField("MeterType", EnumerationAttributeType, 0x0100, 0, mapset.NewSetWith(Read, SetByCreate), false, true, false, 8),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewTrafficDescriptor (class ID 280) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewTrafficDescriptor(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*trafficdescriptorBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/trafficscheduler.go b/vendor/github.com/opencord/omci-lib-go/generated/trafficscheduler.go
new file mode 100644
index 0000000..000de15
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/trafficscheduler.go
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// TrafficSchedulerClassID is the 16-bit ID for the OMCI
+// Managed entity Traffic scheduler
+const TrafficSchedulerClassID ClassID = ClassID(278)
+
+var trafficschedulerBME *ManagedEntityDefinition
+
+// TrafficScheduler (class ID #278)
+// NOTE 1 - In [ITU-T G.984.4], this ME is called a traffic scheduler-G.
+//
+// An instance of this ME represents a logical object that can control upstream GEM packets. A
+// traffic scheduler can accommodate GEM packets after a priority queue or other traffic scheduler
+// and transfer them towards the next traffic scheduler or T-CONT. Because T-CONTs and traffic
+// schedulers are created autonomously by the ONU, the ONU vendor predetermines the most complex
+// traffic handling model it is prepared to support; the OLT may use less than the ONU's full
+// capabilities, but cannot ask for more. See Appendix II for more details.
+//
+// After the ONU creates instances of the T-CONT ME, it then autonomously creates instances of the
+// traffic scheduler ME.
+//
+// Relationships
+// The traffic scheduler ME may be related to a T-CONT or other traffic schedulers through pointer
+// attributes.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. This 2-byte
+// number indicates the physical capability that realizes the traffic scheduler. The first byte is
+// the slot ID of the circuit pack with which this traffic scheduler is associated. For a traffic
+// scheduler that is not associated with a circuit pack, the first byte is 0xFF. The second byte is
+// the traffic scheduler id, assigned by the ONU itself. Traffic schedulers are numbered in
+// ascending order with the range 0..0xFF in each circuit pack or in the ONU core. (R) (mandatory)
+// (2-bytes)
+//
+// T_Cont Pointer
+// NOTE 2 - This attribute is read-only unless otherwise specified by the QoS configuration
+// flexibility attribute of the ONU2-G ME. If flexible configuration is not supported, the ONU
+// should reject an attempt to set the TCONT pointer attribute with a parameter error result-reason
+// code.
+//
+// Traffic Scheduler Pointer
+// Traffic scheduler pointer: This attribute points to another traffic scheduler ME instance that
+// may serve this traffic scheduler. This pointer is used when this traffic scheduler is connected
+// to another traffic scheduler; it is null (0) otherwise. (R) (mandatory) (2-bytes)
+//
+// Policy
+// NOTE 3 - This attribute is read-only unless otherwise specified by the QoS configuration
+// flexibility attribute of the ONU2-G ME. If flexible configuration is not supported, the ONU
+// should reject an attempt to set the policy attribute with a parameter error result-reason code.
+//
+// Priority_Weight
+// Upon ME instantiation, the ONU sets this attribute to 0. (R,-W) (mandatory) (1-byte)
+//
+type TrafficScheduler struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ trafficschedulerBME = &ManagedEntityDefinition{
+ Name: "TrafficScheduler",
+ ClassID: 278,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xf000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: Uint16Field("TContPointer", PointerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: Uint16Field("TrafficSchedulerPointer", PointerAttributeType, 0x4000, 0, mapset.NewSetWith(Read), false, false, false, 2),
+ 3: ByteField("Policy", EnumerationAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), false, false, false, 3),
+ 4: ByteField("PriorityWeight", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, false, false, 4),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewTrafficScheduler (class ID 278) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewTrafficScheduler(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*trafficschedulerBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/twdmchannelmanagedentity.go b/vendor/github.com/opencord/omci-lib-go/generated/twdmchannelmanagedentity.go
new file mode 100644
index 0000000..8750bbf
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/twdmchannelmanagedentity.go
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// TwdmChannelManagedEntityClassID is the 16-bit ID for the OMCI
+// Managed entity TWDM channel managed entity
+const TwdmChannelManagedEntityClassID ClassID = ClassID(443)
+
+var twdmchannelmanagedentityBME *ManagedEntityDefinition
+
+// TwdmChannelManagedEntity (class ID #443)
+// This ME provides an anchor for the MEs involved in collection of PM statistics per TWDM channel,
+// as stipulated by clause 14 of [ITU-T-G.989.3]. Instances of this ME are instantiated
+// autonomously by the ONU.
+//
+// Relationships
+// One or more instances of this ME are implicitly associated with the TWDM System profile ME. The
+// number of instances created is announced by the total TWDM channel number attribute of the TWDM
+// system profile ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. This 2-byte
+// number is represented as 0xSSBB, where SS indicates the ONU slot ID, and BB is the TWDM channel
+// ME number assigned by the ONU itself, starting from 0 in the ascending order. (R) (mandatory)
+// (2-bytes)
+//
+// Active Channel Indication
+// Active channel indication: The default value is false. The ONU sets the attribute to true when
+// it receives the Channel_Profile PLOAM messages for that channel. The ONU clears the attribute
+// when it receives the Channel_Profile PLOAM message marked ``void'' for that channel. (R)
+// (mandatory) (1-byte)
+//
+// Operational Channel Indication
+// Operational channel indication: A Boolean attribute that is set to true for an active TWDM
+// channel in which the ONT is currently operating. The operational statistic is accumulated in the
+// PM history data MEs associated with that TWDM channel. (R) (mandatory) (1-byte)
+//
+// Downstream Wavelength Channel
+// Downstream wavelength channel: For an active TWDM channel, this attribute identifies the
+// downstream wavelength channel in reference to Table 11-2 of [ITU-T-G.989.2]. For an inactive
+// channel it has value 0xFF. (R) (mandatory) (1-byte)
+//
+// Upstream Wavelength Channel
+// Upstream wavelength channel: For an active TWDM channel, this attribute identifies the upstream
+// wavelength channel in reference to Table VIII-5 of [ITU-T-G.989.2]. For an inactive channel its
+// value of 0xFF. (R) (mandatory) (1-byte)
+//
+type TwdmChannelManagedEntity struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ twdmchannelmanagedentityBME = &ManagedEntityDefinition{
+ Name: "TwdmChannelManagedEntity",
+ ClassID: 443,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ ),
+ AllowedAttributeMask: 0xf000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("ActiveChannelIndication", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: ByteField("OperationalChannelIndication", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read), false, false, false, 2),
+ 3: ByteField("DownstreamWavelengthChannel", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: ByteField("UpstreamWavelengthChannel", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewTwdmChannelManagedEntity (class ID 443) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewTwdmChannelManagedEntity(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*twdmchannelmanagedentityBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/twdmchannelomciperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/twdmchannelomciperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..6765ed7
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/twdmchannelomciperformancemonitoringhistorydata.go
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// TwdmChannelOmciPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity TWDM channel OMCI performance monitoring history data
+const TwdmChannelOmciPerformanceMonitoringHistoryDataClassID ClassID = ClassID(452)
+
+var twdmchannelomciperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// TwdmChannelOmciPerformanceMonitoringHistoryData (class ID #452)
+// This ME collects OMCI-related PM data associated with the slot/circuit pack, hosting one or more
+// ANI-G MEs, for a specific TWDM channel. Instances of this ME are created and deleted by the OLT.
+//
+// The counters maintained by this ME are characterized as optional in Clause 14 of [ITU-
+// T-G.989.3].
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an instance of TWDM channel ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the TWDM channel ME. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 and 2 MEs
+// that contains PM threshold values. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Omci Baseline Message Count
+// OMCI baseline message count: The counter of baseline format OMCI messages directed to the given
+// ONU. (R) (mandatory) (4-byte)
+//
+// Omci Extended Message Count
+// OMCI extended message count: The counter of extended format OMCI messages directed to the given
+// ONU. (R) (mandatory) (4-byte)
+//
+// Omci Mic Error Count
+// OMCI MIC error count: The counter of OMCI messages received with MIC errors. (R) (mandatory)
+// (4-byte)
+//
+type TwdmChannelOmciPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ twdmchannelomciperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "TwdmChannelOmciPerformanceMonitoringHistoryData",
+ ClassID: 452,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ GetCurrentData,
+ Set,
+ ),
+ AllowedAttributeMask: 0xf800,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("OmciBaselineMessageCount", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("OmciExtendedMessageCount", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("OmciMicErrorCount", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewTwdmChannelOmciPerformanceMonitoringHistoryData (class ID 452) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewTwdmChannelOmciPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*twdmchannelomciperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/twdmchannelphylodsperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/twdmchannelphylodsperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..c8d3a2a
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/twdmchannelphylodsperformancemonitoringhistorydata.go
@@ -0,0 +1,168 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// TwdmChannelPhyLodsPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity TWDM channel PHY/LODS performance monitoring history data
+const TwdmChannelPhyLodsPerformanceMonitoringHistoryDataClassID ClassID = ClassID(444)
+
+var twdmchannelphylodsperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// TwdmChannelPhyLodsPerformanceMonitoringHistoryData (class ID #444)
+// This ME collects certain PM data associated with the slot/circuit pack, hosting one or more
+// ANI-G MEs, and a specific TWDM channel. Instances of this ME are created and deleted by the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an instance of TWDM channel ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the TWDM channel ME. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 and 2 MEs
+// that contains PM threshold values. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Total Received Words Protected By Bit_Interleaved Parity _32 Bip_32
+// Total received words protected by bit-interleaved parity-32 (BIP-32): The count of 4-byte words
+// included in BIP-32 check. This is a product of the number of downstream FS frames received by
+// the size of the downstream FS frame after the FEC parity byte, if any, have been removed. The
+// count applies to the entire downstream data flow, whether or not addressed to that ONT. (R)
+// (mandatory) (8-bytes)
+//
+// Bip_32 Bit Error Count
+// BIP-32 bit error count: Count of the bit errors in the received downstream FS frames as measured
+// using BIP-32. If FEC is supported in the downstream direction, the BIP-32 count applies to the
+// downstream FS frame after the FEC correction has been applied and the FEC parity bytes have been
+// removed. (R) (mandatory) (4-bytes)
+//
+// Corrected Psbd Hec Error Count
+// Corrected PSBd HEC error count: The count of the errors in either CFC or OCS fields of the PSBd
+// block that have been corrected using the HEC technique. (R) (mandatory) (4-bytes)
+//
+// Uncorrectable Psbd Hec Error Count
+// Uncorrectable PSBd HEC error count: The count of the errors in either CFC or OCS fields of the
+// PSBd block that could not be corrected using the HEC technique. (R) (mandatory) (4-bytes)
+//
+// Corrected Downstream Fs Header Hec Error Count
+// Corrected downstream FS header HEC error count: The count of the errors in the downstream FS
+// header that have been corrected using the HEC technique. (R) (mandatory) (4-bytes)
+//
+// Uncorrectable Downstream Fs Header Hec Error Count
+// Uncorrectable downstream FS header HEC error count: The count of the errors in the downstream FS
+// header that could not be corrected using the HEC technique. (R) (mandatory) (4-bytes)
+//
+// Total Number Of Lods Events
+// Total number of LODS events: The count of the state transitions from O5.1/O5.2 to O6, referring
+// to the ONU activation cycle state machine, clause 12 of [ITU-T-G.989.3]. (R) (mandatory)
+// (4-bytes)
+//
+// Lods Events Restored In Operating Twdm Channel
+// LODS events restored in operating TWDM channel: The count of LODS events cleared automatically
+// without retuning. (R) (mandatory) (4-bytes)
+//
+// Lods Events Restored In Protection Twdm Channel
+// LODS events restored in protection TWDM channel: The count of LODS events resolved by retuning
+// to a pre-configured protection TWDM channel. The event is counted against the original operating
+// channel. (R) (mandatory) (4-bytes)
+//
+// Lods Events Restored In Discretionary Twdm Channel
+// LODS events restored in discretionary TWDM channel: The count of LODS events resolved by
+// retuning to a TWDM channel chosen by the ONU, without retuning. Implies that the wavelength
+// channel protection for the operating channel is not active. The event is counted against the
+// original operating channel (R) (mandatory) (4-bytes)
+//
+// Lods Events Resulting In Reactivation
+// LODS events resulting in reactivation: The count of LODS events resolved through ONU
+// reactivation; that is, either TO2 (without WLCP) or TO3-+ TO4 (with WLCP) expires before the
+// downstream channel is reacquired, referring to the ONU activation cycle state machine, clause 12
+// of [ITU-T-G.989.3]. The event is counted against the original operating channel (R) (mandatory)
+// (4-bytes)
+//
+// Lods Events Resulting In Reactivation After Retuning To Protection Twdm Channel
+// LODS events resulting in reactivation after retuning to protection TWDM channel: The count of
+// LODS events resolved through ONU reactivation after attempted protection switching, which turns
+// unsuccessful due to a handshake failure. (R) (mandatory) (4-bytes)
+//
+// Lods Events Resulting In Reactivation After Retuning To Discretionary Twdm Channel
+// LODS events resulting in reactivation after retuning to discretionary TWDM channel: The count of
+// LODS events resolved through ONU reactivation after attempted retuning to a discretionary
+// channel, which turns unsuccessful due to a handshake failure. (R) (mandatory) (4-bytes)
+//
+type TwdmChannelPhyLodsPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ twdmchannelphylodsperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "TwdmChannelPhyLodsPerformanceMonitoringHistoryData",
+ ClassID: 444,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ GetCurrentData,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfffe,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint64Field("TotalReceivedWordsProtectedByBitInterleavedParity32Bip32", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("Bip32BitErrorCount", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("CorrectedPsbdHecErrorCount", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("UncorrectablePsbdHecErrorCount", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("CorrectedDownstreamFsHeaderHecErrorCount", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint32Field("UncorrectableDownstreamFsHeaderHecErrorCount", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: Uint32Field("TotalNumberOfLodsEvents", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: Uint32Field("LodsEventsRestoredInOperatingTwdmChannel", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ 11: Uint32Field("LodsEventsRestoredInProtectionTwdmChannel", CounterAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, false, false, 11),
+ 12: Uint32Field("LodsEventsRestoredInDiscretionaryTwdmChannel", CounterAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, false, false, 12),
+ 13: Uint32Field("LodsEventsResultingInReactivation", CounterAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, false, false, 13),
+ 14: Uint32Field("LodsEventsResultingInReactivationAfterRetuningToProtectionTwdmChannel", CounterAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, false, false, 14),
+ 15: Uint32Field("LodsEventsResultingInReactivationAfterRetuningToDiscretionaryTwdmChannel", CounterAttributeType, 0x0002, 0, mapset.NewSetWith(Read), false, false, false, 15),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewTwdmChannelPhyLodsPerformanceMonitoringHistoryData (class ID 444) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewTwdmChannelPhyLodsPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*twdmchannelphylodsperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/twdmchannelploamperformancemonitoringhistorydatapart1.go b/vendor/github.com/opencord/omci-lib-go/generated/twdmchannelploamperformancemonitoringhistorydatapart1.go
new file mode 100644
index 0000000..ca8616f
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/twdmchannelploamperformancemonitoringhistorydatapart1.go
@@ -0,0 +1,132 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// TwdmChannelPloamPerformanceMonitoringHistoryDataPart1ClassID is the 16-bit ID for the OMCI
+// Managed entity TWDM channel PLOAM performance monitoring history data part 1
+const TwdmChannelPloamPerformanceMonitoringHistoryDataPart1ClassID ClassID = ClassID(446)
+
+var twdmchannelploamperformancemonitoringhistorydatapart1BME *ManagedEntityDefinition
+
+// TwdmChannelPloamPerformanceMonitoringHistoryDataPart1 (class ID #446)
+// This ME collects certain PLOAM-related PM data associated with the slot/circuit pack, hosting
+// one or more ANI-G MEs, for a specific TWDM channel. Instances of this ME are created and deleted
+// by the OLT.
+//
+// The downstream PLOAM message counts of this ME include only the received PLOAM messages
+// pertaining to the given ONU, i.e.:
+//
+// - unicast PLOAM messages, addressed by ONU-ID;
+//
+// - broadcast PLOAM messages, addressed by serial number;
+//
+// - broadcast PLOAM messages, addressed to all ONUs on the PON.
+//
+// This ME includes all PLOAM PM counters characterized as mandatory in clause 14 of [ITU-
+// T-G.989.3].
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an instance of TWDM channel ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the TWDM channel ME. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 and 2 MEs
+// that contains PM threshold values. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Ploam Mic Errors
+// PLOAM MIC errors: The counter of received PLOAM messages that remain unparsable due to MIC
+// error. (R) (mandatory) (4-byte)
+//
+// Downstream Ploam Message Count
+// Downstream PLOAM message count: The counter of received broadcast and unicast PLOAM messages
+// pertaining to the given ONU. (R) (mandatory) (4-byte)
+//
+// Ranging_Time Message Count
+// Ranging_Time message count: The counter of received Ranging_Time PLOAM messages. (R) (mandatory)
+// (4-byte)
+//
+// Protection_Control Message Count
+// Protection_Control message count: The counter of received Protection_Control PLOAM messages. (R)
+// (mandatory) (4-byte)
+//
+// Adjust_Tx_Wavelength Message Count
+// Adjust_Tx_Wavelength message count: The counter of received Adjust_Tx_Wavelength PLOAM messages.
+// (R) (mandatory) (4-byte)
+//
+// Adjust_Tx_Wavelength Adjustment Amplitude
+// Adjust_Tx_Wavelength adjustment amplitude: An estimator of the absolute value of the
+// transmission wavelength adjustment. (R) (mandatory) (4-byte)
+//
+type TwdmChannelPloamPerformanceMonitoringHistoryDataPart1 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ twdmchannelploamperformancemonitoringhistorydatapart1BME = &ManagedEntityDefinition{
+ Name: "TwdmChannelPloamPerformanceMonitoringHistoryDataPart1",
+ ClassID: 446,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ GetCurrentData,
+ Set,
+ ),
+ AllowedAttributeMask: 0xff00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("PloamMicErrors", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("DownstreamPloamMessageCount", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("RangingTimeMessageCount", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("ProtectionControlMessageCount", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("AdjustTxWavelengthMessageCount", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint32Field("AdjustTxWavelengthAdjustmentAmplitude", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewTwdmChannelPloamPerformanceMonitoringHistoryDataPart1 (class ID 446) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewTwdmChannelPloamPerformanceMonitoringHistoryDataPart1(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*twdmchannelploamperformancemonitoringhistorydatapart1BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/twdmchannelploamperformancemonitoringhistorydatapart2.go b/vendor/github.com/opencord/omci-lib-go/generated/twdmchannelploamperformancemonitoringhistorydatapart2.go
new file mode 100644
index 0000000..439178f
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/twdmchannelploamperformancemonitoringhistorydatapart2.go
@@ -0,0 +1,172 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// TwdmChannelPloamPerformanceMonitoringHistoryDataPart2ClassID is the 16-bit ID for the OMCI
+// Managed entity TWDM channel PLOAM performance monitoring history data part 2
+const TwdmChannelPloamPerformanceMonitoringHistoryDataPart2ClassID ClassID = ClassID(447)
+
+var twdmchannelploamperformancemonitoringhistorydatapart2BME *ManagedEntityDefinition
+
+// TwdmChannelPloamPerformanceMonitoringHistoryDataPart2 (class ID #447)
+// This ME collects additional PLOAM-related PM data associated with the slot/circuit pack, hosting
+// one or more ANI-G MEs, for a specific TWDM channel. Instances of this ME are created and deleted
+// by the OLT.
+//
+// The downstream PLOAM message counts of this ME include only the received PLOAM messages
+// pertaining to the given ONU, i.e.:
+//
+// - unicast PLOAM messages, addressed by ONU-ID;
+//
+// - broadcast PLOAM messages, addressed by serial number;
+//
+// - broadcast PLOAM messages, addressed to all ONUs on the PON.
+//
+// All these counters are characterized as optional in clause 14 of [ITU-T- G.989.3].
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an instance of TWDM channel ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the TWDM channel ME. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 and 2 MEs
+// that contains PM threshold values. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// System_Profile Message Count
+// System_Profile message count: The counter of received System_Profile PLOAM messages. (R)
+// (mandatory) (4-byte)
+//
+// Channel_Profile Message Count
+// Channel_Profile message count: The counter of received Channel_Profile PLOAM messages. (R)
+// (mandatory) (4-byte)
+//
+// Burst_Profile Message Count
+// Burst_Profile message count: The counter of received Burst_Profile PLOAM messages. (R)
+// (mandatory) (4-byte)
+//
+// Assign_Onu_Id Message Count
+// Assign_ONU-ID message count: The counter of received Assign_ONU-ID PLOAM messages. (R)
+// (mandatory) (4-byte)
+//
+// Unsatisfied Adjust_Tx_Wavelength Requests
+// Unsatisfied Adjust_Tx_Wavelength requests: The counter of Adjust_Tx_Wavelength requests not
+// applied or partially applied due to target US wavelength being out of Tx tuning range. (R)
+// (mandatory) (4-byte)
+//
+// Deactivate_Onu_Id Message Count
+// Deactivate_ONU-ID message count: The counter of received Deactivate_ONU-ID PLOAM messages. (R)
+// (mandatory) (4-byte)
+//
+// Disable_Serial_Number Message Count
+// Disable_Serial_Number message count: The counter of received Disable_Serial_Number PLOAM
+// messages. (R) (mandatory) (4-byte)
+//
+// Request_Registration Message Count
+// Request_Registration message count: The counter of received Request_Registration PLOAM messages.
+// (R) (mandatory) (4-byte)
+//
+// Assign_Alloc_Id Message Count
+// Assign_Alloc-ID message count: The counter of received Assign_Alloc-ID PLOAM messages. (R)
+// (mandatory) (4-byte)
+//
+// Key_Control Message Count
+// Key_Control message count: The counter of received Key_Control PLOAM messages. (R) (mandatory)
+// (4-byte)
+//
+// Sleep_Allow Message Count
+// Sleep_Allow message count: The counter of received Sleep_Allow PLOAM messages. (R) (mandatory)
+// (4-byte)
+//
+// Tuning_Control_Request Message Count
+// Tuning_Control/Request message count: The counter of received Tuning_Control PLOAM messages with
+// Request operation code. (R) (mandatory) (4-byte)
+//
+// Tuning_Control_Complete_D Message Count
+// Tuning_Control/Complete_d message count: The counter of received Tuning_Control PLOAM messages
+// with Complete_d operation code. (R) (mandatory) (4-byte)
+//
+// Calibration_Request Message Count
+// Calibration_Request message count: The counter of received Calibration_Request PLOAM messages.
+// (R) (mandatory) (4-byte)
+//
+type TwdmChannelPloamPerformanceMonitoringHistoryDataPart2 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ twdmchannelploamperformancemonitoringhistorydatapart2BME = &ManagedEntityDefinition{
+ Name: "TwdmChannelPloamPerformanceMonitoringHistoryDataPart2",
+ ClassID: 447,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ GetCurrentData,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffff,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("SystemProfileMessageCount", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("ChannelProfileMessageCount", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("BurstProfileMessageCount", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("AssignOnuIdMessageCount", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("UnsatisfiedAdjustTxWavelengthRequests", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint32Field("DeactivateOnuIdMessageCount", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: Uint32Field("DisableSerialNumberMessageCount", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: Uint32Field("RequestRegistrationMessageCount", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ 11: Uint32Field("AssignAllocIdMessageCount", CounterAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, false, false, 11),
+ 12: Uint32Field("KeyControlMessageCount", CounterAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, false, false, 12),
+ 13: Uint32Field("SleepAllowMessageCount", CounterAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, false, false, 13),
+ 14: Uint32Field("TuningControlRequestMessageCount", CounterAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, false, false, 14),
+ 15: Uint32Field("TuningControlCompleteDMessageCount", CounterAttributeType, 0x0002, 0, mapset.NewSetWith(Read), false, false, false, 15),
+ 16: Uint32Field("CalibrationRequestMessageCount", CounterAttributeType, 0x0001, 0, mapset.NewSetWith(Read), false, false, false, 16),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewTwdmChannelPloamPerformanceMonitoringHistoryDataPart2 (class ID 447) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewTwdmChannelPloamPerformanceMonitoringHistoryDataPart2(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*twdmchannelploamperformancemonitoringhistorydatapart2BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/twdmchannelploamperformancemonitoringhistorydatapart3.go b/vendor/github.com/opencord/omci-lib-go/generated/twdmchannelploamperformancemonitoringhistorydatapart3.go
new file mode 100644
index 0000000..b1ef66b
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/twdmchannelploamperformancemonitoringhistorydatapart3.go
@@ -0,0 +1,149 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// TwdmChannelPloamPerformanceMonitoringHistoryDataPart3ClassID is the 16-bit ID for the OMCI
+// Managed entity TWDM channel PLOAM performance monitoring history data part 3
+const TwdmChannelPloamPerformanceMonitoringHistoryDataPart3ClassID ClassID = ClassID(448)
+
+var twdmchannelploamperformancemonitoringhistorydatapart3BME *ManagedEntityDefinition
+
+// TwdmChannelPloamPerformanceMonitoringHistoryDataPart3 (class ID #448)
+// This ME collects remaining PLOAM-related PM data associated with the slot/circuit pack, hosting
+// one or more ANI-G MEs, for a specific TWDM channel. Instances of this ME are created and deleted
+// by the OLT.
+//
+// This ME contains the counters related to transmitted upstream PLOAM messages. All these counters
+// are characterized as optional in clause 14 of [ITU-T- G.989.3].
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an instance of TWDM channel ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the TWDM channel ME. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 and 2 MEs
+// that contains PM threshold values. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Upstream Ploam Message Count
+// Upstream PLOAM message count: The aggregate counter of PLOAM messages, other than AK PLOAM MT,
+// transmitted by the given ONU. (R) (mandatory) (4-byte)
+//
+// Serial_Number_Onu In_Band Message Count
+// Serial_Number_ONU (in-band) message count: The counter of transmitted in-band Serial_Number_ONU
+// PLOAM messages. (R) (mandatory) (4-byte)
+//
+// Serial_Number_Onu Amcc Message Count
+// Serial_Number_ONU (AMCC) message count: The counter of transmitted auxiliary management and
+// control channel (AMCC) Serial_Number_ONU PLOAM messages. (R) (mandatory) (4-byte)
+//
+// Registration Message Count
+// Registration message count: The counter of transmitted Registration PLOAM messages. (R)
+// (mandatory) (4-byte)
+//
+// Key_Report Message Count
+// Key_Report message count: The counter of transmitted Key_Report PLOAM messages. (R) (mandatory)
+// (4-byte)
+//
+// Acknowledgement Message Count
+// Acknowledgement message count: The counter of transmitted Registration PLOAM messages. (R)
+// (mandatory) (4-byte)
+//
+// Sleep_Request Message Count
+// Sleep_Request message count: The counter of transmitted Sleep_Request PLOAM messages. (R)
+// (mandatory) (4-byte)
+//
+// Tuning_Response Ack_Nack Message Count
+// Tuning_Response (ACK/NACK) message count: The counter of transmitted Tuning_Response PLOAM
+// messages with ACK/NACK operation code. (R) (mandatory) (4-byte)
+//
+// Tuning_Response Complete_U_Rollback Message Count
+// Tuning_Response (Complete_u/Rollback) message count: The counter of transmitted Tuning_Response
+// PLOAM messages with Complete_u/Rollback operation code. (R) (mandatory) (4-byte)
+//
+// Power_Consumption_Report Message Count
+// Power_Consumption_Report message count: The counter of transmitted Power_Consumption_Report
+// PLOAM messages. (R) (mandatory) (4-byte)
+//
+// Change_Power_Level Parameter Error Count
+// Change_Power_Level parameter error count: The counter of transmitted Acknowledgement PLOAM
+// messages with Parameter Error completion code in response to Change_Power_Level PLOAM message.
+// (R) (mandatory) (4-byte)
+//
+type TwdmChannelPloamPerformanceMonitoringHistoryDataPart3 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ twdmchannelploamperformancemonitoringhistorydatapart3BME = &ManagedEntityDefinition{
+ Name: "TwdmChannelPloamPerformanceMonitoringHistoryDataPart3",
+ ClassID: 448,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ GetCurrentData,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfff8,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("UpstreamPloamMessageCount", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("SerialNumberOnuInBandMessageCount", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("SerialNumberOnuAmccMessageCount", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("RegistrationMessageCount", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("KeyReportMessageCount", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint32Field("AcknowledgementMessageCount", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: Uint32Field("SleepRequestMessageCount", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: Uint32Field("TuningResponseAckNackMessageCount", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ 11: Uint32Field("TuningResponseCompleteURollbackMessageCount", CounterAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, false, false, 11),
+ 12: Uint32Field("PowerConsumptionReportMessageCount", CounterAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, false, false, 12),
+ 13: Uint32Field("ChangePowerLevelParameterErrorCount", CounterAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, false, false, 13),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewTwdmChannelPloamPerformanceMonitoringHistoryDataPart3 (class ID 448) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewTwdmChannelPloamPerformanceMonitoringHistoryDataPart3(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*twdmchannelploamperformancemonitoringhistorydatapart3BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/twdmchanneltuningperformancemonitoringhistorydatapart1.go b/vendor/github.com/opencord/omci-lib-go/generated/twdmchanneltuningperformancemonitoringhistorydatapart1.go
new file mode 100644
index 0000000..02c8755
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/twdmchanneltuningperformancemonitoringhistorydatapart1.go
@@ -0,0 +1,174 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// TwdmChannelTuningPerformanceMonitoringHistoryDataPart1ClassID is the 16-bit ID for the OMCI
+// Managed entity TWDM channel tuning performance monitoring history data part 1
+const TwdmChannelTuningPerformanceMonitoringHistoryDataPart1ClassID ClassID = ClassID(449)
+
+var twdmchanneltuningperformancemonitoringhistorydatapart1BME *ManagedEntityDefinition
+
+// TwdmChannelTuningPerformanceMonitoringHistoryDataPart1 (class ID #449)
+// This ME collects certain tuning-control-related PM data associated with the slot/circuit pack,
+// hosting one or more ANI-G MEs, for a specific TWDM channel. Instances of this ME are created and
+// deleted by the OLT.
+//
+// The relevant events this ME is concerned with are counted towards the PM statistics associated
+// with the source TWDM channel. The attribute descriptions refer to the ONU activation cycle
+// states and timers specified in clause 12 of [ITU-T- G.989.3]. This ME contains the counters
+// characterized as mandatory in clause 14 of [ITU-T- G.989.3].
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an instance of TWDM channel ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the TWDM channel ME. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 and 2 MEs
+// that contains PM threshold values. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Tuning Control Requests For Rx Only Or Rx And Tx
+// Tuning control requests for Rx only or Rx and Tx: The counter of received Tuning_Control PLOAM
+// messages with Request operation code that contain tuning instructions either for receiver only
+// or for both receiver and transmitter. (R) (mandatory) (4-byte)
+//
+// Tuning Control Requests For Tx Only
+// Tuning control requests for Tx only: The counter of received Tuning_Control PLOAM messages with
+// Request operation code that contain tuning instructions for transmitter only. (R) (mandatory)
+// (4-byte)
+//
+// Tuning Control Requests Rejected_Int_Sfc
+// Tuning control requests rejected/INT_SFC: The counter of transmitted Tuning_Response PLOAM
+// messages with NACK operation code and INT_SFC response code, indicating inability to start
+// transceiver tuning by the specified time (SFC). (R) (mandatory) (4-byte)
+//
+// Tuning Control Requests Rejected_Ds_Xxx
+// Tuning control requests rejected/DS_xxx: The aggregate counter of transmitted Tuning_Response
+// PLOAM messages with NACK operation code and any DS_xxx response code, indicating target
+// downstream wavelength channel inconsistency. (R) (mandatory) (4-byte)
+//
+// Tuning Control Requests Rejected_Us_Xxx
+// Tuning control requests rejected/US_xxx: The aggregate counter of transmitted Tuning_Response
+// PLOAM messages with NACK operation code and any US_xxx response code, indicating target upstream
+// wavelength channel inconsistency. (R) (mandatory) (4-byte)
+//
+// Tuning Control Requests Fulfilled With Onu Reacquired At Target Channel
+// Tuning control requests fulfilled with ONU reacquired at target channel: The counter of
+// controlled tuning attempts for which an upstream tuning confirmation has been obtained in the
+// target channel. (R) (mandatory) (4-byte)
+//
+// Tuning Control Requests Failed Due To Target Ds Wavelength Channel Not Found
+// Tuning control requests failed due to target DS wavelength channel not found: The counter of
+// controlled tuning attempts that failed due to timer TO4 expiration in the DS Tuning state (O8)
+// in the target channel. (R) (mandatory) (4-byte)
+//
+// Tuning Control Requests Failed Due To No Feedback In Target Ds Wavelength Channel
+// Tuning control requests failed due to no feedback in target DS wavelength channel: The counter
+// of controlled tuning attempts that failed due to timer TO5 expiration in the US Tuning state
+// (O9) in the target channel. (R) (mandatory) (4-byte)
+//
+// Tuning Control Requests Resolved With Onu Reacquired At Discretionary Channel
+// Tuning control requests resolved with ONU reacquired at discretionary channel: The counter of
+// controlled tuning attempts for which an upstream tuning confirmation has been obtained in the
+// discretionary channel. (R) (mandatory) (4-byte)
+//
+// Tuning Control Requests Rollback_Com_Ds
+// Tuning control requests Rollback/COM_DS: The counter of controlled tuning attempts that failed
+// due to communication condition in the target channel, as indicated by the Tuning_Response PLOAM
+// message with Rollback operation code and COM_DS response code. (R) (mandatory) (4-byte)
+//
+// Tuning Control Requests Rollback_Ds_Xxx
+// Tuning control requests Rollback/DS_xxx: The aggregate counter of controlled tuning attempts
+// that failed due to target downstream wavelength channel inconsistency, as indicated by the
+// Tuning_Response PLOAM message with Rollback operation code and any DS_xxx response code. (R)
+// (mandatory) (4-byte)
+//
+// Tuning Control Requests Rollback_Us_Xxx
+// Tuning control requests Rollback/US_xxx: The aggregate counter of controlled tuning attempts
+// that failed due to target upstream wavelength channel parameter violation, as indicated by the
+// Tuning_Response PLOAM message with Rollback operation code and US_xxx response code. (R)
+// (mandatory) (4-byte)
+//
+// Tuning Control Requests Failed With Onu Reactivation
+// Tuning control requests failed with ONU reactivation: The counter of controlled tuning attempts
+// that failed on any reason, with expiration of timers TO4 or TO5 causing the ONU transition into
+// state O1. (R) (mandatory) (4-byte)
+//
+type TwdmChannelTuningPerformanceMonitoringHistoryDataPart1 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ twdmchanneltuningperformancemonitoringhistorydatapart1BME = &ManagedEntityDefinition{
+ Name: "TwdmChannelTuningPerformanceMonitoringHistoryDataPart1",
+ ClassID: 449,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfffe,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("TuningControlRequestsForRxOnlyOrRxAndTx", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("TuningControlRequestsForTxOnly", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("TuningControlRequestsRejectedIntSfc", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("TuningControlRequestsRejectedDsXxx", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("TuningControlRequestsRejectedUsXxx", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint32Field("TuningControlRequestsFulfilledWithOnuReacquiredAtTargetChannel", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: Uint32Field("TuningControlRequestsFailedDueToTargetDsWavelengthChannelNotFound", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: Uint32Field("TuningControlRequestsFailedDueToNoFeedbackInTargetDsWavelengthChannel", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ 11: Uint32Field("TuningControlRequestsResolvedWithOnuReacquiredAtDiscretionaryChannel", CounterAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, false, false, 11),
+ 12: Uint32Field("TuningControlRequestsRollbackComDs", CounterAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, false, false, 12),
+ 13: Uint32Field("TuningControlRequestsRollbackDsXxx", CounterAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, false, false, 13),
+ 14: Uint32Field("TuningControlRequestsRollbackUsXxx", CounterAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, false, false, 14),
+ 15: Uint32Field("TuningControlRequestsFailedWithOnuReactivation", CounterAttributeType, 0x0002, 0, mapset.NewSetWith(Read), false, false, false, 15),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewTwdmChannelTuningPerformanceMonitoringHistoryDataPart1 (class ID 449) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewTwdmChannelTuningPerformanceMonitoringHistoryDataPart1(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*twdmchanneltuningperformancemonitoringhistorydatapart1BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/twdmchanneltuningperformancemonitoringhistorydatapart2.go b/vendor/github.com/opencord/omci-lib-go/generated/twdmchanneltuningperformancemonitoringhistorydatapart2.go
new file mode 100644
index 0000000..07eb432
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/twdmchanneltuningperformancemonitoringhistorydatapart2.go
@@ -0,0 +1,172 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// TwdmChannelTuningPerformanceMonitoringHistoryDataPart2ClassID is the 16-bit ID for the OMCI
+// Managed entity TWDM channel tuning performance monitoring history data part 2
+const TwdmChannelTuningPerformanceMonitoringHistoryDataPart2ClassID ClassID = ClassID(450)
+
+var twdmchanneltuningperformancemonitoringhistorydatapart2BME *ManagedEntityDefinition
+
+// TwdmChannelTuningPerformanceMonitoringHistoryDataPart2 (class ID #450)
+// This ME collects additional tuning-control-related PM data associated with the slot/circuit
+// pack, hosting one or more ANI-G MEs, for a specific TWDM channel. Instances of this ME are
+// created and deleted by the OLT.
+//
+// The relevant events this ME is concerned with are counted towards the PM statistics associated
+// with the source TWDM channel. This ME contains the counters characterized as optional in clause
+// 14 of [ITU-T- G.989.3].
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an instance of TWDM channel ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the TWDM channel ME. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 and 2 MEs
+// that contains PM threshold values. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Tuning Control Requests Rejected_Ds_Albl
+// Tuning control requests rejected/DS_ALBL: The counter of transmitted Tuning_Response PLOAM
+// messages with NACK operation code and DS_ALBL response code, indicating downstream
+// administrative label inconsistency. (R) (mandatory) (4-byte)
+//
+// Tuning Control Requests Rejected_Ds_Void
+// Tuning control requests rejected/DS_VOID: The counter of transmitted Tuning_Response PLOAM
+// messages with NACK operation code and DS_VOID response code, indicating that the target
+// downstream wavelength channel descriptor is void. (R) (mandatory) (4-byte)
+//
+// Tuning Control Requests Rejected_Ds_Part
+// Tuning control requests rejected/DS_PART: The counter of transmitted Tuning_Response PLOAM
+// messages with NACK operation code and DS_PART response code, indicating that tuning request
+// involves channel partition violation. (R) (mandatory) (4-byte)
+//
+// Tuning Control Requests Rejected_Ds_Tunr
+// Tuning control requests rejected/DS_TUNR: The counter of transmitted Tuning_Response PLOAM
+// messages with NACK operation code and DS_TUNR response code, indicating that the target DS
+// wavelength channel is out of receiver tuning range. (R) (mandatory) (4-byte)
+//
+// Tuning Control Requests Rejected_Ds_Lnrt
+// Tuning control requests rejected/DS_LNRT: The counter of transmitted Tuning_Response PLOAM
+// messages with NACK operation code and DS_LNRT response code, indicating downstream line rate
+// inconsistency in the target channel. (R) (mandatory) (4-byte)
+//
+// Tuning Control Requests Rejected_Ds_Lncd
+// Tuning control requests rejected/DS_LNCD: The counter of transmitted Tuning_Response PLOAM
+// messages with NACK operation code and DS_LNCD response code, indicating downstream line code
+// inconsistency in the target channel. (R) (mandatory) (4-byte)
+//
+// Tuning Control Requests Rejected_Us_Albl
+// Tuning control requests rejected/US_ALBL: The counter of transmitted Tuning_Response PLOAM
+// messages with NACK operation code and US_ALBL response code, indicating upstream administrative
+// label inconsistency. (R) (mandatory) (4-byte)
+//
+// Tuning Control Requests Rejected_Us_Void
+// Tuning control requests rejected/US_VOID: The counter of transmitted Tuning_Response PLOAM
+// messages with NACK operation code and US_VOID response code, indicating that the target upstream
+// wavelength channel descriptor is void. (R) (mandatory) (4-byte)
+//
+// Tuning Control Requests Rejected_Us_Tunr
+// Tuning control requests rejected/US_TUNR: The counter of transmitted Tuning_Response PLOAM
+// messages with NACK operation code and US_TUNR response code, indicating that the target US
+// wavelength channel is out of transmitter tuning range. (R) (mandatory) (4-byte)
+//
+// Tuning Control Requests Rejected_Us_Clbr
+// Tuning control requests rejected/US_CLBR: The counter of transmitted Tuning_Response PLOAM
+// messages with NACK operation code and US_CLBR response code, indicating that the transmitter has
+// insufficient calibration accuracy in the target US wavelength channel. (R) (mandatory) (4-byte)
+//
+// Tuning Control Requests Rejected_Us_Lktp
+// Tuning control requests rejected/US_LKTP: The counter of transmitted Tuning_Response PLOAM
+// messages with NACK operation code and US_LKTP response code, indicating upstream optical link
+// type inconsistency. (R) (mandatory) (4-byte)
+//
+// Tuning Control Requests Rejected_Us_Lnrt
+// Tuning control requests rejected/US_LNRT: The counter of transmitted Tuning_Response PLOAM
+// messages with NACK operation code and US_LNRT response code, indicating upstream line rate
+// inconsistency in the target channel. (R) (mandatory) (4-byte)
+//
+// Tuning Control Requests Rejected_Us_Lncd
+// Tuning control requests rejected/US_LNCD: The counter of transmitted Tuning_Response PLOAM
+// messages with NACK operation code and US_LNCD response code, indicating upstream line code
+// inconsistency in the target channel. (R) (mandatory) (4-byte)
+//
+type TwdmChannelTuningPerformanceMonitoringHistoryDataPart2 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ twdmchanneltuningperformancemonitoringhistorydatapart2BME = &ManagedEntityDefinition{
+ Name: "TwdmChannelTuningPerformanceMonitoringHistoryDataPart2",
+ ClassID: 450,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ GetCurrentData,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfffe,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("TuningControlRequestsRejectedDsAlbl", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("TuningControlRequestsRejectedDsVoid", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("TuningControlRequestsRejectedDsPart", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("TuningControlRequestsRejectedDsTunr", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("TuningControlRequestsRejectedDsLnrt", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint32Field("TuningControlRequestsRejectedDsLncd", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: Uint32Field("TuningControlRequestsRejectedUsAlbl", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: Uint32Field("TuningControlRequestsRejectedUsVoid", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ 11: Uint32Field("TuningControlRequestsRejectedUsTunr", CounterAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, false, false, 11),
+ 12: Uint32Field("TuningControlRequestsRejectedUsClbr", CounterAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, false, false, 12),
+ 13: Uint32Field("TuningControlRequestsRejectedUsLktp", CounterAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, false, false, 13),
+ 14: Uint32Field("TuningControlRequestsRejectedUsLnrt", CounterAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, false, false, 14),
+ 15: Uint32Field("TuningControlRequestsRejectedUsLncd", CounterAttributeType, 0x0002, 0, mapset.NewSetWith(Read), false, false, false, 15),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewTwdmChannelTuningPerformanceMonitoringHistoryDataPart2 (class ID 450) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewTwdmChannelTuningPerformanceMonitoringHistoryDataPart2(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*twdmchanneltuningperformancemonitoringhistorydatapart2BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/twdmchanneltuningperformancemonitoringhistorydatapart3.go b/vendor/github.com/opencord/omci-lib-go/generated/twdmchanneltuningperformancemonitoringhistorydatapart3.go
new file mode 100644
index 0000000..daa8201
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/twdmchanneltuningperformancemonitoringhistorydatapart3.go
@@ -0,0 +1,143 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// TwdmChannelTuningPerformanceMonitoringHistoryDataPart3ClassID is the 16-bit ID for the OMCI
+// Managed entity TWDM channel tuning performance monitoring history data part 3
+const TwdmChannelTuningPerformanceMonitoringHistoryDataPart3ClassID ClassID = ClassID(451)
+
+var twdmchanneltuningperformancemonitoringhistorydatapart3BME *ManagedEntityDefinition
+
+// TwdmChannelTuningPerformanceMonitoringHistoryDataPart3 (class ID #451)
+// This ME collects remaining tuning-control-related PM data associated with the slot/circuit pack,
+// hosting one or more ANI-G MEs, for a specific TWDM channel. Instances of this ME are created and
+// deleted by the OLT.
+//
+// The relevant events this ME is concerned with are counted towards the PM statistics associated
+// with the source TWDM channel. This ME contains the counters characterized as optional in clause
+// 14 of [ITU-T-G.989.3].
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an instance of TWDM channel ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the TWDM channel ME. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 and 2 MEs
+// that contains PM threshold values. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Tuning Control Requests Rollback_Ds_Albl
+// Tuning control requests Rollback/DS_ALBL: The counter of controlled tuning attempts that failed
+// due to downstream administrative label inconsistency, as indicated by the Tuning_Response PLOAM
+// message with Rollback operation code and DS_ALBL response code. (R) (mandatory) (4-byte)
+//
+// Tuning Control Requests Rollback_Ds_Lktp
+// Tuning control requests Rollback/DS_LKTP: The counter of controlled tuning attempts that failed
+// due to downstream optical link type inconsistency, as indicated by the Tuning_Response PLOAM
+// message with Rollback operation code and DS_LKTP response code. (R) (mandatory) (4-byte)
+//
+// Tuning Control Requests Rollback_Us_Albl
+// Tuning control requests Rollback/US_ALBL: The counter of controlled tuning attempts that failed
+// due to upstream administrative label violation, as indicated by the Tuning_Response PLOAM
+// message with Rollback operation code and US_ALBL response code. (R) (mandatory) (4-byte)
+//
+// Tuning Control Requests Rollback_Us_Void
+// Tuning control requests Rollback/US_VOID: The counter of controlled tuning attempts that failed
+// due to the target upstream wavelength channel descriptor being void, as indicated by the
+// Tuning_Response PLOAM message with Rollback operation code and US_VOID response code. (R)
+// (mandatory) (4-byte)
+//
+// Tuning Control Requests Rollback_Us_Tunr
+// Tuning control requests Rollback/US_TUNR: The counter of controlled tuning attempts that failed
+// due to the transmitter tuning range violation, as indicated by the Tuning_Response PLOAM message
+// with Rollback operation code and US_TUNR response code. (R) (mandatory) (4-byte)
+//
+// Tuning Control Requests Rollback_Us_Lktp
+// Tuning control requests Rollback/US_LKTP: The counter of controlled tuning attempts that failed
+// due to the upstream optical link type violation, as indicated by the Tuning_Response PLOAM
+// message with Rollback operation code and US_LKTP response code. (R) (mandatory) (4-byte)
+//
+// Tuning Control Requests Rollback_Us_Lnrt
+// Tuning control requests Rollback/US_LNRT: The counter of controlled tuning attempts that failed
+// due to the upstream line rate violation, as indicated by the Tuning_Response PLOAM message with
+// Rollback operation code and US_LNRT response code. (R) (mandatory) (4-byte)
+//
+// Tuning Control Requests Rollback_Us_Lncd
+// Tuning control requests Rollback/US_LNCD: The counter of controlled tuning attempts that failed
+// due to the upstream line code violation, as indicated by the Tuning_Response PLOAM message with
+// Rollback operation code and US_LNCD response code. (R) (mandatory) (4-byte)
+//
+type TwdmChannelTuningPerformanceMonitoringHistoryDataPart3 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ twdmchanneltuningperformancemonitoringhistorydatapart3BME = &ManagedEntityDefinition{
+ Name: "TwdmChannelTuningPerformanceMonitoringHistoryDataPart3",
+ ClassID: 451,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ GetCurrentData,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffc0,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("TuningControlRequestsRollbackDsAlbl", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("TuningControlRequestsRollbackDsLktp", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("TuningControlRequestsRollbackUsAlbl", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("TuningControlRequestsRollbackUsVoid", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("TuningControlRequestsRollbackUsTunr", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint32Field("TuningControlRequestsRollbackUsLktp", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: Uint32Field("TuningControlRequestsRollbackUsLnrt", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: Uint32Field("TuningControlRequestsRollbackUsLncd", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewTwdmChannelTuningPerformanceMonitoringHistoryDataPart3 (class ID 451) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewTwdmChannelTuningPerformanceMonitoringHistoryDataPart3(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*twdmchanneltuningperformancemonitoringhistorydatapart3BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/twdmchannelxgemperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/twdmchannelxgemperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..b79d889
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/twdmchannelxgemperformancemonitoringhistorydata.go
@@ -0,0 +1,133 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// TwdmChannelXgemPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity TWDM channel XGEM performance monitoring history data
+const TwdmChannelXgemPerformanceMonitoringHistoryDataClassID ClassID = ClassID(445)
+
+var twdmchannelxgemperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// TwdmChannelXgemPerformanceMonitoringHistoryData (class ID #445)
+// This ME collects certain XGEM-related PM data associated with the slot/circuit pack, hosting one
+// or more ANI-G MEs, for a specific TWDM channel. Instances of this ME are created and deleted by
+// the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an instance of TWDM channel ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the TWDM channel ME. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 64 Bit Id
+// Threshold data 64-bit ID: This attribute points to an instance of the threshold data 64-bit ME
+// that contains PM threshold values. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Total Transmitted Xgem Frames
+// Total transmitted XGEM frames: The counter aggregated across all XGEM ports of the given ONU.
+// (R) (mandatory) (8-byte)
+//
+// Transmitted Xgem Frames With Lf Bit Not Set
+// Transmitted XGEM frames with LF bit not set: The counter aggregated across all XGEM ports of the
+// given ONU identifies the number of fragmentation operations. (R) (mandatory) (8-byte)
+//
+// Total Received Xgem Frames
+// Total received XGEM frames: The counter aggregated across all XGEM ports of the given ONU. (R)
+// (mandatory) (8-byte)
+//
+// Received Xgem Frames With Xgem Header Hec Errors
+// Received XGEM frames with XGEM header HEC errors: The counter aggregated across all XGEM ports
+// of the given ONU identifies the number of loss XGEM frame delineation events. (R) (mandatory)
+// (8-byte)
+//
+// Fs Words Lost To Xgem Header Hec Errors
+// FS words lost to XGEM header HEC errors: The counter of the FS frame words lost due to XGEM
+// frame header errors that cause loss of XGEM frame delineation. (R) (mandatory) (8-byte)
+//
+// Xgem Encryption Key Errors
+// XGEM encryption key errors: The counter aggregated across all XGEM ports of the given ONU
+// identifies the number of received XGEM frames that have to be discarded because of unknown or
+// invalid encryption key. The number is included into the Total received XGEM frame count above.
+// (R) (mandatory) (8-byte)
+//
+// Total Transmitted Bytes In Non_Idle Xgem Frames
+// Total transmitted bytes in non-idle XGEM frames: The counter aggregated across all XGEM ports of
+// the given. (R) (mandatory) (8-byte)
+//
+// Total Received Bytes In Non_Idle Xgem Frames
+// Total received bytes in non-idle XGEM frames: The counter aggregated across all XGEM ports of
+// the given ONU. (R) (mandatory) (8-byte)
+//
+type TwdmChannelXgemPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ twdmchannelxgemperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "TwdmChannelXgemPerformanceMonitoringHistoryData",
+ ClassID: 445,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ GetCurrentData,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffc0,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData64BitId", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint64Field("TotalTransmittedXgemFrames", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint64Field("TransmittedXgemFramesWithLfBitNotSet", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint64Field("TotalReceivedXgemFrames", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint64Field("ReceivedXgemFramesWithXgemHeaderHecErrors", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint64Field("FsWordsLostToXgemHeaderHecErrors", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint64Field("XgemEncryptionKeyErrors", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: Uint64Field("TotalTransmittedBytesInNonIdleXgemFrames", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: Uint64Field("TotalReceivedBytesInNonIdleXgemFrames", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewTwdmChannelXgemPerformanceMonitoringHistoryData (class ID 445) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewTwdmChannelXgemPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*twdmchannelxgemperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/uni-g.go b/vendor/github.com/opencord/omci-lib-go/generated/uni-g.go
new file mode 100644
index 0000000..d7b52cd
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/uni-g.go
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// UniGClassID is the 16-bit ID for the OMCI
+// Managed entity UNI-G
+const UniGClassID ClassID = ClassID(264)
+
+var unigBME *ManagedEntityDefinition
+
+// UniG (class ID #264)
+// This ME organizes data associated with UNIs supported by GEM. One instance of the UNI-G ME
+// exists for each UNI supported by the ONU.
+//
+// The ONU automatically creates or deletes instances of this ME upon the creation or deletion of a
+// real or virtual circuit pack ME, one per port.
+//
+// Relationships
+// An instance of the UNI-G ME exists for each instance of a PPTP ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of a PPTP. (R) (mandatory) (2-bytes)
+//
+// Deprecated
+// Deprecated: This attribute is not used. It should be set to 0 by the OLT and ignored by the ONU.
+// (R,-W) (mandatory) (2-bytes)
+//
+// Administrative State
+// NOTE - PPTP MEs also have an administrative state attribute. The user port is unlocked only if
+// both administrative state attributes are set to unlocked. It is recommended that this attribute
+// not be used: that the OLT set it to 0 and that the ONU ignore it.
+//
+// Management Capability
+// (R) (optional) (1-byte)
+//
+// Non_Omci Management Identifier
+// Non-OMCI management identifier: If a PPTP can be managed either directly by the OMCI or a non-
+// OMCI management environment, this attribute specifies how it is in fact to be managed. This
+// attribute is either 0 (default-=-OMCI management), or it is a pointer to a VEIP, which in turn
+// links to a non-OMCI management environment. (R,-W) (optional) (2-bytes)
+//
+// Relay Agent Options
+// 2/3/4:atm/123.4567
+//
+type UniG struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ unigBME = &ManagedEntityDefinition{
+ Name: "UniG",
+ ClassID: 264,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xf800,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: Uint16Field("Deprecated", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, true, 1),
+ 2: ByteField("AdministrativeState", EnumerationAttributeType, 0x4000, 0, mapset.NewSetWith(Read, Write), false, false, false, 2),
+ 3: ByteField("ManagementCapability", EnumerationAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, true, false, 3),
+ 4: Uint16Field("NonOmciManagementIdentifier", PointerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, true, false, 4),
+ 5: Uint16Field("RelayAgentOptions", PointerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, true, false, 5),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewUniG (class ID 264) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewUniG(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*unigBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/vdsl2lineconfigurationextensions2.go b/vendor/github.com/opencord/omci-lib-go/generated/vdsl2lineconfigurationextensions2.go
new file mode 100644
index 0000000..8fb381c
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/vdsl2lineconfigurationextensions2.go
@@ -0,0 +1,204 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// Vdsl2LineConfigurationExtensions2ClassID is the 16-bit ID for the OMCI
+// Managed entity VDSL2 line configuration extensions 2
+const Vdsl2LineConfigurationExtensions2ClassID ClassID = ClassID(323)
+
+var vdsl2lineconfigurationextensions2BME *ManagedEntityDefinition
+
+// Vdsl2LineConfigurationExtensions2 (class ID #323)
+// This ME extends the xDSL line configuration MEs. The ME name was chosen because its attributes
+// were initially unique to ITU-T G.993.2 VDSL2. Due to continuing standards development, two of
+// the attributes (FEXT and NEXT TXREFVNds) are also used in [ITUT-G.992.3] and [ITUT-G.992.5].
+// This ME therefore pertains to the latter Recommendations as well as to [ITU-T-G.993.2].
+//
+// The attributes of this ME are further defined in [ITU-T G.997.1].
+//
+// An instance of this ME is created and deleted by the OLT.
+//
+// Relationships
+// An instance of this ME may be associated with zero or more instances of the PPTP xDSL UNI part
+// 1.//// The overall xDSL line configuration profile is modelled in several parts, all of which are
+// associated together through a common ME ID. (The client PPTP xDSL UNI part 1 has a single
+// pointer, which refers to the entire set of line configuration parts.)
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. All xDSL and
+// VDSL2 line configuration profiles and extensions that pertain to a given PPTP xDSL must share a
+// common ME ID. (R, setbycreate) (mandatory) (2-bytes)
+//
+// Sos Time Downstream
+// SOS time downstream: The SOS-TIME-ds attribute is used in the specification of receiver
+// initiated SOS (see clause 13.4.3 of [ITUT G.993.2]). If the attribute value is not zero, the
+// standard SOS triggering criteria are enabled, and the value specifies the duration of the window
+// used in the standard SOS triggering criteria in the downstream direction. The special value zero
+// indicates that the standard SOS triggering criteria are disabled, i.e., vendor-discretionary
+// values may be used instead of the values configured in the MIB for the following parameters:
+// SOS-NTONES-ds, SOS-CRC-ds, SOS-TIME-ds. The valid range of non-zero values is from 1..255,
+// specifying 64-ms to 16320 ms in steps of 64-ms. (R,-W, setbycreate) (optional) (1-byte)
+//
+// Sos Time Upstream
+// SOS time upstream: The SOS-TIME-us attribute is used in the specification of receiver initiated
+// SOS (see clause 13.4.3 of [ITUT G.993.2]). If the attribute value is not zero, the standard SOS
+// triggering criteria are enabled, and the value specifies the duration of the window used in the
+// standard SOS triggering criteria in the upstream direction. The special value zero indicates
+// that the standard SOS triggering criteria are disabled, i.e., vendor-discretionary values may be
+// used instead of the values configured in the MIB for the following parameters: SOS-NTONES-us,
+// SOS-CRC-us, SOS-TIME-us. The valid range of non-zero values is from 1..255, specifying 64-ms to
+// 16320-ms in steps of 64-ms. (R,-W, setbycreate) (optional) (1-byte)
+//
+// Sos Degraded Tones Threshold Downstream
+// SOS degraded tones threshold downstream: The SOS-NTONES-ds attribute is the minimum percentage
+// of tones in the downstream medley set that must be degraded in order to arm the first
+// subcondition of the standard SOS triggering criteria in the downstream direction. The valid
+// range of values is from 1 to 100% in steps of 1. Use of the special value 0 is described in
+// clause 13.4.3.2 of [ITUT G.993.2]. (R,-W, setbycreate) (optional) (1-byte)
+//
+// Sos Degraded Tones Threshold Upstream
+// SOS degraded tones threshold upstream: The SOS-NTONES-us attribute is the minimum percentage of
+// tones in the upstream medley set that must be degraded in order to arm the first subcondition of
+// the standard SOS triggering criteria in the upstream direction. The valid range of values is
+// from 1 to 100% in steps of 1. Use of the special value 0 is described in clause 13.4.3.2 of
+// [ITUT-G.993.2]. (R,-W, setbycreate) (optional) (1-byte)
+//
+// Sos Crc Threshold Downstream
+// SOS CRC threshold downstream: The SOS-CRC-ds attribute is the minimum number of normalized CRC
+// anomalies received in SOS-TIME-ds seconds in order to arm the second sub-condition of the
+// standard SOS triggering criteria (see clause 13.4.3.2 of [ITU T G.993.2]) in the downstream
+// direction. The valid range of SOS-CRC values is 0.02 to (216-1)*0.02, in steps of 0.02. The
+// value-0 specifies that the ONU uses its internal default. (R, W, set-by-create) (optional) (2
+// bytes)
+//
+// Sos Crc Threshold Upstream
+// SOS CRC threshold upstream: The SOS-CRC-us attribute is the minimum number of normalized CRC
+// anomalies received in SOS-TIME-us seconds in order to arm the second sub-condition of the
+// standard SOS triggering criteria (see clause 13.4.3.2 of [ITU T G.993.2]) in the upstream
+// direction. The valid range of SOS-CRC values is 0.02 to (216-1)*0.02, in steps of 0.02. The
+// value-0 specifies that the ONU uses its internal default. (R, W, set-by-create) (optional) (2
+// bytes)
+//
+// Max Sos Downstream
+// MAX SOS downstream: The MAX-SOS-ds attribute is used in deactivation. If the number of
+// successful SOS procedures in the downstream direction performed within a 120-s interval exceeds
+// MAX-SOS-ds, the modem goes to state L3. See clause 12.1.4 of [ITUT G.993.2] for details. The
+// valid range of values is 1 to 15, with the special value 0 as described in clause 12.1 of [ITUT
+// G.993.2]. (R,-W, setbycreate) (optional) (1-byte)
+//
+// Max Sos Upstream
+// MAX SOS upstream: The MAX-SOS-us attribute is used in deactivation. If the number of successful
+// SOS procedures in the upstream direction performed within a 120-s interval exceeds MAX-SOS-us,
+// the modem goes to state L3. See clause 12.1.4 of [ITUT G.993.2] for details. The valid range of
+// values is 1 to 15, with the special value 0 as described in clause 12.1 of [ITUT G.993.2].
+// (R,-W, setbycreate) (optional) (1-byte)
+//
+// Snr Max Offset Downstream
+// SNR max offset downstream: The SNRMOFFSET-ROC-ds attribute is the SNR margin offset for the ROC
+// in the downstream direction. The attribute is used in the specification of the channel
+// initialization policy (see clause 12.3.7.1 of [ITUT G.993.2]). The valid range of SNR margin
+// offset values is from 0..31-dB in 0.1-dB steps. (R,-W, setbycreate) (optional) (2-bytes)
+//
+// Snr Max Offset Upstream
+// SNR max offset upstream: The SNRMOFFSET-ROC-us attribute is the SNR margin offset for the ROC in
+// the upstream direction. The attribute is used in the specification of the channel initialization
+// policy (see clause-12.3.7.1 of [ITUT G.993.2]). The valid range of SNR margin offset values is
+// from 0..31-dB in 0.1-dB steps. (R,-W, setbycreate) (optional) (2-bytes)
+//
+// Roc Minimum Impulse Noise Protection Downstream
+// ROC minimum impulse noise protection downstream: The INPMIN-ROC-ds attribute specifies the
+// minimum INP to apply on the ROC in the downstream direction expressed in multiples of equivalent
+// 4k DMT, xDSL (DMT) symbol length. The minimum INP is an integer ranging from 0 to 8. (R,-W,
+// setbycreate) (optional) (1-byte)
+//
+// Roc Minimum Impulse Noise Protection Upstream
+// ROC minimum impulse noise protection upstream: The INPMIN-ROC-us attribute specifies the minimum
+// impulse noise protection to apply on the ROC in the upstream direction expressed in multiples of
+// equivalent 4k DMT symbol length. The minimum INP is an integer ranging from 0 to 8. (R,-W,
+// setbycreate) (optional) (1-byte)
+//
+// Fext Downstream Transmitter Referred Virtual Noise Table
+// FEXT downstream transmitter referred virtual noise table: The FEXT TXREFVNds attribute is the
+// downstream transmitter referred virtual noise specified for FEXTR duration in Annex C of [ITUT
+// G.992.3] (ADSL2) and Annex C of [ITUT G.992.5] (ADSL2plus). The syntax of this attribute is the
+// same as that of the TXREFVNds table attribute of the VDSL2 line configuration extensions ME.
+// (R,-W) (mandatory for Annex-C of [ITUT-G.992.3] and Annex-C of [ITUT-G.992.5]) (3-*-N bytes,
+// where N is the number of breakpoints)
+//
+// Next Downstream Transmitter Referred Virtual Noise Table
+// NEXT downstream transmitter referred virtual noise table: The NEXT TXREFVNds attribute is the
+// downstream transmitter referred virtual noise specified for NEXTR duration in Annex C of [ITUT
+// G.992.3] (ADSL2) and Annex C of [ITUT G.992.5] (ADSL2plus). The syntax of this attribute is the
+// same as that of the TXREFVNds table attribute of the VDSL2 line configuration extensions ME.
+// (R,-W) (mandatory for Annex-C of [ITUT-G.992.3] and Annex-C of [ITUT-G.992.5]) (3-*-N bytes,
+// where N is the number of breakpoints)
+//
+type Vdsl2LineConfigurationExtensions2 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ vdsl2lineconfigurationextensions2BME = &ManagedEntityDefinition{
+ Name: "Vdsl2LineConfigurationExtensions2",
+ ClassID: 323,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ GetNext,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfffc,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("SosTimeDownstream", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 1),
+ 2: ByteField("SosTimeUpstream", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 2),
+ 3: ByteField("SosDegradedTonesThresholdDownstream", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 3),
+ 4: ByteField("SosDegradedTonesThresholdUpstream", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 4),
+ 5: Uint16Field("SosCrcThresholdDownstream", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 5),
+ 6: Uint16Field("SosCrcThresholdUpstream", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 6),
+ 7: ByteField("MaxSosDownstream", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 7),
+ 8: ByteField("MaxSosUpstream", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 8),
+ 9: Uint16Field("SnrMaxOffsetDownstream", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 9),
+ 10: Uint16Field("SnrMaxOffsetUpstream", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 10),
+ 11: ByteField("RocMinimumImpulseNoiseProtectionDownstream", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 11),
+ 12: ByteField("RocMinimumImpulseNoiseProtectionUpstream", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 12),
+ 13: TableField("FextDownstreamTransmitterReferredVirtualNoiseTable", TableAttributeType, 0x0008, TableInfo{nil, 3}, mapset.NewSetWith(Read, Write), false, false, false, 13),
+ 14: TableField("NextDownstreamTransmitterReferredVirtualNoiseTable", TableAttributeType, 0x0004, TableInfo{nil, 3}, mapset.NewSetWith(Read, Write), false, false, false, 14),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewVdsl2LineConfigurationExtensions2 (class ID 323) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewVdsl2LineConfigurationExtensions2(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*vdsl2lineconfigurationextensions2BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/vdsl2lineconfigurationextensions3.go b/vendor/github.com/opencord/omci-lib-go/generated/vdsl2lineconfigurationextensions3.go
new file mode 100644
index 0000000..cbde28d
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/vdsl2lineconfigurationextensions3.go
@@ -0,0 +1,158 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// Vdsl2LineConfigurationExtensions3ClassID is the 16-bit ID for the OMCI
+// Managed entity VDSL2 line configuration extensions 3
+const Vdsl2LineConfigurationExtensions3ClassID ClassID = ClassID(410)
+
+var vdsl2lineconfigurationextensions3BME *ManagedEntityDefinition
+
+// Vdsl2LineConfigurationExtensions3 (class ID #410)
+// This ME extends the xDSL line configuration MEs.
+//
+// An instance of this ME is created and deleted by the OLT.
+//
+// Relationships
+// An instance of this ME may be associated with zero or more instances of an xDSL UNI.//// The overall xDSL line configuration profile is modelled in several parts, all of which are
+// associated together through a common ME ID (the client PPTP xDSL UNI part 1 has a single
+// pointer, which refers to the entire set of line configuration parts).
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. All xDSL and
+// VDSL2 line configuration profiles and extensions that pertain to a given PPTP xDSL UNI must
+// share a common ME ID. (R, setbycreate) (mandatory) (2-bytes)
+//
+// Ripolicyds
+// RIPOLICYds: This attribute indicates which policy shall be applied to determine the triggers for
+// re-initialization in the downstream direction. A valid range of values is given in clause
+// 7.3.1.1.12.1 of [ITU-T G.997.1]. (R,-W) (optional) (1-byte)
+//
+// Ripolicyus
+// RIPOLICYus: This attribute indicates which policy shall be applied to determine the triggers for
+// re-initialization in the upstream direction. A valid range of values is given in clause
+// 7.3.1.1.12.2 of [ITU-T G.997.1]. (R,-W) (optional) (1-byte)
+//
+// Reinit_Time_Thresholdds
+// REINIT_TIME_THRESHOLDds: This attribute indicates defines the downstream threshold for re-
+// initialization based on SES, to be used by the VTU receiver when re-initialization policy 1 is
+// used in downstream. A valid range of values is given in clause 7.3.1.1.13.1 of [ITU-T G.997.1].
+// (R,-W) (optional) (1-byte)
+//
+// Reinit_Time_Thresholdus
+// REINIT_TIME_THRESHOLDus: This attribute indicates defines the upstream threshold for re-
+// initialization based on SES, to be used by the VTU receiver when reinitialization policy 1 is
+// used in upstream. A valid range of values is given in clause 7.3.1.1.13.2 of [ITU-T G.997.1].
+// (R,-W) (optional) (1-byte)
+//
+// Rxrefvnsfus
+// RXREFVNSFus: If SNRM_MODE = 4, this attribute defines the upstream receiver-referred virtual
+// noise scaling factor. The attribute value ranges from 0 (-64.0-dBm) to 255 (+63.5-dBm) - see
+// clause 7.3.1.7.5 of [ITU-T G.997.1]. (R,-W) (optional) (1-byte)
+//
+// Txrefvnsfds
+// TXREFVNSFds: If SNRM_MODE = 4, this attribute defines the downstream transmitter referred
+// virtual noise scaling factor. The attribute value ranges from 0 (-64.0-dBm) to 255 (+63.5-dBm)
+// - see clause 7.3.1.7.6 of [ITU-T G.997.1]. (R,-W) (optional) (1-byte)
+//
+// Rtx_Modeds
+// RTX_MODEds: This attribute controls the mode of operation of [ITU-T G.998.4] retransmission in
+// the downstream direction. A valid range of values is given in clause 7.3.1.11 of [ITU-T
+// G.997.1]. (R,-W) (mandatory) (1-byte)
+//
+// Rtx_Modeus
+// RTX_MODEus: This attribute controls the mode of operation of [ITU-T G.998.4] retransmission in
+// the upstream direction. A valid range of values is given in clause 7.3.1.11 of [ITU-T G.997.1].
+// (R,-W) (mandatory) (1-byte)
+//
+// Leftr_Thresh
+// LEFTR_THRESH: If retransmission is used in a given transmit direction, LEFTR_THRESH specifies
+// the threshold for declaring a near-end ''leftr'' defect. LEFTR_THRESH is equal to the integer
+// value of this attribute multiplied by 0.01. Valid values and usage are given in clause 7.3.1.12
+// of [ITU-T G.997.1]. (R,-W) (mandatory) (1-byte)
+//
+// Maxdelayoctet_Split Parameter Mdosplit
+// MAXDELAYOCTET-split parameter (MDOSPLIT): This attribute defines the percentage of the
+// MAXDELAYOCTET_ext if operating in [ITU-T G.998.4] or MAXDELAYOCTET in other cases allocated to
+// the downstream direction. MDOSPLIT is equal to the integer value of this attribute multiplied by
+// 1%. Valid values and usage are given in clause 7.3.1.14 of [ITUT-G.997.1]. (R,-W) (optional)
+// (1-byte)
+//
+// Attndr Method Attndr_Method
+// ATTNDR Method (ATTNDR_METHOD): This attribute specifies the method to be used for the
+// calculation of the ATTNDR in the downstream and upstream direction. Valid values are given in
+// clause 7.3.1.15.1 of [ITU-T G.997.1]. (R,-W) (optional) (1-byte)
+//
+// Attndr Maxdelayoctet_Split Parameter Attndr_Mdosplit
+// ATTNDR MAXDELAYOCTET-split parameter (ATTNDR_MDOSPLIT): This attribute defines the percentage of
+// the MAXDELAYOCTET_ext if operating in [ITU-T G.998.4] or MAXDELAYOCTET in other cases allocated
+// to the downstream direction to be used in the improved method for calculation of the ATTNDR. The
+// valid values are identical to the values of the line configuration parameter MDOSPLIT. See
+// clause 7.3.1.15.2 of [ITUT-G.997.1]. (R,-W) (optional) (1-byte)
+//
+type Vdsl2LineConfigurationExtensions3 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ vdsl2lineconfigurationextensions3BME = &ManagedEntityDefinition{
+ Name: "Vdsl2LineConfigurationExtensions3",
+ ClassID: 410,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfff0,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("Ripolicyds", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, true, false, 1),
+ 2: ByteField("Ripolicyus", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, Write), false, true, false, 2),
+ 3: ByteField("ReinitTimeThresholdds", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), false, true, false, 3),
+ 4: ByteField("ReinitTimeThresholdus", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, true, false, 4),
+ 5: ByteField("Rxrefvnsfus", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, true, false, 5),
+ 6: ByteField("Txrefvnsfds", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, Write), false, true, false, 6),
+ 7: ByteField("RtxModeds", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, Write), false, false, false, 7),
+ 8: ByteField("RtxModeus", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, Write), false, false, false, 8),
+ 9: ByteField("LeftrThresh", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, Write), false, false, false, 9),
+ 10: ByteField("MaxdelayoctetSplitParameterMdosplit", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read, Write), false, true, false, 10),
+ 11: ByteField("AttndrMethodAttndrMethod", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read, Write), false, true, false, 11),
+ 12: ByteField("AttndrMaxdelayoctetSplitParameterAttndrMdosplit", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read, Write), false, true, false, 12),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewVdsl2LineConfigurationExtensions3 (class ID 410) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewVdsl2LineConfigurationExtensions3(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*vdsl2lineconfigurationextensions3BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/vdsl2lineinventoryandstatusdatapart1.go b/vendor/github.com/opencord/omci-lib-go/generated/vdsl2lineinventoryandstatusdatapart1.go
new file mode 100644
index 0000000..728b80e
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/vdsl2lineinventoryandstatusdatapart1.go
@@ -0,0 +1,157 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// Vdsl2LineInventoryAndStatusDataPart1ClassID is the 16-bit ID for the OMCI
+// Managed entity VDSL2 line inventory and status data part 1
+const Vdsl2LineInventoryAndStatusDataPart1ClassID ClassID = ClassID(168)
+
+var vdsl2lineinventoryandstatusdatapart1BME *ManagedEntityDefinition
+
+// Vdsl2LineInventoryAndStatusDataPart1 (class ID #168)
+// This ME extends the xDSL line configuration MEs. The ME name was chosen because its attributes
+// were initially unique to ITU-T G.993.2 VDSL2. Due to continuing standards development, some
+// attributes - and therefore this ME - have also become applicable to other Recommendations,
+// specifically [ITU-T G.992.3] and [ITU-T G.992.5].
+//
+// This ME contains general and downstream attributes.
+//
+// Relationships
+// This is one of the status data MEs associated with an xDSL UNI. It is meaningful if the PPTP
+// supports [ITU-T G.992.3], [ITU-T G.992.5] or [ITU-T G.993.2]. The ONU automatically creates or
+// deletes an instance of this ME upon creation and deletion of a PPTP xDSL UNI part 1 that
+// supports these attributes.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the PPTP xDSL UNI part 1 ME. (R)
+// (mandatory) (2-bytes)
+//
+// Vdsl2 Transmission System Capability Xtu C
+// VDSL2 transmission system capability xTUC: This attribute extends the xTU-C transmission system
+// capability attribute of the xDSL line inventory and status data part 1 to include xTU-C VDSL2
+// capabilities. It is defined by bits 57..64 of Table 9.7.12-1. (R) (mandatory) (1-byte)
+//
+// Vdsl2 Transmission System
+// VDSL2 transmission system: This attribute reports the transmission system in use. It extends the
+// xDSL transmission system attribute of the xDSL line inventory and status data part 2 ME with a
+// byte that includes VDSL2 capabilities currently in use. It is defined by bits 57..64 of Table
+// 9.7.12-1. (R) (mandatory) (1-byte)
+//
+// Vdsl2 Profile
+// (R) (mandatory) (1-byte)
+//
+// Vdsl2 Limit Psd Mask And Bandplan
+// VDSL2 limit PSD mask and bandplan: This attribute defines the limit PSD mask and band plan in
+// use. It is a bit map as defined by Table 9.7.6-1. (R) (mandatory) (8-bytes)
+//
+// Vdsl2 Us0 Psd Mask
+// VDSL2 US0 PSD mask: This attribute defines the US0 PSD mask in use. It is a bit map as defined
+// by Table 9.7.62. (R) (mandatory) (4-bytes)
+//
+// Actsnrmodeds
+// (R) (mandatory) (1-byte)
+//
+// Hlingds
+// HLINGds: This attribute contains the number of subcarriers per group used to report HLINpsds.
+// (R) (mandatory) (1-byte)
+//
+// Hloggds
+// HLOGGds: This attribute contains the number of subcarriers per group used to report HLOGpsds.
+// (R) (mandatory) (1-byte)
+//
+// Qlngds
+// QLNGds: This attribute contains the number of subcarriers per group used to report QLNpsds. (R)
+// (mandatory) (1-byte)
+//
+// Snrgds
+// SNRGds: This attribute contains the number of subcarriers per group used to report SNRpsds. (R)
+// (mandatory) (1-byte)
+//
+// Mrefpsdds Table
+// (R) (mandatory) (3 * N bytes, where N is the number of breakpoints)
+//
+// Trellisds
+// (R) (mandatory for ITU-T G.993.2 VDSL2, optional for others) (1-byte)
+//
+// Actual Rate Adaptation Mode Downstream
+// (R) (optional) (1-byte)
+//
+// Actual Impulse Noise Protection Robust Operations Channel Roc Downstream
+// Actual impulse noise protection robust operations channel (ROC) downstream: The ACTINP-ROC-ds
+// attribute reports the actual INP of the ROC in the downstream direction expressed in multiples
+// of T4k. The INP of this attribute is equal to the integer value multiplied by 0.1 symbols. Valid
+// values and usage are given in clause 7.5.1.34.1 of [ITUT-G.997.1]. (R) (optional) (1-byte)
+//
+// Snr Margin Roc Downstream
+// SNR margin ROC downstream: The SNRM-ROC-ds attribute reports the actual signal-to-noise margin
+// of the ROC in the downstream direction. Its value ranges from 0 (-64.0-dB) to 1270 (+63.0-dB).
+// The special value 0xFFFF indicates that the attribute is out of range. (R) (optional) (2-bytes)
+//
+type Vdsl2LineInventoryAndStatusDataPart1 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ vdsl2lineinventoryandstatusdatapart1BME = &ManagedEntityDefinition{
+ Name: "Vdsl2LineInventoryAndStatusDataPart1",
+ ClassID: 168,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ GetNext,
+ ),
+ AllowedAttributeMask: 0xfffe,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("Vdsl2TransmissionSystemCapabilityXtuC", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: ByteField("Vdsl2TransmissionSystem", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read), false, false, false, 2),
+ 3: ByteField("Vdsl2Profile", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint64Field("Vdsl2LimitPsdMaskAndBandplan", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("Vdsl2Us0PsdMask", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: ByteField("Actsnrmodeds", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: ByteField("Hlingds", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: ByteField("Hloggds", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: ByteField("Qlngds", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: ByteField("Snrgds", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ 11: TableField("MrefpsddsTable", TableAttributeType, 0x0020, TableInfo{nil, 3}, mapset.NewSetWith(Read), false, false, false, 11),
+ 12: ByteField("Trellisds", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, false, false, 12),
+ 13: ByteField("ActualRateAdaptationModeDownstream", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, true, false, 13),
+ 14: ByteField("ActualImpulseNoiseProtectionRobustOperationsChannelRocDownstream", UnsignedIntegerAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, true, false, 14),
+ 15: Uint16Field("SnrMarginRocDownstream", UnsignedIntegerAttributeType, 0x0002, 0, mapset.NewSetWith(Read), false, true, false, 15),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewVdsl2LineInventoryAndStatusDataPart1 (class ID 168) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewVdsl2LineInventoryAndStatusDataPart1(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*vdsl2lineinventoryandstatusdatapart1BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/vdsl2lineinventoryandstatusdatapart2.go b/vendor/github.com/opencord/omci-lib-go/generated/vdsl2lineinventoryandstatusdatapart2.go
new file mode 100644
index 0000000..2cb56d8
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/vdsl2lineinventoryandstatusdatapart2.go
@@ -0,0 +1,157 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// Vdsl2LineInventoryAndStatusDataPart2ClassID is the 16-bit ID for the OMCI
+// Managed entity VDSL2 line inventory and status data part 2
+const Vdsl2LineInventoryAndStatusDataPart2ClassID ClassID = ClassID(169)
+
+var vdsl2lineinventoryandstatusdatapart2BME *ManagedEntityDefinition
+
+// Vdsl2LineInventoryAndStatusDataPart2 (class ID #169)
+// This ME extends the xDSL line configuration MEs. The ME name was chosen because its attributes
+// were initially unique to ITU-T G.993.2 VDSL2. Due to continuing standards development, some
+// attributes - and therefore this ME - have also become applicable to other Recommendations,
+// specifically [ITU-T G.992.3] and [ITU-T G.992.5].
+//
+// This ME contains upstream attributes.
+//
+// Relationships
+// This is one of the status data MEs associated with an xDSL UNI. It is meaningful if the PPTP
+// supports [ITU-T G.992.3], [ITU-T G.992.5] or [ITU-T G.993.2]. The ONU automatically creates or
+// deletes an instance of this ME upon creation and deletion of a PPTP xDSL UNI part 1 that
+// supports these attributes.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the PPTP xDSL UNI part 1 ME. (R)
+// (mandatory) (2-bytes)
+//
+// Vdsl2 Transmission System Capability Xtu_R
+// VDSL2 transmission system capability xTU-R: This attribute extends the xTU-R transmission system
+// capability attribute of the xDSL line inventory and status data part 1 to include xTUR VDSL2
+// capabilities. It is a defined by bits 57..64 of Table 9.7.12-1. (R) (mandatory) (1-byte)
+//
+// Actsnrmodeus
+// (R) (mandatory) (1-byte)
+//
+// Upbokle
+// UPBOKLE: This attribute contains the electrical length estimated by the VTU-O expressed in
+// decibels at 1-MHz, kl0 (see O-UPDATE in clause 12.3.3.2.1.2 of [ITUT-G.993.2]). This is the
+// final electrical length that would have been sent from the VTU-O to the VTU-R if the electrical
+// length were not forced by the OLT. The value lies in the range 0 (0.0-dB) to 1280 (128.0-dB) (R)
+// (mandatory) (2-bytes)
+//
+// Hlingus
+// HLINGus: This attribute is the number of subcarriers per group used to report HLINpsus. (R)
+// (mandatory) (1-byte)
+//
+// Hloggus
+// HLOGGus: This attribute is the number of subcarriers per group used to report HLOGpsus. (R)
+// (mandatory) (1-byte)
+//
+// Qlngus
+// QLNGus: This attribute is the number of subcarriers per group used to report QLNpsus. (R)
+// (mandatory) (1-byte)
+//
+// Snrgus
+// SNRGus: This attribute is the number of subcarriers per group used to report SNRpsus. (R)
+// (mandatory) (1-byte)
+//
+// Mrefpsdus Table
+// (R) (mandatory) (3 * N bytes, where N is the number of breakpoints)
+//
+// Trellisus
+// (R) (mandatory for ITU-T G.993.2 VDSL2, optional for others) (1-byte)
+//
+// Actualce
+// ACTUALCE: This attribute reports the cyclic extension used on the line. It is coded as an
+// unsigned integer from 2 to 16 in units of N/32 samples, where 2N is the IDFT size. (R)
+// (mandatory) (1-byte)
+//
+// Upbokle_R
+// UPBOKLE-R: This attribute contains the electrical length estimated by the VTU-R expressed in
+// decibels at 1-MHz. This is the value contained in the message RMSG1 (see clause 12.3.3.2.2.1of
+// [ITUT G.993.2]). Its value lies in the range 0 (0.0-dB) to 1280 (128.0-dB) (R) (optional)
+// (2-bytes)
+//
+// Actual Rate Adaptation Mode Upstream
+// (R) (optional) (1-byte)
+//
+// Actual Impulse Noise Protection Roc Upstream
+// Actual impulse noise protection ROC upstream: The ACTINP-ROC-us attribute reports the actual INP
+// of the ROC in the upstream direction expressed in multiples of T4k. The INP of this attribute is
+// equal to the integer value multiplied by 0.1 symbols. Valid values and usage are given in clause
+// 7.5.1.34.2 of [ITUT-G.997.1]. (R) (optional) (1-byte)
+//
+// Snr Margin Roc Upstream
+// SNR margin ROC upstream: The SNRM-ROC-us attribute reports the actual signal-to-noise margin of
+// the ROC in the upstream direction. Its value ranges from 0 (-64.0-dB) to 1270 (+63.0-dB). The
+// special value 0xFFFF indicates that the attribute is out of range. (R) (optional) (2-bytes)
+//
+type Vdsl2LineInventoryAndStatusDataPart2 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ vdsl2lineinventoryandstatusdatapart2BME = &ManagedEntityDefinition{
+ Name: "Vdsl2LineInventoryAndStatusDataPart2",
+ ClassID: 169,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ GetNext,
+ ),
+ AllowedAttributeMask: 0xfffc,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("Vdsl2TransmissionSystemCapabilityXtuR", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: ByteField("Actsnrmodeus", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read), false, false, false, 2),
+ 3: Uint16Field("Upbokle", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: ByteField("Hlingus", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: ByteField("Hloggus", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: ByteField("Qlngus", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: ByteField("Snrgus", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: TableField("MrefpsdusTable", TableAttributeType, 0x0100, TableInfo{nil, 3}, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: ByteField("Trellisus", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: ByteField("Actualce", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ 11: Uint16Field("UpbokleR", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, true, false, 11),
+ 12: ByteField("ActualRateAdaptationModeUpstream", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, true, false, 12),
+ 13: ByteField("ActualImpulseNoiseProtectionRocUpstream", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, true, false, 13),
+ 14: Uint16Field("SnrMarginRocUpstream", UnsignedIntegerAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, true, false, 14),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewVdsl2LineInventoryAndStatusDataPart2 (class ID 169) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewVdsl2LineInventoryAndStatusDataPart2(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*vdsl2lineinventoryandstatusdatapart2BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/vdsl2lineinventoryandstatusdatapart3.go b/vendor/github.com/opencord/omci-lib-go/generated/vdsl2lineinventoryandstatusdatapart3.go
new file mode 100644
index 0000000..6257db3
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/vdsl2lineinventoryandstatusdatapart3.go
@@ -0,0 +1,126 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// Vdsl2LineInventoryAndStatusDataPart3ClassID is the 16-bit ID for the OMCI
+// Managed entity VDSL2 line inventory and status data part 3
+const Vdsl2LineInventoryAndStatusDataPart3ClassID ClassID = ClassID(170)
+
+var vdsl2lineinventoryandstatusdatapart3BME *ManagedEntityDefinition
+
+// Vdsl2LineInventoryAndStatusDataPart3 (class ID #170)
+// This ME extends the other xDSL line inventory and status data MEs with attributes specific to
+// VDSL2. This ME contains per-band attributes for both directions. These same attributes are
+// defined in the xDSL line inventory and status data part 2 ME, but only for a single band. [ITUT
+// G.993.2] allows for VDSL2 to have as many as five bands upstream and as many as five bands
+// downstream.
+//
+// Relationships
+// This is one of the status data MEs associated with an xDSL UNI. It is required only if VDSL2 is
+// supported by the PPTP. The ONU automatically creates or deletes an instance of this ME upon
+// creation or deletion of a PPTP xDSL UNI part 1 that supports these attributes.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the PPTP xDSL UNI part 1 ME. (R)
+// (mandatory) (2-bytes)
+//
+// Downstream Line Attenuation Per Band
+// Downstream line attenuation per band: The LATNds attribute is defined per usable band. It is the
+// squared magnitude of the channel characteristics function, H(f), averaged over this band, and
+// measured during loop diagnostic mode and initialization. The exact definition is included in the
+// relevant xDSL Recommendation. The upstream line attenuation per band ranges from 0 (0.0-dB) to
+// 1270 (+127.0-dB). The special value 0xFFFF indicates that the line attenuation per band is out
+// of the range to be represented. (R) (mandatory) (3-bands * 2-bytes-=-6-bytes)
+//
+// Upstream Line Attenuation Per Band
+// Upstream line attenuation per band: The LATNus attribute is defined per usable band. It is the
+// squared magnitude of the channel characteristics function H(f) averaged over this band, and
+// measured during loop diagnostic mode and initialization. The exact definition is included in the
+// relevant xDSL Recommendation. The upstream line attenuation per band ranges from 0 (0.0-dB) to
+// 1270 (+127.0-dB). The special value 0xFFFF indicates that line attenuation per band is out of
+// range to be represented. (R) (mandatory) (4-bands * 2-bytes-=-8-bytes)
+//
+// Downstream Signal Attenuation Per Band
+// NOTE 1 - During showtime, only a subset of the subcarriers may be transmitted by the xTU-C, as
+// compared to loop diagnostic mode and initialization. Therefore, the downstream signal
+// attenuation value during showtime may be significantly lower than the downstream signal
+// attenuation value during loop diagnostic mode and initialization.
+//
+// Upstream Signal Attenuation Per Band
+// NOTE 2 - During showtime, only a subset of the subcarriers may be transmitted by the xTU-R, as
+// compared to loop diagnostic mode and initialization. Therefore, the upstream signal attenuation
+// value during showtime may be significantly lower than the upstream signal attenuation value
+// during loop diagnostic mode and initialization.
+//
+// Downstream Snr Margin Per Band
+// Downstream SNR margin per band: The SNRMpbds attribute is defined per usable band. The
+// downstream SNR margin per band is the maximum increase of noise power received at the xTU-R,
+// such that the BER requirements are met for all downstream bearer channels. Each array value
+// ranges from 0 (-64.0-dB) to 1270 (+63.0-dB). The special value 0xFFFF indicates that the
+// attribute is out of range to be represented. (R) (mandatory) (3 bands * 2-bytes-=-6-bytes)
+//
+// Upstream Snr Margin Per Band
+// Upstream SNR margin per band: The SNRMpbus attribute is defined per usable band. The upstream
+// SNR margin per band is the maximum increase of noise power received at the xTU-C, such that the
+// BER requirements are met for all upstream bearer channels. Each array value ranges from 0
+// (-64.0-dB) to 1270 (+63.0-dB). The special value 0xFFFF indicates that the attribute is out of
+// range to be represented. (R) (mandatory) (4 bands * 2-bytes-= 8-bytes)
+//
+type Vdsl2LineInventoryAndStatusDataPart3 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ vdsl2lineinventoryandstatusdatapart3BME = &ManagedEntityDefinition{
+ Name: "Vdsl2LineInventoryAndStatusDataPart3",
+ ClassID: 170,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ ),
+ AllowedAttributeMask: 0xfc00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: MultiByteField("DownstreamLineAttenuationPerBand", OctetsAttributeType, 0x8000, 3, toOctets("AAAA"), mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint32Field("UpstreamLineAttenuationPerBand", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read), false, false, false, 2),
+ 3: MultiByteField("DownstreamSignalAttenuationPerBand", OctetsAttributeType, 0x2000, 3, toOctets("AAAA"), mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("UpstreamSignalAttenuationPerBand", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: MultiByteField("DownstreamSnrMarginPerBand", OctetsAttributeType, 0x0800, 3, toOctets("AAAA"), mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("UpstreamSnrMarginPerBand", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewVdsl2LineInventoryAndStatusDataPart3 (class ID 170) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewVdsl2LineInventoryAndStatusDataPart3(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*vdsl2lineinventoryandstatusdatapart3BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/version.go b/vendor/github.com/opencord/omci-lib-go/generated/version.go
new file mode 100644
index 0000000..672c71b
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/version.go
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+// Package generated provides code-generated OMCI types
+package generated
+
+// This file is used to track the version(s) of code used to parse the ITU
+// document and create the generated code.
+
+// VersionInfo provides information on the parser/generator version used to create
+// the generated data as well as the time of code generation
+type VersionInfo struct {
+ Name string // Type (pre-parser, parser, code-generator)
+ Version string // Version of parser project
+ CreateTime float32 // UTC linux time when ran
+ ItuDocName string // ITU G.988 document name
+ SHA256 string // ITU G.988 document SHA-256 hash
+}
+
+// Version provides version information of this generated cooe
+var Versions []VersionInfo
+
+func init() {
+ Versions = make([]VersionInfo, 0)
+
+ Versions = append(Versions,
+ VersionInfo{
+ Name: "parser",
+ Version: "0.15.1",
+ CreateTime: 1581434999.76667,
+ ItuDocName: "T-REC-G.988-2017-11.docx",
+ SHA256: "96ffc8bca6f70175c8e281e87e1cf21662d07a7502ebf595c5c3180a9972b9ac",
+ })
+
+ Versions = append(Versions,
+ VersionInfo{
+ Name: "pre-parser",
+ Version: "0.12.2",
+ CreateTime: 1574973863.791287,
+ ItuDocName: "T-REC-G.988-2017-11.docx",
+ SHA256: "96ffc8bca6f70175c8e281e87e1cf21662d07a7502ebf595c5c3180a9972b9ac",
+ })
+
+ Versions = append(Versions,
+ VersionInfo{
+ Name: "code-generator",
+ Version: "0.15.1",
+ CreateTime: 1581435018.598259,
+ ItuDocName: "T-REC-G.988-2017-11.docx",
+ SHA256: "96ffc8bca6f70175c8e281e87e1cf21662d07a7502ebf595c5c3180a9972b9ac",
+ })
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/virtualethernetinterfacepoint.go b/vendor/github.com/opencord/omci-lib-go/generated/virtualethernetinterfacepoint.go
new file mode 100644
index 0000000..dd8c881
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/virtualethernetinterfacepoint.go
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// VirtualEthernetInterfacePointClassID is the 16-bit ID for the OMCI
+// Managed entity Virtual Ethernet interface point
+const VirtualEthernetInterfacePointClassID ClassID = ClassID(329)
+
+var virtualethernetinterfacepointBME *ManagedEntityDefinition
+
+// VirtualEthernetInterfacePoint (class ID #329)
+// This ME represents the data plane hand-off point in an ONU to a separate (non-OMCI) management
+// domain. The VEIP is managed by the OMCI, and is potentially known to the non-OMCI management
+// domain. One or more Ethernet traffic flows are present at this boundary.
+//
+// Instances of this ME are automatically created and deleted by the ONU. This is necessary because
+// the required downstream priority queues are subject to physical implementation constraints. The
+// OLT may use one or more of the VEIPs created by the ONU.
+//
+// It is expected that the ONU will create one VEIP for each non-OMCI management domain. At the
+// vendor's discretion, a VEIP may be created for each traffic class.
+//
+// Relationships
+// An instance of this ME is associated with an instance of a virtual Ethernet interface between
+// OMCI and non-OMCI management domains.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. When used
+// independently of a cardholder and circuit pack, the ONU should assign IDs in the sequence 1, 2,
+// .... When used in conjunction with a cardholder and circuit pack, this 2 byte number indicates
+// the physical position of the VEIP. The first byte is the slot ID (defined in clause 9.1.5). The
+// second byte is the port ID, with the range 1..255. The values 0 and 0xFFFF are reserved. (R)
+// (mandatory) (2 bytes)
+//
+// Administrative State
+// Administrative state: This attribute locks (1) and unlocks (0) the functions performed by this
+// ME. Administrative state is further described in clause A.1.6. (R,-W) (mandatory) (1-byte)
+//
+// Operational State
+// Operational state: This attribute indicates whether the ME is capable of performing its
+// function. Valid values are enabled (0) and disabled (1). (R) (optional) (1-byte)
+//
+// Interdomain Name
+// Interdomain name: This attribute is a character string that provides an optional way to identify
+// the VEIP to a non-OMCI management domain. The interface may also be identified by its ME ID,
+// [b-IANA] assigned port and possibly other ways. If the vendor offers no information in this
+// attribute, it should be set to a sequence of null bytes. (R,-W) (optional) (25-bytes)
+//
+// Tcp_Udp Pointer
+// TCP/UDP pointer: This attribute points to an instance of the TCP/UDP config data ME, which
+// provides for OMCI management of the non-OMCI management domain's IP connectivity. If no OMCI
+// management of the non-OMCI domain's IP connectivity is required, this attribute may be omitted
+// or set to its default, a null pointer. (R,-W) (optional) (2-bytes)
+//
+// Iana Assigned Port
+// IANA assigned port: This attribute contains the TCP or UDP port value as assigned by [b-IANA]
+// for the management protocol associated with this virtual Ethernet interface. This attribute is
+// to be regarded as a hint, not as a requirement that management communications use this port; the
+// actual port and protocol are specified in the associated TCP/UDP config data ME. If no port has
+// been assigned or if the management protocol is free to be chosen at run-time, this attribute
+// should be set to 0xFFFF. (R) (mandatory) (2-bytes)
+//
+type VirtualEthernetInterfacePoint struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ virtualethernetinterfacepointBME = &ManagedEntityDefinition{
+ Name: "VirtualEthernetInterfacePoint",
+ ClassID: 329,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xf800,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("AdministrativeState", EnumerationAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: ByteField("OperationalState", EnumerationAttributeType, 0x4000, 0, mapset.NewSetWith(Read), true, true, false, 2),
+ 3: MultiByteField("InterdomainName", StringAttributeType, 0x2000, 25, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read, Write), false, true, false, 3),
+ 4: Uint16Field("TcpUdpPointer", PointerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, true, false, 4),
+ 5: Uint16Field("IanaAssignedPort", UnsignedIntegerAttributeType, 0x0800, 65535, mapset.NewSetWith(Read), false, false, false, 5),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewVirtualEthernetInterfacePoint (class ID 329) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewVirtualEthernetInterfacePoint(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*virtualethernetinterfacepointBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/vlantaggingfilterdata.go b/vendor/github.com/opencord/omci-lib-go/generated/vlantaggingfilterdata.go
new file mode 100644
index 0000000..9edacad
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/vlantaggingfilterdata.go
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// VlanTaggingFilterDataClassID is the 16-bit ID for the OMCI
+// Managed entity VLAN tagging filter data
+const VlanTaggingFilterDataClassID ClassID = ClassID(84)
+
+var vlantaggingfilterdataBME *ManagedEntityDefinition
+
+// VlanTaggingFilterData (class ID #84)
+// This ME organizes data associated with VLAN tagging. Instances of this ME are created and
+// deleted by the OLT.
+//
+// Relationships
+// An instance of this ME is associated with an instance of a MAC bridge port configuration data
+// ME. By definition, tag filtering occurs closer to the MAC bridge than the tagging operation.
+// Schematically, the ordering of the functions is as given in Figure 9.3.11-1://// Figure 9.3.11-1
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the MAC bridge port configuration
+// data ME. (R, setbycreate) (mandatory) (2-bytes)
+//
+// Vlan Filter List
+// VLAN filter list: This attribute is a list of provisioned tag control information (TCI) values
+// for the bridge port. A TCI, comprising user priority, canonical format indicator (CFI) and
+// virtual local area network identifier (VID), is represented by 2-bytes. This attribute supports
+// up to 12 VLAN entries. The first N are valid, where N is given by the number of entries
+// attribute. (R,-W, setbycreate) (mandatory) (24-bytes)
+//
+// Forward Operation
+// Table 9.3.11-1 and the actions listed are discussed in detail in the following.
+//
+// Number Of Entries
+// Number of entries: This attribute specifies the number of valid entries in the VLAN filter list.
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+type VlanTaggingFilterData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ vlantaggingfilterdataBME = &ManagedEntityDefinition{
+ Name: "VlanTaggingFilterData",
+ ClassID: 84,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xe000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: MultiByteField("VlanFilterList", OctetsAttributeType, 0x8000, 24, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"), mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: ByteField("ForwardOperation", EnumerationAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: ByteField("NumberOfEntries", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewVlanTaggingFilterData (class ID 84) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewVlanTaggingFilterData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*vlantaggingfilterdataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/vlantaggingoperationconfigurationdata.go b/vendor/github.com/opencord/omci-lib-go/generated/vlantaggingoperationconfigurationdata.go
new file mode 100644
index 0000000..8bea617
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/vlantaggingoperationconfigurationdata.go
@@ -0,0 +1,114 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// VlanTaggingOperationConfigurationDataClassID is the 16-bit ID for the OMCI
+// Managed entity VLAN tagging operation configuration data
+const VlanTaggingOperationConfigurationDataClassID ClassID = ClassID(78)
+
+var vlantaggingoperationconfigurationdataBME *ManagedEntityDefinition
+
+// VlanTaggingOperationConfigurationData (class ID #78)
+// This ME organizes data associated with VLAN tagging. Instances of this ME are created and
+// deleted by the OLT.
+//
+// NOTE 1 - The extended VLAN tagging operation configuration data of clause 9.3.13 is preferred
+// for new implementations.
+//
+// Relationships
+// Zero or one instance of this ME may exist for an instance of any ME that can terminate or modify
+// an Ethernet stream.//// When this ME is associated with a UNI-side TP, it performs its upstream classification and
+// tagging operations before offering the upstream frame to other filtering, bridging or switching
+// functions. In the downstream direction, the defined inverse operation is the last operation
+// performed on the frame before offering it to the UNI-side termination.//// When this ME is associated with an ANI-side TP, it performs its upstream classification and
+// tagging operations as the last step before queueing for transmission to the OLT, after having
+// received the upstream frame from other filtering, bridging or switching functions. In the
+// downstream direction, the defined inverse operation is the first operation performed on the
+// frame before offering it to possible filter, bridge or switch functions.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. When the
+// optional association type attribute is 0 or undefined, this attribute's value is the same as the
+// ID of the ME with which this VLAN tagging operation configuration data instance is associated,
+// which may be either a PPTP Ethernet UNI or an IP host config data or an IPv6 host config data
+// ME. Otherwise, the value of the ME ID is unconstrained except by the need to be unique. (R, set-
+// by-create) (mandatory) (2 bytes)
+//
+// Upstream Vlan Tagging Operation Mode
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Upstream Vlan Tag Tci Value
+// Upstream VLAN tag TCI value: This attribute specifies the TCI for upstream VLAN tagging. It is
+// used when the upstream VLAN tagging operation mode is 1 or 2. (R,-W, setbycreate) (mandatory)
+// (2-bytes)
+//
+// Downstream Vlan Tagging Operation Mode
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Association Type
+// The associated ME instance is identified by the associated ME pointer. (R,-W, setbycreate)
+// (optional) (1-byte)
+//
+// Associated Me Pointer
+// NOTE 3 - When the association type is xDSL, the two MSBs may be used to indicate a bearer
+// channel.
+//
+type VlanTaggingOperationConfigurationData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ vlantaggingoperationconfigurationdataBME = &ManagedEntityDefinition{
+ Name: "VlanTaggingOperationConfigurationData",
+ ClassID: 78,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xf800,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("UpstreamVlanTaggingOperationMode", EnumerationAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: Uint16Field("UpstreamVlanTagTciValue", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: ByteField("DownstreamVlanTaggingOperationMode", EnumerationAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ 4: ByteField("AssociationType", EnumerationAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 4),
+ 5: Uint16Field("AssociatedMePointer", PointerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 5),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewVlanTaggingOperationConfigurationData (class ID 78) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewVlanTaggingOperationConfigurationData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*vlantaggingoperationconfigurationdataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/voiceserviceprofile.go b/vendor/github.com/opencord/omci-lib-go/generated/voiceserviceprofile.go
new file mode 100644
index 0000000..82bda01
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/voiceserviceprofile.go
@@ -0,0 +1,151 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// VoiceServiceProfileClassID is the 16-bit ID for the OMCI
+// Managed entity Voice service profile
+const VoiceServiceProfileClassID ClassID = ClassID(58)
+
+var voiceserviceprofileBME *ManagedEntityDefinition
+
+// VoiceServiceProfile (class ID #58)
+// This ME organizes data that describe the voice service functions of the ONU. Instances of this
+// ME are created and deleted by the OLT.
+//
+// Relationships
+// An instance of this ME may be associated with zero or more instances of a VoIP voice CTP by way
+// of a VoIP media profile.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Announcement Type
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Jitter Target
+// Jitter target: This attribute specifies the target value of the jitter buffer in milliseconds.
+// The system tries to maintain the jitter buffer at the target value. The value 0 specifies
+// dynamic jitter buffer sizing. (R,-W, setbycreate) (optional) (2-bytes)
+//
+// Jitter Buffer Max
+// Jitter buffer max: This attribute specifies the maximum depth of the jitter buffer associated
+// with this service in milliseconds. The value 0 specifies that the ONU uses its internal default.
+// (R,-W, set-by-create) (optional) (2-bytes)
+//
+// Echo Cancel Ind
+// Echo cancel ind: The Boolean value true specifies that echo cancellation is on; false specifies
+// off. (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Pstn Protocol Variant
+// PSTN protocol variant: This attribute controls which variant of POTS signalling is used on the
+// associated UNIs. Its value is equal to the [ITU-T E.164] country code. The value 0 specifies
+// that the ONU uses its internal default. (R,-W, set-by-create) (optional) (2-bytes)
+//
+// Dtmf Digit Levels
+// DTMF digit levels: This attribute specifies the power level of DTMF digits that may be generated
+// by the ONU towards the subscriber set. It is a 2s complement value referred to 1-mW at the 0
+// transmission level point (TLP) (dBm0), with resolution 1-dB. The default value 0x8000 selects
+// the ONU's internal policy. (R, W, setbycreate) (optional) (2-bytes)
+//
+// Dtmf Digit Duration
+// DTMF digit duration: This attribute specifies the duration of DTMF digits that may be generated
+// by the ONU towards the subscriber set. It is specified in milliseconds. The default value 0
+// selects the ONU's internal policy. (R, W, setbycreate) (optional) (2 bytes)
+//
+// Hook Flash Minimum Time
+// Hook flash minimum time: This attribute defines the minimum duration recognized by the ONU as a
+// switchhook flash. It is expressed in milliseconds; the default value 0 selects the ONU's
+// internal policy. (R, W, setbycreate) (optional) (2 bytes)
+//
+// Hook Flash Maximum Time
+// Hook flash maximum time: This attribute defines the maximum duration recognized by the ONU as a
+// switchhook flash. It is expressed in milliseconds; the default value 0 selects the ONU's
+// internal policy. (R, W, setbycreate) (optional) (2 bytes)
+//
+// Tone Pattern Table
+// (R,-W) (optional) (N * 20 bytes)
+//
+// Tone Event Table
+// (R,-W) (optional) (N * 7 bytes).
+//
+// Ringing Pattern Table
+// (R,-W) (optional) (N * 5 bytes).
+//
+// Ringing Event Table
+// (R,-W) (optional) (N * 7 bytes).
+//
+// Network Specific Extensions Pointer
+// Network specific extensions pointer: This attribute points to a network address ME that contains
+// the path and name of a file containing network specific parameters for the associated UNIs. The
+// default value for this attribute is 0xFFFF, a null pointer. (R,-W, set-by-create) (optional)
+// (2-bytes)
+//
+type VoiceServiceProfile struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ voiceserviceprofileBME = &ManagedEntityDefinition{
+ Name: "VoiceServiceProfile",
+ ClassID: 58,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfffc,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("AnnouncementType", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: Uint16Field("JitterTarget", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 2),
+ 3: Uint16Field("JitterBufferMax", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 3),
+ 4: ByteField("EchoCancelInd", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ 5: Uint16Field("PstnProtocolVariant", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 5),
+ 6: Uint16Field("DtmfDigitLevels", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 6),
+ 7: Uint16Field("DtmfDigitDuration", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 7),
+ 8: Uint16Field("HookFlashMinimumTime", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 8),
+ 9: Uint16Field("HookFlashMaximumTime", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 9),
+ 10: MultiByteField("TonePatternTable", OctetsAttributeType, 0x0040, 20, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAA="), mapset.NewSetWith(Read, Write), false, true, false, 10),
+ 11: MultiByteField("ToneEventTable", OctetsAttributeType, 0x0020, 7, toOctets("AAAAAAAAAA=="), mapset.NewSetWith(Read, Write), false, true, false, 11),
+ 12: MultiByteField("RingingPatternTable", OctetsAttributeType, 0x0010, 5, toOctets("AAAAAAA="), mapset.NewSetWith(Read, Write), false, true, false, 12),
+ 13: MultiByteField("RingingEventTable", OctetsAttributeType, 0x0008, 7, toOctets("AAAAAAAAAA=="), mapset.NewSetWith(Read, Write), false, true, false, 13),
+ 14: Uint16Field("NetworkSpecificExtensionsPointer", UnsignedIntegerAttributeType, 0x0004, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 14),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewVoiceServiceProfile (class ID 58) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewVoiceServiceProfile(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*voiceserviceprofileBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/voipapplicationserviceprofile.go b/vendor/github.com/opencord/omci-lib-go/generated/voipapplicationserviceprofile.go
new file mode 100644
index 0000000..4aa275f
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/voipapplicationserviceprofile.go
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// VoipApplicationServiceProfileClassID is the 16-bit ID for the OMCI
+// Managed entity VoIP application service profile
+const VoipApplicationServiceProfileClassID ClassID = ClassID(146)
+
+var voipapplicationserviceprofileBME *ManagedEntityDefinition
+
+// VoipApplicationServiceProfile (class ID #146)
+// The VoIP application service profile defines attributes of calling features used in conjunction
+// with a VoIP line service. It is optional for ONUs that support VoIP services. If a non-OMCI
+// interface is used to manage SIP for VoIP, this ME is unnecessary.
+//
+// An instance of this ME is created and deleted by the OLT. A VoIP application service profile
+// instance is needed for each unique set of profile attributes.
+//
+// Relationships
+// An instance of this ME is associated with zero or more SIP user data MEs.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Cid Features
+// The recommended default value is 0x00. (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Call Waiting Features
+// The recommended default value is 0x00. (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Call Progress Or Transfer Features
+// The recommended default value is 0x0000. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Call Presentation Features
+// The recommended default value is 0x0000. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Direct Connect Feature
+// The recommended default value is 0x00. (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Direct Connect Uri Pointer
+// Direct connect URI pointer: This attribute points to a network address ME that specifies the URI
+// of the direct connect. If this attribute is set to a null pointer, no URI is defined. (R,-W,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Bridged Line Agent Uri Pointer
+// Bridged line agent URI pointer: This attribute points to a network address ME that specifies the
+// URI of the bridged line agent. If this attribute is set to a null pointer, no URI is defined.
+// (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Conference Factory Uri Pointer
+// Conference factory URI pointer: This attribute points to a network address ME that specifies the
+// URI of the conference factory. If this attribute is set to a null pointer, no URI is defined.
+// (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Dial Tone Feature Delay_ W Armline Timer New
+// Dial tone feature delay/warmline timer (new): This attribute defines the warmline timer/dial
+// tone feature delay timer (seconds). The default value 0 specifies vendor-specific
+// implementation. (R,-W) (optional) (2-bytes)
+//
+type VoipApplicationServiceProfile struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ voipapplicationserviceprofileBME = &ManagedEntityDefinition{
+ Name: "VoipApplicationServiceProfile",
+ ClassID: 146,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xff80,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("CidFeatures", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: ByteField("CallWaitingFeatures", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint16Field("CallProgressOrTransferFeatures", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ 4: Uint16Field("CallPresentationFeatures", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ 5: ByteField("DirectConnectFeature", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 5),
+ 6: Uint16Field("DirectConnectUriPointer", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 6),
+ 7: Uint16Field("BridgedLineAgentUriPointer", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 7),
+ 8: Uint16Field("ConferenceFactoryUriPointer", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 8),
+ 9: Uint16Field("DialToneFeatureDelayWArmlineTimerNew", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, Write), false, true, false, 9),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewVoipApplicationServiceProfile (class ID 146) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewVoipApplicationServiceProfile(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*voipapplicationserviceprofileBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/voipconfigdata.go b/vendor/github.com/opencord/omci-lib-go/generated/voipconfigdata.go
new file mode 100644
index 0000000..d54be1c
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/voipconfigdata.go
@@ -0,0 +1,115 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// VoipConfigDataClassID is the 16-bit ID for the OMCI
+// Managed entity VoIP config data
+const VoipConfigDataClassID ClassID = ClassID(138)
+
+var voipconfigdataBME *ManagedEntityDefinition
+
+// VoipConfigData (class ID #138)
+// The VoIP configuration data ME defines the configuration for VoIP in the ONU. The OLT uses this
+// ME to discover the VoIP signalling protocols and configuration methods supported by this ONU.
+// The OLT then uses this ME to select the desired signalling protocol and configuration method.
+// The entity is conditionally required for ONUs that offer VoIP services.
+//
+// An ONU that supports VoIP services automatically creates an instance of this ME.
+//
+// Relationships
+// One instance of this ME is associated with the ONU.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. There is only
+// one instance, number 0. (R) (mandatory) (2-bytes)
+//
+// Available Signalling Protocols
+// (R) (mandatory) (1-byte)
+//
+// Signalling Protocol Used
+// (R,-W) (mandatory) (1-byte)
+//
+// Available Voip Configuration Methods
+// Bits 5..24 are reserved by ITU-T. Bits 25..32 are reserved for proprietary vendor configuration
+// capabilities. (R) (mandatory) (4-bytes)
+//
+// Voip Configuration Method Used
+// (R,-W) (mandatory) (1-byte)
+//
+// Voip Configuration Address Pointer
+// The default value is 0xFFFF (R,-W) (mandatory) (2-bytes)
+//
+// Voip Configuration State
+// Other values are reserved. At ME instantiation, the ONU sets this attribute to 0. (R)
+// (mandatory) (1-byte)
+//
+// Retrieve Profile
+// Retrieve profile: This attribute provides a means by which the ONU may be notified that a new
+// VoIP profile should be retrieved. By setting this attribute, the OLT triggers the ONU to
+// retrieve a new profile. The actual value in the set action is ignored because it is the action
+// of setting that is important. (W) (mandatory) (1-byte)
+//
+// Profile Version
+// Profile version: This attribute is a character string that identifies the version of the last
+// retrieved profile. (R) (mandatory) (25-bytes)
+//
+type VoipConfigData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ voipconfigdataBME = &ManagedEntityDefinition{
+ Name: "VoipConfigData",
+ ClassID: 138,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xff00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("AvailableSignallingProtocols", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: ByteField("SignallingProtocolUsed", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, Write), false, false, false, 2),
+ 3: Uint32Field("AvailableVoipConfigurationMethods", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: ByteField("VoipConfigurationMethodUsed", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, false, false, 4),
+ 5: Uint16Field("VoipConfigurationAddressPointer", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, false, false, 5),
+ 6: ByteField("VoipConfigurationState", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: ByteField("RetrieveProfile", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Write), false, false, false, 7),
+ 8: MultiByteField("ProfileVersion", OctetsAttributeType, 0x0100, 25, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read), true, false, false, 8),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewVoipConfigData (class ID 138) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewVoipConfigData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*voipconfigdataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/voipfeatureaccesscodes.go b/vendor/github.com/opencord/omci-lib-go/generated/voipfeatureaccesscodes.go
new file mode 100644
index 0000000..86f671e
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/voipfeatureaccesscodes.go
@@ -0,0 +1,127 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// VoipFeatureAccessCodesClassID is the 16-bit ID for the OMCI
+// Managed entity VoIP feature access codes
+const VoipFeatureAccessCodesClassID ClassID = ClassID(147)
+
+var voipfeatureaccesscodesBME *ManagedEntityDefinition
+
+// VoipFeatureAccessCodes (class ID #147)
+// The VoIP feature access codes ME defines administrable feature access codes for the VoIP
+// subscriber. It is optional for ONUs that support VoIP services. If a non-OMCI interface is used
+// to manage VoIP signalling, this ME is unnecessary.
+//
+// Instances of this ME are created and deleted by the OLT. A VoIP feature access codes instance is
+// needed for each unique set of feature access code attributes.
+//
+// Relationships
+// An instance of this ME may be associated with one or more SIP user data MEs.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. (R) (mandatory)
+// (2-bytes)
+//
+// Cancel Call Waiting
+// Cancel call waiting: (R,-W) (optional) (5-bytes)
+//
+// Call Hold
+// Call hold: (R,-W) (optional) (5-bytes)
+//
+// Call Park
+// Call park: (R,-W) (optional) (5-bytes)
+//
+// Caller Id Activate
+// Caller ID activate: (R,-W) (optional) (5-bytes)
+//
+// Caller Id Deactivate
+// Caller ID deactivate: (R,-W) (optional) (5-bytes)
+//
+// Do Not Disturb Activation
+// Do not disturb activation: (R,-W) (optional) (5-bytes)
+//
+// Do Not Disturb Deactivation
+// Do not disturb deactivation: (R,-W) (optional) (5-bytes)
+//
+// Do Not Disturb Pin Change
+// Do not disturb PIN change: (R,-W) (optional) (5-bytes)
+//
+// Emergency Service Number
+// Emergency service number: (R,-W) (optional) (5-bytes)
+//
+// Intercom Service
+// Intercom service: (R,-W) (optional) (5-bytes)
+//
+// Unattended_Blind Call Transfer
+// Unattended/blind call transfer: (R, W) (optional) (5 bytes)
+//
+// Attended Call Transfer
+// Attended call transfer: (R, W) (optional) (5 bytes)
+//
+type VoipFeatureAccessCodes struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ voipfeatureaccesscodesBME = &ManagedEntityDefinition{
+ Name: "VoipFeatureAccessCodes",
+ ClassID: 147,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfff0,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: MultiByteField("CancelCallWaiting", OctetsAttributeType, 0x8000, 5, toOctets("AAAAAAA="), mapset.NewSetWith(Read, Write), false, true, false, 1),
+ 2: MultiByteField("CallHold", OctetsAttributeType, 0x4000, 5, toOctets("AAAAAAA="), mapset.NewSetWith(Read, Write), false, true, false, 2),
+ 3: MultiByteField("CallPark", OctetsAttributeType, 0x2000, 5, toOctets("AAAAAAA="), mapset.NewSetWith(Read, Write), false, true, false, 3),
+ 4: MultiByteField("CallerIdActivate", OctetsAttributeType, 0x1000, 5, toOctets("AAAAAAA="), mapset.NewSetWith(Read, Write), false, true, false, 4),
+ 5: MultiByteField("CallerIdDeactivate", OctetsAttributeType, 0x0800, 5, toOctets("AAAAAAA="), mapset.NewSetWith(Read, Write), false, true, false, 5),
+ 6: MultiByteField("DoNotDisturbActivation", OctetsAttributeType, 0x0400, 5, toOctets("AAAAAAA="), mapset.NewSetWith(Read, Write), false, true, false, 6),
+ 7: MultiByteField("DoNotDisturbDeactivation", OctetsAttributeType, 0x0200, 5, toOctets("AAAAAAA="), mapset.NewSetWith(Read, Write), false, true, false, 7),
+ 8: MultiByteField("DoNotDisturbPinChange", OctetsAttributeType, 0x0100, 5, toOctets("AAAAAAA="), mapset.NewSetWith(Read, Write), false, true, false, 8),
+ 9: MultiByteField("EmergencyServiceNumber", OctetsAttributeType, 0x0080, 5, toOctets("AAAAAAA="), mapset.NewSetWith(Read, Write), false, true, false, 9),
+ 10: MultiByteField("IntercomService", OctetsAttributeType, 0x0040, 5, toOctets("AAAAAAA="), mapset.NewSetWith(Read, Write), false, true, false, 10),
+ 11: MultiByteField("UnattendedBlindCallTransfer", OctetsAttributeType, 0x0020, 5, toOctets("AAAAAAA="), mapset.NewSetWith(Read, Write), false, true, false, 11),
+ 12: MultiByteField("AttendedCallTransfer", OctetsAttributeType, 0x0010, 5, toOctets("AAAAAAA="), mapset.NewSetWith(Read, Write), false, true, false, 12),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewVoipFeatureAccessCodes (class ID 147) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewVoipFeatureAccessCodes(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*voipfeatureaccesscodesBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/voiplinestatus.go b/vendor/github.com/opencord/omci-lib-go/generated/voiplinestatus.go
new file mode 100644
index 0000000..f57cda1
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/voiplinestatus.go
@@ -0,0 +1,114 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// VoipLineStatusClassID is the 16-bit ID for the OMCI
+// Managed entity VoIP line status
+const VoipLineStatusClassID ClassID = ClassID(141)
+
+var voiplinestatusBME *ManagedEntityDefinition
+
+// VoipLineStatus (class ID #141)
+// The VoIP line status ME contains line status information for POTS ports using VoIP services. An
+// ONU that supports VoIP automatically creates or deletes an instance of this ME upon creation or
+// deletion of a PPTP POTS UNI.
+//
+// Relationships
+// An instance of this ME is associated with a PPTP POTS UNI.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the PPTP POTS UNI. (R) (mandatory)
+// (2-bytes)
+//
+// Voip Codec Used
+// (R) (mandatory) (2-bytes)
+//
+// Voip Voice Server Status
+// (R) (mandatory) (1-byte)
+//
+// Voip Port Session Type
+// (R) (mandatory) (1-byte)
+//
+// Voip Call 1 Packet Period
+// Voip call 1 packet period: This attribute reports the packet period for the first call on the
+// VoIP POTS port. The value is defined in milliseconds. (R) (mandatory) (2-bytes)
+//
+// Voip Call 2 Packet Period
+// Voip call 2 packet period: This attribute reports the packet period for the second call on the
+// VoIP POTS port. The value is defined in milliseconds. (R) (mandatory) (2-bytes)
+//
+// Voip Call 1 Dest Addr
+// Voip call 1 dest addr: This attribute reports the DA for the first call on the VoIP POTS port.
+// The value is an ASCII string. (R) (mandatory) (25-bytes)
+//
+// Voip Call 2 Dest Addr
+// Voip call 2 dest addr: This attribute reports the DA for the second call on the VoIP POTS port.
+// The value is an ASCII string. (R) (mandatory) (25-bytes)
+//
+// Voip Line State
+// (R) (optional) (1 byte)
+//
+// Emergency Call Status
+// (R) (Optional) (1-byte)
+//
+type VoipLineStatus struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ voiplinestatusBME = &ManagedEntityDefinition{
+ Name: "VoipLineStatus",
+ ClassID: 141,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ ),
+ AllowedAttributeMask: 0xff80,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: Uint16Field("VoipCodecUsed", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: ByteField("VoipVoiceServerStatus", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read), false, false, false, 2),
+ 3: ByteField("VoipPortSessionType", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint16Field("VoipCall1PacketPeriod", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint16Field("VoipCall2PacketPeriod", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: MultiByteField("VoipCall1DestAddr", OctetsAttributeType, 0x0400, 25, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read), false, false, false, 6),
+ 7: MultiByteField("VoipCall2DestAddr", OctetsAttributeType, 0x0200, 25, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read), false, false, false, 7),
+ 8: ByteField("VoipLineState", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, true, false, 8),
+ 9: ByteField("EmergencyCallStatus", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read), true, true, false, 9),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewVoipLineStatus (class ID 141) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewVoipLineStatus(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*voiplinestatusBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/voipmediaprofile.go b/vendor/github.com/opencord/omci-lib-go/generated/voipmediaprofile.go
new file mode 100644
index 0000000..deae97c
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/voipmediaprofile.go
@@ -0,0 +1,150 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// VoipMediaProfileClassID is the 16-bit ID for the OMCI
+// Managed entity VoIP media profile
+const VoipMediaProfileClassID ClassID = ClassID(142)
+
+var voipmediaprofileBME *ManagedEntityDefinition
+
+// VoipMediaProfile (class ID #142)
+// The VoIP media profile ME contains settings that apply to VoIP voice encoding. This entity is
+// conditionally required for ONUs that offer VoIP services. If a non-OMCI interface is used to
+// manage VoIP signalling, this ME is unnecessary.
+//
+// An instance of this ME is created and deleted by the OLT. A VoIP media profile is needed for
+// each unique set of profile attributes.
+//
+// Relationships
+// An instance of this ME may be associated with one or more VoIP voice CTP MEs.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Fax Mode
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Voice Service Profile Pointer
+// Voice service profile pointer: Pointer to a voice service profile, which defines parameters such
+// as jitter buffering and echo cancellation. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Codec Selection 1st Order
+// (R,-W, set-by-create) (mandatory) (1-byte)
+//
+// Packet Period Selection 1st Order
+// Packet period selection (1st order): This attribute specifies the packet period selection
+// interval in milliseconds. The recommended default value is 10-ms. Valid values are 10..30-ms.
+// (R,-W, set-by-create) (mandatory) (1-byte)
+//
+// Silence Suppression 1st Order
+// Silence suppression (1st order): This attribute specifies whether silence suppression is on or
+// off. Valid values are 0-= off and 1-= on. (R,-W, set-by-create) (mandatory) (1-byte)
+//
+// Codec Selection 2nd Order
+// Codec selection (2nd order): (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Packet Period Selection 2nd Order
+// Packet period selection (2nd order): (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Silence Suppression 2nd Order
+// Silence suppression (2nd order): (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Codec Selection 3rd Order
+// Codec selection (3rd order): (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Packet Period Selection 3rd Order
+// Packet period selection (3rd order): (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Silence Suppression 3rd Order
+// Silence suppression (3rd order): (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Codec Selection 4th Order
+// Codec selection (4th order): (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Packet Period Selection 4th Order
+// Packet period selection (4th order): (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Silence Suppression 4th Order
+// Silence suppression (4th order): (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Oob Dtmf
+// OOB DTMF: This attribute specifies out-of-band DMTF carriage. When enabled (1), DTMF signals are
+// carried out of band via RTP or the associated signalling protocol. When disabled (0), DTMF tones
+// are carried in the PCM stream. (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Rtp Profile Pointer
+// RTP profile pointer: This attribute points to the associated RTP profile data ME. (R,-W,
+// setbycreate) (mandatory) (2-bytes)
+//
+type VoipMediaProfile struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ voipmediaprofileBME = &ManagedEntityDefinition{
+ Name: "VoipMediaProfile",
+ ClassID: 142,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffff,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("FaxMode", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: Uint16Field("VoiceServiceProfilePointer", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: ByteField("CodecSelection1StOrder", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ 4: ByteField("PacketPeriodSelection1StOrder", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ 5: ByteField("SilenceSuppression1StOrder", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 5),
+ 6: ByteField("CodecSelection2NdOrder", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 6),
+ 7: ByteField("PacketPeriodSelection2NdOrder", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 7),
+ 8: ByteField("SilenceSuppression2NdOrder", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 8),
+ 9: ByteField("CodecSelection3RdOrder", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 9),
+ 10: ByteField("PacketPeriodSelection3RdOrder", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 10),
+ 11: ByteField("SilenceSuppression3RdOrder", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 11),
+ 12: ByteField("CodecSelection4ThOrder", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 12),
+ 13: ByteField("PacketPeriodSelection4ThOrder", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 13),
+ 14: ByteField("SilenceSuppression4ThOrder", UnsignedIntegerAttributeType, 0x0004, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 14),
+ 15: ByteField("OobDtmf", UnsignedIntegerAttributeType, 0x0002, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 15),
+ 16: Uint16Field("RtpProfilePointer", UnsignedIntegerAttributeType, 0x0001, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 16),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewVoipMediaProfile (class ID 142) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewVoipMediaProfile(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*voipmediaprofileBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/voipvoicectp.go b/vendor/github.com/opencord/omci-lib-go/generated/voipvoicectp.go
new file mode 100644
index 0000000..f59cf44
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/voipvoicectp.go
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// VoipVoiceCtpClassID is the 16-bit ID for the OMCI
+// Managed entity VoIP voice CTP
+const VoipVoiceCtpClassID ClassID = ClassID(139)
+
+var voipvoicectpBME *ManagedEntityDefinition
+
+// VoipVoiceCtp (class ID #139)
+// The VoIP voice CTP defines the attributes necessary to associate a specified VoIP service (SIP,
+// ITUT-H.248) with a POTS UNI. This entity is conditionally required for ONUs that offer VoIP
+// services. If a non-OMCI interface is used to manage VoIP signalling, this ME is unnecessary.
+//
+// An instance of this ME is created and deleted by the OLT. A VoIP voice CTP ME is needed for each
+// PPTP POTS UNI served by VoIP.
+//
+// Relationships
+// An instance of this ME links a PPTP POTS UNI ME with a VoIP media profile and a SIP user data or
+// media gateway controller (MGC) config data ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// User Protocol Pointer
+// User protocol pointer: This attribute points to signalling protocol data. If the signalling
+// protocol used attribute of the VoIP config data ME specifies that the ONU's signalling protocol
+// is SIP, this attribute points to a SIP user data ME, which in turn points to a SIP agent config
+// data ME. If the signalling protocol is ITU-T-H.248, this attribute points directly to an MGC
+// config data ME. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Pptp Pointer
+// PPTP pointer: This attribute points to the PPTP POTS UNI ME that serves the analogue telephone
+// port. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// V O Ip Media Profile Pointer
+// VoIP media profile pointer: This attribute points to an associated VoIP media profile. (R,-W,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Signalling Code
+// (R,-W, setbycreate) (mandatory) (1-byte)
+//
+type VoipVoiceCtp struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ voipvoicectpBME = &ManagedEntityDefinition{
+ Name: "VoipVoiceCtp",
+ ClassID: 139,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xf000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("UserProtocolPointer", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: Uint16Field("PptpPointer", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint16Field("VOIpMediaProfilePointer", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ 4: ByteField("SignallingCode", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewVoipVoiceCtp (class ID 139) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewVoipVoiceCtp(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*voipvoicectpBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/vpnetworkctp.go b/vendor/github.com/opencord/omci-lib-go/generated/vpnetworkctp.go
new file mode 100644
index 0000000..922c43e
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/vpnetworkctp.go
@@ -0,0 +1,114 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// VpNetworkCtpClassID is the 16-bit ID for the OMCI
+// Managed entity VP network CTP
+const VpNetworkCtpClassID ClassID = ClassID(269)
+
+var vpnetworkctpBME *ManagedEntityDefinition
+
+// VpNetworkCtp (class ID #269)
+// NOTE - In [ITU-T G.984.4], this ME is called VP network CTP-G.
+//
+// This ME represents the termination of VP links on an ONU. It aggregates connectivity
+// functionality from the network view and alarms from the network element view as well as
+// artefacts from trails. Instances of this ME are created and deleted by the OLT.
+//
+// An instance of the VP network CTP ME can be deleted only when no ATM IW VCC TP is associated
+// with it. It is the responsibility of the OLT to ensure that this condition is met.
+//
+// Relationships
+// Zero or more instances of the VP network CTP ME may exist for each instance of the IW VCC TP ME.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. (R, setbycreate)
+// (mandatory) (2-bytes)
+//
+// Vpi Value
+// VPI value: This attribute identifies the VPI value associated with the VP link being terminated.
+// (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Uni Pointer
+// UNI pointer: This pointer indicates the xDSL PPTP UNI associated with this VP TP. The bearer
+// channel may be indicated by the two MSBs of the pointer. (R,-W, setbycreate) (mandatory)
+// (2-bytes)
+//
+// Direction
+// Direction: This attribute specifies whether the VP link is used for UNI-to-ANI (value-1), ANI-
+// to-UNI (value-2), or bidirectional (value 3) connection. (R,-W, setbycreate) (mandatory)
+// (1-byte)
+//
+// Deprecated 1
+// Deprecated 1: Not used; should be set to 0. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Deprecated 2
+// Deprecated 2: Not used; should be set to 0. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Deprecated 3
+// Deprecated 3: Not used; should be set to 0. (R,-W, setbycreate) (optional) (2-bytes)
+//
+// Deprecated 4
+// Deprecated 4: Not used; if present, should be set to 0. (R) (optional) (1-byte)
+//
+type VpNetworkCtp struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ vpnetworkctpBME = &ManagedEntityDefinition{
+ Name: "VpNetworkCtp",
+ ClassID: 269,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfe00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("VpiValue", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: Uint16Field("UniPointer", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: ByteField("Direction", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ 4: Uint16Field("Deprecated1", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, true, 4),
+ 5: Uint16Field("Deprecated2", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, true, 5),
+ 6: Uint16Field("Deprecated3", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, true, 6),
+ 7: ByteField("Deprecated4", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, true, true, 7),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewVpNetworkCtp (class ID 269) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewVpNetworkCtp(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*vpnetworkctpBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/vpperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/vpperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..4039e8e
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/vpperformancemonitoringhistorydata.go
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// VpPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity VP performance monitoring history data
+const VpPerformanceMonitoringHistoryDataClassID ClassID = ClassID(62)
+
+var vpperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// VpPerformanceMonitoringHistoryData (class ID #62)
+// This ME collects PM data associated with a VP network CTP. Instances of this ME are created and
+// deleted by the OLT.
+//
+// Relationships
+// An instance of this ME is associated with an instance of the VP network CTP ME. The performance
+// of upstream ATM flows is reported.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the VP network CTP. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 ME that
+// contains PM threshold values. Since no threshold value attribute number exceeds 7, a threshold
+// data 2 ME is optional. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Lost C 0 1 Cells
+// Lost C-= 0-+ 1 cells: This attribute counts all cell loss. It cannot distinguish between cells
+// lost because of header bit errors, ATM-level header errors, cell policing, or buffer overflows.
+// It records only loss of information, independent of the priority of the cell. (R) (mandatory)
+// (2-bytes)
+//
+// Lost C_= 0 Cells
+// Lost C-= 0 cells: This attribute counts loss of high priority cells. It cannot distinguish
+// between cells lost because of header bit errors, ATM-level header errors, cell policing, or
+// buffer overflows. It records only loss of high priority cells. (R) (mandatory) (2-bytes)
+//
+// Misinserted Cells
+// Misinserted cells: This attribute counts cells that are misrouted to a monitored VP. (R)
+// (mandatory) (2-bytes)
+//
+// Transmitted C_= 0 _ 1 Cells
+// Transmitted C-= 0-+ 1 cells: This attribute counts cells originated by the transmitting end
+// point (i.e., backward reporting is assumed). (R) (mandatory) (5-bytes)
+//
+// Transmitted C_= 0 Cells
+// Transmitted C-= 0 cells: This attribute counts high priority cells originated by the
+// transmitting end point (i.e., backward reporting is assumed). (R) (mandatory) (5-bytes)
+//
+// Impaired Block
+// Impaired blocks: This severely errored cell block counter is incremented whenever one of the
+// following events takes place: the number of misinserted cells reaches its threshold; the number
+// of bipolar violations reaches its threshold; or the number of lost cells reaches its threshold.
+// Threshold values are based on vendor-operator negotiation. (R) (mandatory) (2-bytes)
+//
+type VpPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ vpperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "VpPerformanceMonitoringHistoryData",
+ ClassID: 62,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xff00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint16Field("LostC01Cells", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint16Field("LostC=0Cells", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint16Field("MisinsertedCells", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: MultiByteField("TransmittedC=01Cells", CounterAttributeType, 0x0400, 5, toOctets("AAAAAAA="), mapset.NewSetWith(Read), false, false, false, 6),
+ 7: MultiByteField("TransmittedC=0Cells", CounterAttributeType, 0x0200, 5, toOctets("AAAAAAA="), mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint16Field("ImpairedBlock", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewVpPerformanceMonitoringHistoryData (class ID 62) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewVpPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*vpperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/xdslchannelconfigurationprofile.go b/vendor/github.com/opencord/omci-lib-go/generated/xdslchannelconfigurationprofile.go
new file mode 100644
index 0000000..e5ae2a4
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/xdslchannelconfigurationprofile.go
@@ -0,0 +1,182 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// XdslChannelConfigurationProfileClassID is the 16-bit ID for the OMCI
+// Managed entity xDSL channel configuration profile
+const XdslChannelConfigurationProfileClassID ClassID = ClassID(107)
+
+var xdslchannelconfigurationprofileBME *ManagedEntityDefinition
+
+// XdslChannelConfigurationProfile (class ID #107)
+// This ME contains the channel configuration profile for an xDSL UNI. An instance of this ME is
+// created and deleted by the OLT.
+//
+// NOTE - If [ITUT G.997.1] compatibility is required, bit rates should only be set to integer
+// multiples of 1000-bits/s. The ONU may reject attempts to set other values for bit rate
+// attributes.
+//
+// Relationships
+// An instance of this ME may be associated with zero or more instances of the PPTP xDSL UNI part
+// 1.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. The value 0 is
+// reserved. (R, setbycreate) (mandatory) (2-bytes)
+//
+// Minimum Data Rate
+// Minimum data rate: This parameter specifies the minimum desired net data rate for the bearer
+// channel. It is coded in bits per second. (R,-W, setbycreate) (mandatory) (4-bytes)
+//
+// Maximum Data Rate
+// Maximum data rate: This parameter specifies the maximum desired net data rate for the bearer
+// channel. It is coded in bits per second. (R,-W, setbycreate) (mandatory) (4-bytes)
+//
+// Rate Adaptation Ratio
+// Rate adaptation ratio: This attribute specifies the weight that should be taken into account
+// when performing rate adaptation in the direction of the bearer channel. The attribute is defined
+// as a percentage. The value 20, for example, means that 20% of the available data rate (in excess
+// of the minimum data rate summed over all bearer channels) is assigned to this bearer channel and
+// 80% to the other bearer channels. The OLT must ensure that the sum of rate adaptation ratios
+// over all bearers in one direction is 100%. (R,-W, setbycreate) (optional) (1-byte)
+//
+// Maximum Interleaving Delay
+// The delay is coded in milliseconds, varying from 2 to 63, with special meaning assigned to
+// values 0, 1 and 255. The value 0 indicates that no delay bound is imposed. The value 1 indicates
+// the fast latency path is to be used in the ITUT G.992.1 operating mode and S and D are to be
+// selected such that S- 1 and D-= 1 in ITU-T G.992.2, ITUT G.992.3, ITUT G.992.4, ITUT G.992.5 and
+// ITUT G.993.2 operating modes. The value 255 indicates a delay bound of 1-ms in ITUT-G.993.2
+// operation. (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Data Rate Threshold Upshift
+// Data rate threshold upshift: This attribute is a threshold on the cumulative data rate upshift
+// achieved over one or more bearer channel data rate adaptations. An upshift rate change (DRT up)
+// notification is issued by the PPTP xDSL UNI part 1 when the actual data rate exceeds the data
+// rate at the last entry into showtime by more than the threshold. The data rate threshold is
+// coded in bits per second. (R,-W, setbycreate) (mandatory for xDSL standards that use this
+// attribute) (4-bytes)
+//
+// Data Rate Threshold Downshift
+// Data rate threshold downshift: This attribute is a threshold on the cumulative data rate
+// downshift achieved over one or more bearer channel data rate adaptations. A downshift rate
+// change (DRT down) notification is issued by the PPTP xDSL UNI part 1 when the actual data rate
+// is below the data rate at the last entry into showtime by more than the threshold. The data rate
+// threshold is coded in bits per second. (R,-W, setbycreate) (mandatory for xDSL standards that
+// use this attribute) (4-bytes)
+//
+// Minimum Reserved Data Rate
+// Minimum reserved data rate: This attribute specifies the desired minimum reserved net data rate
+// for the bearer channel. The rate is coded in bits per second. This attribute is needed only if
+// the rate adaptation mode is set to dynamic in the xDSL line configuration profile part 1. (R,-W,
+// setbycreate) (optional) (4-bytes)
+//
+// Minimum Data Rate In Low _ Power State
+// Minimum data rate in low-power state: This parameter specifies the minimum desired net data rate
+// for the bearer channel during the low-power state (L1/L2). The power management low-power states
+// L1 and L2 are defined in [ITUT-G.992.2] and [ITUT G.992.3], respectively. The data rate is coded
+// in bits per second. (R,-W, setbycreate) (mandatory) (4-byte)
+//
+// Minimum Impulse Noise Protection
+// (R,-W, setbycreate) (optional for [ITU-T G.992.1], mandatory for other xDSL standards that use
+// this attribute) (1-byte)
+//
+// Maximum Bit Error Ratio
+// (R,-W, setbycreate) (mandatory for standards that use this attribute) (1-byte)
+//
+// Minimum Impulse Noise Protection 8_Khz
+// Minimum impulse noise protection 8-kHz: The INPmin8 attribute specifies the minimum INP for the
+// bearer channel if it is transported over DMT symbols with a subcarrier spacing of 8.625-kHz. It
+// is only valid for [ITUT-G.993.2]. INP is expressed in DMT symbols with a subcarrier spacing of
+// 8.625-kHz. It can take any integer value from 0 (default) to 16, inclusive. (R, W) (mandatory
+// for [ITUT-G.993.2]) (1 byte)
+//
+// Maximum Delay Variation
+// Maximum delay variation: The DVMAX attribute specifies the maximum value for delay variation
+// allowed in an OLR procedure. Its value ranges from 1 (0.1-ms) to 254 (25.4-ms). The special
+// value 255 specifies that no delay variation bound is imposed. (R, W) (optional: used by
+// [ITUT-G.993.2]) (1 byte)
+//
+// Channel Initialization Policy Selection
+// Channel initialization policy selection: The CIPOLICY attribute specifies the policy to
+// determine transceiver configuration at initialization. Valid values are 0..1, as defined in the
+// Recommendations that use this attribute. (R,-W) (optional) (1-byte)
+//
+// Minimum Sos Bit Rate Downstream
+// Minimum SOS bit rate downstream: The MIN-SOS-BR-ds attribute specifies the minimum net data rate
+// required for a valid SOS request in the downstream direction. The value is coded as an unsigned
+// integer representing the data rate as a multiple of 8-kbit/s. (R,-W) (optional) (4-bytes)
+//
+// Minimum Sos Bit Rate Upstream
+// Minimum SOS bit rate upstream: The MIN-SOS-BR-us attribute specifies the minimum net data rate
+// required for a valid SOS request in the upstream direction. The value is coded as an unsigned
+// integer representing the data rate as a multiple of 8-kbit/s. (R,-W) (optional) (4-bytes)
+//
+type XdslChannelConfigurationProfile struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ xdslchannelconfigurationprofileBME = &ManagedEntityDefinition{
+ Name: "XdslChannelConfigurationProfile",
+ ClassID: 107,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfffe,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint32Field("MinimumDataRate", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: Uint32Field("MaximumDataRate", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: ByteField("RateAdaptationRatio", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 3),
+ 4: ByteField("MaximumInterleavingDelay", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ 5: Uint32Field("DataRateThresholdUpshift", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 5),
+ 6: Uint32Field("DataRateThresholdDownshift", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 6),
+ 7: Uint32Field("MinimumReservedDataRate", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 7),
+ 8: Uint32Field("MinimumDataRateInLowPowerState", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 8),
+ 9: ByteField("MinimumImpulseNoiseProtection", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 9),
+ 10: ByteField("MaximumBitErrorRatio", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 10),
+ 11: ByteField("MinimumImpulseNoiseProtection8Khz", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read, Write), false, false, false, 11),
+ 12: ByteField("MaximumDelayVariation", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read, Write), false, false, false, 12),
+ 13: ByteField("ChannelInitializationPolicySelection", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read, Write), false, true, false, 13),
+ 14: Uint32Field("MinimumSosBitRateDownstream", UnsignedIntegerAttributeType, 0x0004, 0, mapset.NewSetWith(Read, Write), false, true, false, 14),
+ 15: Uint32Field("MinimumSosBitRateUpstream", UnsignedIntegerAttributeType, 0x0002, 0, mapset.NewSetWith(Read, Write), false, true, false, 15),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewXdslChannelConfigurationProfile (class ID 107) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewXdslChannelConfigurationProfile(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*xdslchannelconfigurationprofileBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/xdslchannelconfigurationprofilepart2.go b/vendor/github.com/opencord/omci-lib-go/generated/xdslchannelconfigurationprofilepart2.go
new file mode 100644
index 0000000..1552ea0
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/xdslchannelconfigurationprofilepart2.go
@@ -0,0 +1,176 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// XdslChannelConfigurationProfilePart2ClassID is the 16-bit ID for the OMCI
+// Managed entity xDSL channel configuration profile part 2
+const XdslChannelConfigurationProfilePart2ClassID ClassID = ClassID(412)
+
+var xdslchannelconfigurationprofilepart2BME *ManagedEntityDefinition
+
+// XdslChannelConfigurationProfilePart2 (class ID #412)
+// This ME contains the channel configuration profile for an xDSL UNI. An instance of this ME is
+// created and deleted by the OLT.
+//
+// NOTE - If [ITUT G.997.1] compatibility is required, bit rates should only be set to integer
+// multiples of 1000-bits/s. The ONU may reject attempts to set other values for bit rate
+// attributes.
+//
+// Relationships
+// An instance of this ME may be associated with zero or more instances of the PPTP xDSL UNI part
+// 1.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the xDSL channel configuration
+// profile. (R, setbycreate) (mandatory) (2-bytes)
+//
+// Minimum Expected Throughput For Retransmission Minetr_Rtx
+// Minimum expected throughput for retransmission (MINETR_RTX): If retransmission is used in a
+// given transmit direction, this attribute specifies the minimum expected throughput for the
+// bearer channel, in bits per second. See clause 7.3.2.1.8 of [ITU-T G.997.1]. (R,-W) (mandatory)
+// (4-bytes)
+//
+// Maximum Expected Throughput For Retransmission Maxetr_Rtx
+// Maximum expected throughput for retransmission (MAXETR_RTX): If retransmission is used in a
+// given transmit direction, this parameter specifies the maximum expected throughput for the
+// bearer channel, in bits per second. See clause 7.3.2.1.9 of [ITU-T G.997.1]. (R,-W) (mandatory)
+// (4-bytes)
+//
+// Maximum Net Data Rate For Retransmission Maxndr_Rtx
+// Maximum net data rate for retransmission (MAXNDR_RTX): If retransmission is used in a given
+// transmit direction, this parameter specifies the maximum net data rate for the bearer channel,
+// in bits per second. See clause 7.3.2.1.10 of [ITUT-G.997.1]. (R,-W) (mandatory) (4-bytes)
+//
+// Maximum Delay For Retransmission Delaymax_Rtx
+// Maximum delay for retransmission (DELAYMAX_RTX): If retransmission is used in a given transmit
+// direction, this parameter specifies the maximum for the instantaneous delay due to the effect of
+// retransmission only. This delay is defined as the integer value of this attribute multiplied by
+// 1-ms. The valid delay values are given in clause 7.3.2.11 of [ITU-T G.997.1]. (R,-W) (mandatory)
+// (1-bytes)
+//
+// Minimum Delay For Retransmission Delaymin_Rtx
+// Minimum delay for retransmission (DELAYMIN_RTX): If retransmission is used in a given transmit
+// direction, this parameter specifies the minimum for the instantaneous delay due to the effect of
+// retransmission only. This delay is defined as the integer value of this attribute multiplied by
+// 1 ms. The valid delay values are given in clause 7.3.2.12 of [ITU-T G.997.1]. (R,-W) (mandatory)
+// (1-bytes)
+//
+// Minimum Impulse Noise Protection Against Single High Impulse Noise Event Shine For Retransmission Inpmin_Shine_Rtx
+// Minimum impulse noise protection against single high impulse noise event (SHINE) for
+// retransmission (INPMIN_SHINE_RTX): If retransmission is used in a given transmit direction, this
+// parameter specifies the minimum INP against a SHINE for the bearer channel if it is transported
+// over DMT symbols with a subcarrier spacing of 4.3125-kHz. The valid range of values is given in
+// clause-7.3.2.13 of [ITU-T G.997.1]. (R,-W) (mandatory) (1-bytes)
+//
+// Minimum Impulse Noise Protection Against Shine For Retransmission For Systems Using 8.625 Khz Subcarrier Spacing Inpmin8_Shine_Rtx
+// Minimum impulse noise protection against SHINE for retransmission for systems using 8.625 kHz
+// subcarrier spacing (INPMIN8_SHINE_RTX): If retransmission is used in a given transmit direction,
+// this parameter specifies the minimum INP against SHINE for the bearer channel if it is
+// transported over DMT symbols with a subcarrier spacing of 8.625-kHz. The valid range of values
+// is given in clause 7.3.2.14 of [ITUT-G.997.1]. (R,-W) (mandatory) (1-bytes)
+//
+// Shineratio_Rtx
+// SHINERATIO_RTX: If retransmission is used in a given transmit direction, this parameter
+// specifies the SHINE ratio. This ratio is defined as the integer value of this attribute
+// multiplied by 0.001. The valid range of values is given in clause-7.3.2.15 of [ITU-T G.997.1].
+// (R,-W) (mandatory) (1-bytes)
+//
+// Minimum Impulse Noise Protection Against Rein For Retransmission Inpmin_Rein_Rtx
+// Minimum impulse noise protection against REIN for retransmission (INPMIN_REIN_RTX): If
+// retransmission is used in a given transmit direction, this parameter specifies the minimum INP
+// against REIN for the bearer channel if it is transported over DMT symbols with a subcarrier
+// spacing of 4.3125 kHz. The valid range of values is given in clause-7.3.2.16 of [ITU-T G.997.1].
+// (R,-W) (mandatory) (1-bytes)
+//
+// Minimum Impulse Noise Protection Against Rein For Retransmission For Systems Using 8.625_Khz Subcarrier Spacing Inpmin8_Rein_Rtx
+// Minimum impulse noise protection against REIN for retransmission for systems using 8.625-kHz
+// subcarrier spacing (INPMIN8_REIN_RTX): If retransmission is used in a given transmit direction,
+// this parameter specifies the minimum INP against REIN for the bearer channel if it is
+// transported over DMT symbols with a subcarrier spacing of 8.625 kHz. The valid range of values
+// is given in clause 7.3.2.17 of [ITU-T G.997.1]. (R,-W) (mandatory) (1-bytes)
+//
+// Rein Inter_Arrival Time For Retransmission Iat_Rein_Rtx
+// REIN inter-arrival time for retransmission (IAT_REIN_RTX): If retransmission is used in a given
+// transmit direction, this parameter specifies the IAT that shall be assumed for REIN protection.
+// The valid range of values is given in clause 7.3.2.18 of [ITU-T G.997.1]. (R,-W) (mandatory)
+// (1-bytes)
+//
+// Target Net Data Rate Target_Ndr
+// Target net data rate (TARGET_NDR): If retransmission is not used in a given transmit direction,
+// this parameter specifies the target net data of the bearer channel, in bits per second. See
+// clause 7.3.2.19.1 of [ITU-T G.997.1]. (R,-W) (mandatory) (4-bytes)
+//
+// Target Expected Throughput For Retransmission Target_Etr
+// Target expected throughput for retransmission (TARGET_ETR): If retransmission is used in a given
+// transmit direction, this parameter specifies the target expected throughput for the bearer
+// channel, in bits per second. See clause 7.3.2.19.2 of [ITUT-G.997.1]. (R,-W) (mandatory)
+// (4-bytes)
+//
+type XdslChannelConfigurationProfilePart2 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ xdslchannelconfigurationprofilepart2BME = &ManagedEntityDefinition{
+ Name: "XdslChannelConfigurationProfilePart2",
+ ClassID: 412,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfff8,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint32Field("MinimumExpectedThroughputForRetransmissionMinetrRtx", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: Uint32Field("MaximumExpectedThroughputForRetransmissionMaxetrRtx", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, Write), false, false, false, 2),
+ 3: Uint32Field("MaximumNetDataRateForRetransmissionMaxndrRtx", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), false, false, false, 3),
+ 4: ByteField("MaximumDelayForRetransmissionDelaymaxRtx", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, false, false, 4),
+ 5: ByteField("MinimumDelayForRetransmissionDelayminRtx", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, false, false, 5),
+ 6: ByteField("MinimumImpulseNoiseProtectionAgainstSingleHighImpulseNoiseEventShineForRetransmissionInpminShineRtx", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, Write), false, false, false, 6),
+ 7: ByteField("MinimumImpulseNoiseProtectionAgainstShineForRetransmissionForSystemsUsing8625KhzSubcarrierSpacingInpmin8ShineRtx", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, Write), false, false, false, 7),
+ 8: ByteField("ShineratioRtx", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, Write), false, false, false, 8),
+ 9: ByteField("MinimumImpulseNoiseProtectionAgainstReinForRetransmissionInpminReinRtx", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, Write), false, false, false, 9),
+ 10: ByteField("MinimumImpulseNoiseProtectionAgainstReinForRetransmissionForSystemsUsing8625KhzSubcarrierSpacingInpmin8ReinRtx", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read, Write), false, false, false, 10),
+ 11: ByteField("ReinInterArrivalTimeForRetransmissionIatReinRtx", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read, Write), false, false, false, 11),
+ 12: Uint32Field("TargetNetDataRateTargetNdr", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read, Write), false, false, false, 12),
+ 13: Uint32Field("TargetExpectedThroughputForRetransmissionTargetEtr", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read, Write), false, false, false, 13),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewXdslChannelConfigurationProfilePart2 (class ID 412) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewXdslChannelConfigurationProfilePart2(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*xdslchannelconfigurationprofilepart2BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/xdslchanneldownstreamstatusdata.go b/vendor/github.com/opencord/omci-lib-go/generated/xdslchanneldownstreamstatusdata.go
new file mode 100644
index 0000000..0715a85
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/xdslchanneldownstreamstatusdata.go
@@ -0,0 +1,162 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// XdslChannelDownstreamStatusDataClassID is the 16-bit ID for the OMCI
+// Managed entity xDSL channel downstream status data
+const XdslChannelDownstreamStatusDataClassID ClassID = ClassID(102)
+
+var xdslchanneldownstreamstatusdataBME *ManagedEntityDefinition
+
+// XdslChannelDownstreamStatusData (class ID #102)
+// This ME contains downstream channel status data for an xDSL UNI. The ONU automatically creates
+// or deletes instances of this ME upon the creation or deletion of a PPTP xDSL UNI part 1.
+//
+// NOTE - [ITU-T G.997.1] specifies that bit rate attributes have a granularity of 1000-bit/s. If
+// ITU-T G.997.1 compliance is required, the ONU should only report values with this granularity.
+//
+// Relationships
+// One or more instances of this ME are associated with an instance of an xDSL UNI.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. The two MSBs of
+// the first byte are the bearer channel ID. Excluding the first 2-bits of the first byte, the
+// remaining part of the ME ID is identical to that of this ME's parent PPTP xDSL UNI part 1. (R)
+// (mandatory) (2-bytes)
+//
+// Actual Interleaving Delay
+// Actual interleaving delay: This attribute is the actual one-way interleaving delay introduced by
+// the PMS-TC between the alpha and beta reference points, excluding delay in the L1 and L2 states.
+// In the L1 and L2 states, the attribute contains the interleaving delay in the previous L0 state.
+// For ADSL, this attribute is derived from the S and D attributes as cap(S*D)/4 ms, where S is the
+// number of symbols per codeword, D is the interleaving depth and cap() denotes rounding to the
+// next higher integer. For [ITU-T G.993.2], this attribute is computed according to the formula in
+// clause 9.7 of [ITUT-G.993.2]. The actual interleaving delay is coded in milliseconds, rounded to
+// the nearest millisecond. (R) (mandatory) (1-byte)
+//
+// Actual Data Rate
+// Actual data rate: This parameter reports the actual net data rate of the bearer channel,
+// excluding the rate in the L1 and L2 states. In the L1 or L2 state, the parameter contains the
+// net data rate in the previous L0 state. The data rate is coded in bits per second. (R)
+// (mandatory) (4-bytes)
+//
+// Previous Data Rate
+// Previous data rate: This parameter reports the previous net data rate of the bearer channel just
+// before the latest rate change event occurred, excluding transitions between the L0 state and the
+// L1 or L2 states. A rate change can occur at a power management state transition, e.g., at full
+// or short initialization, fast retrain or power down, or at a dynamic rate adaptation. The rate
+// is coded in bits per second (R) (mandatory) (4-bytes)
+//
+// Actual Impulse Noise Protection
+// Actual impulse noise protection: The ACTINP attribute reports the actual INP on the bearer
+// channel in the L0 state. In the L1 or L2 state, the attribute contains the INP in the previous
+// L0 state. The value of this attribute is a number of DMT symbols, with a granularity of 0.1
+// symbols. Its range is from 0 (0.0 symbols) to 254 (25.4 symbols). The special value 255
+// indicates an ACTINP higher than 25.4. (R) (optional for [ITU-T G.992.1], mandatory for other
+// xDSL Recommendations that support this attribute) (1-byte)
+//
+// Actual Size Of Reed_Solomon Codeword
+// Actual size of Reed-Solomon codeword: The NFEC attribute reports the actual Reed-Solomon
+// codeword size used in the latency path in which the bearer channel is transported. The value is
+// coded in bytes, and ranges from 0..255. (R) (mandatory for ITUT-G.993.2 VDSL2, optional for
+// others) (1-byte)
+//
+// Actual Number Of Reed_Solomon Redundancy Bytes
+// Actual number of Reed-Solomon redundancy bytes: The RFEC attribute reports the actual number of
+// Reed-Solomon redundancy bytes per codeword used in the latency path in which the bearer channel
+// is transported. The value is coded in bytes, and ranges from 0..16. The value 0 indicates no
+// Reed-Solomon coding. (R) (mandatory for ITUT-G.993.2 VDSL2, optional for others) (1-byte)
+//
+// Actual Number Of Bits Per Symbol
+// Actual number of bits per symbol: The LSYMB attribute reports the actual number of bits per
+// symbol assigned to the latency path in which the bearer channel is transported, excluding
+// trellis overhead. The value is coded in bits, and ranges from 0..65535. (R) (mandatory for [TU-T
+// G.993.2 VDSL2, optional for others) (2-bytes)
+//
+// Actual Interleaving Depth
+// Actual interleaving depth: The INTLVDEPTH attribute reports the actual depth of the interleaver
+// used in the latency path in which the bearer channel is transported. The value ranges from
+// 1..4096 in steps of 1. The value 1 indicates no interleaving. (R) (mandatory for ITU-T G.993.2
+// VDSL2, optional for others) (2-bytes)
+//
+// Actual Interleaving Block Length
+// Actual interleaving block length: The INTLVBLOCK attribute reports the actual block length of
+// the interleaver used in the latency path in which the bearer channel is transported. The value
+// ranges from 4..255 in steps of 1. (R) (mandatory for ITU-T G.993.2 VDSL2, undefined for others)
+// (1-byte)
+//
+// Actual Latency Path
+// Actual latency path: The LPATH attribute reports the index of the actual latency path in which
+// the bearer channel is transported. Valid values are 0..3. In [ITUT-G.992.1], the fast path is
+// mapped to latency index 0; the interleaved path to index 1. (R) (mandatory for ITU-T G.993.2
+// VDSL2, optional for others) (1-byte)
+//
+// Actual Impulse Noise Protection Against R Epetitive E Lectrical I Mpulse N Oise Actinp_Rein
+// Actual impulse noise protection against repetitive electrical impulse noise (ACTINP_REIN): If
+// retransmission is used in a given transmit direction, this parameter reports the actual INP
+// against REIN on the bearer channel. The INP of this attribute is equal to the integer value
+// multiplied by 0.1 symbols. Valid values and usage are given in clause 7.5.2.9 of [ITU-T G.997.1]
+// (R) (optional) (1-byte)
+//
+type XdslChannelDownstreamStatusData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ xdslchanneldownstreamstatusdataBME = &ManagedEntityDefinition{
+ Name: "XdslChannelDownstreamStatusData",
+ ClassID: 102,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ ),
+ AllowedAttributeMask: 0xffe0,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("ActualInterleavingDelay", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint32Field("ActualDataRate", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read), false, false, false, 2),
+ 3: Uint32Field("PreviousDataRate", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: ByteField("ActualImpulseNoiseProtection", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: ByteField("ActualSizeOfReedSolomonCodeword", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: ByteField("ActualNumberOfReedSolomonRedundancyBytes", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint16Field("ActualNumberOfBitsPerSymbol", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint16Field("ActualInterleavingDepth", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: ByteField("ActualInterleavingBlockLength", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: ByteField("ActualLatencyPath", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ 11: ByteField("ActualImpulseNoiseProtectionAgainstREpetitiveELectricalIMpulseNOiseActinpRein", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, true, false, 11),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewXdslChannelDownstreamStatusData (class ID 102) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewXdslChannelDownstreamStatusData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*xdslchanneldownstreamstatusdataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/xdslchannelupstreamstatusdata.go b/vendor/github.com/opencord/omci-lib-go/generated/xdslchannelupstreamstatusdata.go
new file mode 100644
index 0000000..1ff3877
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/xdslchannelupstreamstatusdata.go
@@ -0,0 +1,157 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// XdslChannelUpstreamStatusDataClassID is the 16-bit ID for the OMCI
+// Managed entity xDSL channel upstream status data
+const XdslChannelUpstreamStatusDataClassID ClassID = ClassID(103)
+
+var xdslchannelupstreamstatusdataBME *ManagedEntityDefinition
+
+// XdslChannelUpstreamStatusData (class ID #103)
+// This ME contains upstream channel status data for an xDSL UNI. The ONU automatically creates or
+// deletes instances of this ME upon the creation or deletion of a PPTP xDSL UNI part 1.
+//
+// Relationships
+// One or more instances of this ME are associated with an instance of an xDSL UNI.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. The two MSBs of
+// the first byte are the bearer channel ID. Excluding the first 2-bits of the first byte, the
+// remaining part of the ME ID is identical to that of this ME's parent PPTP xDSL UNI part 1. (R)
+// (mandatory) (2-bytes)
+//
+// Actual Interleaving Delay
+// Actual interleaving delay: This attribute is the actual one-way interleaving delay introduced by
+// the PMS-TC between the alpha and beta reference points, excluding the L1 and L2 states. In the
+// L1 and L2 states, this attribute contains the interleaving delay in the previous L0 state. For
+// ADSL, this attribute is derived from the S and D attributes as cap(S*D)/4-ms, where S is the
+// number of symbols per codeword, D is the interleaving depth and cap() denotes rounding to the
+// next higher integer. For [ITU-T G.993.2], this attribute is computed according to the formula in
+// clause 9.7 of [ITUT G.993.2]. The actual interleaving delay is coded in milliseconds, rounded to
+// the nearest millisecond. (R) (mandatory) (1-byte)
+//
+// Actual Data Rate
+// Actual data rate: This parameter reports the actual net data rate of the bearer channel,
+// excluding the L1 and L2 states. In the L1 or L2 state, the parameter contains the net data rate
+// in the previous L0 state. The data rate is coded in bits per second. (R) (mandatory) (4-bytes)
+//
+// Previous Data Rate
+// Previous data rate: This parameter reports the previous net data rate of the bearer channel just
+// before the latest rate change event occurred, excluding transitions between the L0 state and the
+// L1 or L2 state. A rate change can occur at a power management state transition, e.g., at full or
+// short initialization, fast retrain or power down, or at a dynamic rate adaptation. The rate is
+// coded in bits per second. (R) (mandatory) (4-bytes)
+//
+// Actual Impulse Noise Protection
+// Actual impulse noise protection: The ACTINP attribute reports the actual INP on the bearer
+// channel in the L0 state. In the L1 or L2 state, the attribute contains the INP in the previous
+// L0 state. The value is coded in fractions of DMT symbols with a granularity of 0.1 symbols. The
+// range is from 0 (0.0 symbols) to 254 (25.4 symbols). The special value 255 indicates an ACTINP
+// higher than 25.4. (R) (mandatory for ITU-T G.993.2 VDSL2, optional for other xDSL
+// Recommendations that support it) (1-byte)
+//
+// Impulse Noise Protection Reporting Mode
+// Impulse noise protection reporting mode: The INPREPORT attribute reports the method used to
+// compute the ACTINP. If set to 0, the ACTINP is computed according to the INP_no_erasure formula
+// (clause 9.6 of [ITUT G.993.2]). If set to 1, ACTINP is the value estimated by the xTU receiver.
+// (R) (mandatory for ITU-T G.993.2 VDSL2) (1-byte)
+//
+// Actual Size Of Reed_Solomon Codeword
+// Actual size of Reed-Solomon codeword: The NFEC attribute reports the actual Reed-Solomon
+// codeword size used in the latency path in which the bearer channel is transported. Its value is
+// coded in bytes in the range 0..255. (R) (mandatory for ITU-T G.993.2 VDSL2, optional for others)
+// (1-byte)
+//
+// Actual Number Of Reed_Solomon Redundancy Bytes
+// Actual number of Reed-Solomon redundancy bytes: The RFEC attribute reports the actual number of
+// Reed-Solomon redundancy bytes per codeword used in the latency path in which the bearer channel
+// is transported. Its value is coded in bytes in the range 0..16. The value 0 indicates no Reed-
+// Solomon coding. (R) (mandatory for ITUT-G.993.2 VDSL2, optional for others) (1-byte)
+//
+// Actual Number Of Bits Per Symbol
+// Actual number of bits per symbol: The LSYMB attribute reports the actual number of bits per
+// symbol assigned to the latency path in which the bearer channel is transported, excluding
+// trellis overhead. Its value is coded in bits in the range 0..65535. (R) (mandatory for
+// ITUT-G.993.2 VDSL2, optional for others) (2-bytes)
+//
+// Actual Interleaving Depth
+// Actual interleaving depth: The INTLVDEPTH attribute reports the actual depth of the interleaver
+// used in the latency path in which the bearer channel is transported. Its value ranges from
+// 1..4096 in steps of 1. The value 1 indicates no interleaving. (R) (mandatory for ITU-T G.993.2
+// VDSL2, optional for others) (2-bytes)
+//
+// Actual Interleaving Block Length
+// Actual interleaving block length: The INTLVBLOCK attribute reports the actual block length of
+// the interleaver used in the latency part in which the bearer channel is transported. Its value
+// ranges from 4..255 in steps of 1. (R) (mandatory forITU-T G.993.2 VDSL2, optional for others)
+// (1-byte)
+//
+// Actual Latency Path
+// Actual latency path: The LPATH attribute reports the index of the actual latency path in which
+// the bearer channel is transported. Valid values are 0..3. In [ITUT-G.992.1], the fast path is
+// mapped to latency index 0; the interleaved path to index 1. (R) (mandatory for ITU-T G.993.2
+// VDSL2, optional for others) (1-byte)
+//
+type XdslChannelUpstreamStatusData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ xdslchannelupstreamstatusdataBME = &ManagedEntityDefinition{
+ Name: "XdslChannelUpstreamStatusData",
+ ClassID: 103,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ ),
+ AllowedAttributeMask: 0xffe0,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("ActualInterleavingDelay", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint32Field("ActualDataRate", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read), false, false, false, 2),
+ 3: Uint32Field("PreviousDataRate", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: ByteField("ActualImpulseNoiseProtection", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: ByteField("ImpulseNoiseProtectionReportingMode", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: ByteField("ActualSizeOfReedSolomonCodeword", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: ByteField("ActualNumberOfReedSolomonRedundancyBytes", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint16Field("ActualNumberOfBitsPerSymbol", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: Uint16Field("ActualInterleavingDepth", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: ByteField("ActualInterleavingBlockLength", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ 11: ByteField("ActualLatencyPath", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, false, false, 11),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewXdslChannelUpstreamStatusData (class ID 103) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewXdslChannelUpstreamStatusData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*xdslchannelupstreamstatusdataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/xdsldownstreamrfibandsprofile.go b/vendor/github.com/opencord/omci-lib-go/generated/xdsldownstreamrfibandsprofile.go
new file mode 100644
index 0000000..e5a1916
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/xdsldownstreamrfibandsprofile.go
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// XdslDownstreamRfiBandsProfileClassID is the 16-bit ID for the OMCI
+// Managed entity xDSL downstream RFI bands profile
+const XdslDownstreamRfiBandsProfileClassID ClassID = ClassID(111)
+
+var xdsldownstreamrfibandsprofileBME *ManagedEntityDefinition
+
+// XdslDownstreamRfiBandsProfile (class ID #111)
+// This ME contains the downstream RFI bands profile for an xDSL UNI. Instances of this ME are
+// created and deleted by the OLT.
+//
+// Relationships
+// An instance of this ME may be associated with zero or more instances of the PPTP xDSL UNI part
+// 1.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. The value 0 is
+// reserved. (R, setbycreate) (mandatory) (2-bytes)
+//
+// Downstream Rfi Bands Table
+// (R,-W) (mandatory for [ITU-T G.992.5], [ITU-T G.993.2]) (5 * N bytes where N is the number of
+// RFI bands)
+//
+// Bands Valid
+// (R,-W) (mandatory) (1-byte)
+//
+type XdslDownstreamRfiBandsProfile struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ xdsldownstreamrfibandsprofileBME = &ManagedEntityDefinition{
+ Name: "XdslDownstreamRfiBandsProfile",
+ ClassID: 111,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ GetNext,
+ Set,
+ ),
+ AllowedAttributeMask: 0xc000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: TableField("DownstreamRfiBandsTable", TableAttributeType, 0x8000, TableInfo{nil, 5}, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: ByteField("BandsValid", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, Write), false, false, false, 2),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewXdslDownstreamRfiBandsProfile (class ID 111) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewXdslDownstreamRfiBandsProfile(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*xdsldownstreamrfibandsprofileBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/xdslimpulsenoisemonitorperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/xdslimpulsenoisemonitorperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..6f725aa
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/xdslimpulsenoisemonitorperformancemonitoringhistorydata.go
@@ -0,0 +1,129 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// XdslImpulseNoiseMonitorPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity xDSL impulse noise monitor performance monitoring history data
+const XdslImpulseNoiseMonitorPerformanceMonitoringHistoryDataClassID ClassID = ClassID(324)
+
+var xdslimpulsenoisemonitorperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// XdslImpulseNoiseMonitorPerformanceMonitoringHistoryData (class ID #324)
+// This ME collects PM data from the impulse noise monitor function at both near and far ends.
+// Instances of this ME are created and deleted by the OLT. Note that, unlike most xDSL PM, [ITU-T
+// G.997.1] only requires current and previous 15-min interval storage; a longer view of this PM is
+// not expected at 15-min granularity.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME may be associated with an xDSL UNI. This ME is meaningful only for ITUT
+// G.993.2 VDSL2, [ITUT G.992.3] and [ITUT-G.992.5].
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. The ME ID is
+// identical to that of this ME's parent PPTP xDSL UNI part 1. (R, setbycreate) (mandatory)
+// (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: No thresholds are defined for this ME. For uniformity with other PM, the
+// attribute is retained and shown as mandatory, but it should be set to a null pointer. (R,-W,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Inm Inpeq Histogram Table
+// INM INPEQ histogram table: INMINPEQ1..17-L is a count of the near-end INMAINPEQi anomalies
+// occurring on the line during the accumulation period. This parameter is subject to inhibiting -
+// see clause 7.2.7.13 of [ITUT-G.997.1]. (R) (optional) (2-bytes * 17 entries-= 34-bytes)
+//
+// Inm Total Measurement
+// INM total measurement: INMME-L is a count of the near-end INMAME anomalies occurring on the line
+// during the accumulation period. This parameter is subject to inhibiting - see clause 7.2.7.13 of
+// [ITUT G.997.1]. (R) (optional) (2-bytes)
+//
+// Inm Iat Histogram
+// INM IAT histogram: INMIAT0..7-L is a count of the near-end INMAIATi anomalies occurring on the
+// line during the accumulation period. This parameter is subject to inhibiting - see clause
+// 7.2.7.13 of [ITUT G.997.1]. (R) (optional) (2-bytes-* 8 entries-= 16-bytes)
+//
+// Inm Inpeq Histogram Lfe Table
+// INM INPEQ histogram LFE table: INMINPEQ1..17-LFE is a count of the far-end INMAINPEQi anomalies
+// occurring on the line during the accumulation period. This parameter is subject to inhibiting -
+// see clause 7.2.7.13 of [ITUT-G.997.1]. (R) (optional) (2-bytes * 17 entries-= 34-bytes)
+//
+// Inm Total Measurement Lfe
+// INM total measurement LFE: INMME-LFE is a count of the far-end INMAME anomalies occurring on the
+// line during the accumulation period. This parameter is subject to inhibiting - see clause
+// 7.2.7.13 of [ITUT G.997.1]. (R) (optional) (2-bytes)
+//
+// Inm Iat Histogram Lfe
+// INM IAT histogram LFE: INMIAT0..7-LFE is a count of the far-end INMAIATi anomalies occurring on
+// the line during the accumulation period. This parameter is subject to inhibiting - see clause
+// 7.2.7.13 of [ITUT G.997.1]. (R) (optional) (2-bytes-* 8 entries-= 16-bytes)
+//
+type XdslImpulseNoiseMonitorPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ xdslimpulsenoisemonitorperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "XdslImpulseNoiseMonitorPerformanceMonitoringHistoryData",
+ ClassID: 324,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ GetNext,
+ Set,
+ ),
+ AllowedAttributeMask: 0xff00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: TableField("InmInpeqHistogramTable", TableAttributeType, 0x2000, TableInfo{nil, 2}, mapset.NewSetWith(Read), false, true, false, 3),
+ 4: Uint16Field("InmTotalMeasurement", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, true, false, 4),
+ 5: Uint16Field("InmIatHistogram", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, true, false, 5),
+ 6: TableField("InmInpeqHistogramLfeTable", TableAttributeType, 0x0400, TableInfo{nil, 2}, mapset.NewSetWith(Read), false, true, false, 6),
+ 7: Uint16Field("InmTotalMeasurementLfe", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, true, false, 7),
+ 8: Uint16Field("InmIatHistogramLfe", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, true, false, 8),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewXdslImpulseNoiseMonitorPerformanceMonitoringHistoryData (class ID 324) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewXdslImpulseNoiseMonitorPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*xdslimpulsenoisemonitorperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/xdsllineconfigurationprofilepart2.go b/vendor/github.com/opencord/omci-lib-go/generated/xdsllineconfigurationprofilepart2.go
new file mode 100644
index 0000000..f2a62a7
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/xdsllineconfigurationprofilepart2.go
@@ -0,0 +1,183 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// XdslLineConfigurationProfilePart2ClassID is the 16-bit ID for the OMCI
+// Managed entity xDSL line configuration profile part 2
+const XdslLineConfigurationProfilePart2ClassID ClassID = ClassID(105)
+
+var xdsllineconfigurationprofilepart2BME *ManagedEntityDefinition
+
+// XdslLineConfigurationProfilePart2 (class ID #105)
+// The overall xDSL line configuration profile is modelled in several parts, all of which are
+// associated together through a common ME ID (the client PPTP xDSL UNI part 1 has a single
+// pointer, which refers to the entire set of line configuration profile parts).
+//
+// Relationships
+// An instance of this ME may be associated with zero or more instances of an xDSL UNI.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. All xDSL and
+// VDSL2 line configuration profiles and extensions that pertain to a given PPTP xDSL UNI must
+// share a common ME ID. (R, setbycreate) (mandatory) (2-bytes)
+//
+// Downstream Minimum Time Interval For Upshift Rate Adaptation
+// Downstream minimum time interval for upshift rate adaptation: This parameter defines the
+// interval during which the downstream noise margin must remain above the downstream upshift noise
+// margin before the xTU-R attempts to increase the downstream net data rate. Its value ranges from
+// 0 to 16383-s. (R,-W, setbycreate) (optional) (2-bytes)
+//
+// Upstream Minimum Time Interval For Upshift Rate Adaptation
+// Upstream minimum time interval for upshift rate adaptation: This parameter defines the interval
+// during which the upstream noise margin must remain above the upstream upshift noise margin
+// before the xTU-C attempts to increase the upstream net data rate. Its value ranges from 0 to
+// 16383-s. (R,-W, setbycreate) (optional) (2-bytes)
+//
+// Downstream Downshift Noise Margin
+// Downstream downshift noise margin: If the downstream noise margin is below the downstream
+// downshift noise margin and remains there for more than the downstream minimum time interval for
+// downshift rate adaptation, the xTU-R attempts to decrease the downstream net data rate. This
+// attribute's value ranges from 0 (0.0 dB) to 310 (31.0 dB). (R,-W, setbycreate) (optional)
+// (2-bytes)
+//
+// Upstream Downshift Noise Margin
+// Upstream downshift noise margin: If the upstream noise margin is below the upstream downshift
+// noise margin and remains there for more than the upstream minimum time interval for downshift
+// rate adaptation, the xTUC attempts to decrease the upstream net data rate. This attribute's
+// value ranges from 0 (0.0 dB) to 310 (31.0 dB). (R,-W, setbycreate) (optional) (2-bytes)
+//
+// Downstream Minimum Time Interval For Downshift Rate Adaptation
+// Downstream minimum time interval for downshift rate adaptation: This parameter defines the
+// interval during which the downstream noise margin must remain below the downstream downshift
+// noise margin before the xTU-R attempts to decrease the downstream net data rate. Its value
+// ranges from 0 to 16383-s. (R,-W, setbycreate) (optional) (2-bytes)
+//
+// Upstream Minimum Time Interval For Downshift Rate Adaptation
+// Upstream minimum time interval for downshift rate adaptation: This parameter defines the
+// interval during which the upstream noise margin must remain below the upstream downshift noise
+// margin before the xTU-C attempts to decrease the upstream net data rate. Its value ranges from 0
+// to 16383-s. (R,-W, setbycreate) (optional) (2-bytes)
+//
+// Xtu Impedance State Forced
+// (R,-W, setbycreate) (optional) (1-byte)
+//
+// L0_Time
+// L0-time: This parameter specifies the minimum time between an exit from the L2 state and the
+// next entry into the L2 state. It is only valid for [ITUT-G.992.3], [ITUT-G.992.4] and
+// [ITUT-G.992.5]. It ranges from 0 to 255-s. (R,-W, setbycreate) (mandatory) (1 byte)
+//
+// L2_Time
+// L2-time: This parameter specifies the minimum time between an entry into the L2 state and the
+// first power trim in the L2 state, or between two consecutive power trims in the L2 state. It is
+// only valid for [ITUT-G.992.3], [ITUT-G.992.4] and [ITUT-G.992.5]. It ranges from 0 to 255-s. (R,
+// W, setbycreate) (mandatory) (1 byte)
+//
+// Downstream Maximum Nominal Power Spectral Density
+// Downstream maximum nominal power spectral density: This attribute specifies the maximum nominal
+// transmit PSD in the downstream direction during initialization and showtime. A single
+// MAXNOMPSDds attribute is defined per mode enabled in the xTSE line configuration attribute. It
+// is only valid for [ITUT-G.992.3], [ITUT-G.992.4] and [ITUT-G.992.5]. Its value ranges from 0
+// (60.0-dBm/Hz) to 300 (-30-dBm/Hz). (R, W, setbycreate) (mandatory) (2 bytes)
+//
+// Upstream Maximum Nominal Power Spectral Density
+// Upstream maximum nominal power spectral density: This attribute specifies the maximum nominal
+// transmit PSD in the upstream direction during initialization and showtime. A single MAXNOMPSDus
+// attribute is defined per mode enabled in the xTSE line configuration attribute. It is only valid
+// for [ITUT-G.992.3], [ITUT-G.992.4] and [ITUT-G.993.2]. Its value ranges from 0 (-60.0-dBm/Hz) to
+// 300 (-30-dBm/Hz). (R, W, setbycreate) (mandatory) (2 bytes)
+//
+// Downstream Maximum Nominal Aggregate Transmit Power
+// Downstream maximum nominal aggregate transmit power: This attribute specifies the maximum
+// nominal aggregate transmit power in the downstream direction during initialization and showtime.
+// It is only valid for [ITUT-G.992.3], [ITUT-G.992.4], [ITUT-G.992.5] and [ITUT-G.993.2]. Its
+// value ranges from 0 (0.0-dBm) to 255 (25.5-dBm). (R, W, setbycreate) (mandatory) (1-byte)
+//
+// Upstream Maximum Nominal Aggregate Transmit Power
+// Upstream maximum nominal aggregate transmit power: This parameter specifies the maximum nominal
+// aggregate transmit power in the upstream direction during initialization and showtime. It is
+// only valid for [ITUT-G.992.3], [ITUT-G.992.4] and [ITUT-G.992.5]. Its value ranges from 0
+// (0.0-dBm) to 255 (25.5-dBm). (R, W, setbycreate) (mandatory) (1 byte)
+//
+// Upstream Maximum Aggregate_Receive Power
+// Upstream maximum aggregate-receive power: This parameter specifies the maximum upstream
+// aggregate receive power over a set of subcarriers, as defined in the relevant Recommendation.
+// The xTU-C requests an upstream power cutback such that the upstream aggregate receive power over
+// that set of subcarriers is at or below the configured maximum value. It is only valid for
+// [ITUT-G.992.3], [ITUT-G.992.4] and [ITUT-G.992.5]. This attribute ranges from 0 (25.5-dBm) to
+// 510 (+25.5-dBm). The special value 0xFFFF indicates that no upstream maximum aggregate receive
+// power limit is to be applied. (R, W setbycreate) (mandatory) (2 bytes)
+//
+// Vdsl2 Transmission System Enabling
+// VDSL2 transmission system enabling: This configuration attribute extends the transmission system
+// coding types to be allowed by the xTU-C. It is a bit map, defined as octet 8 (bits 57..64) in
+// Table-9.7.12-1. (R, W, setbycreate) (optional) (1 byte)
+//
+type XdslLineConfigurationProfilePart2 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ xdsllineconfigurationprofilepart2BME = &ManagedEntityDefinition{
+ Name: "XdslLineConfigurationProfilePart2",
+ ClassID: 105,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfffe,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint16Field("DownstreamMinimumTimeIntervalForUpshiftRateAdaptation", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 1),
+ 2: Uint16Field("UpstreamMinimumTimeIntervalForUpshiftRateAdaptation", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 2),
+ 3: Uint16Field("DownstreamDownshiftNoiseMargin", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 3),
+ 4: Uint16Field("UpstreamDownshiftNoiseMargin", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 4),
+ 5: Uint16Field("DownstreamMinimumTimeIntervalForDownshiftRateAdaptation", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 5),
+ 6: Uint16Field("UpstreamMinimumTimeIntervalForDownshiftRateAdaptation", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 6),
+ 7: ByteField("XtuImpedanceStateForced", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 7),
+ 8: ByteField("L0Time", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 8),
+ 9: ByteField("L2Time", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 9),
+ 10: Uint16Field("DownstreamMaximumNominalPowerSpectralDensity", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 10),
+ 11: Uint16Field("UpstreamMaximumNominalPowerSpectralDensity", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 11),
+ 12: ByteField("DownstreamMaximumNominalAggregateTransmitPower", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 12),
+ 13: ByteField("UpstreamMaximumNominalAggregateTransmitPower", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 13),
+ 14: Uint16Field("UpstreamMaximumAggregateReceivePower", UnsignedIntegerAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, false, false, 14),
+ 15: ByteField("Vdsl2TransmissionSystemEnabling", UnsignedIntegerAttributeType, 0x0002, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, true, false, 15),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewXdslLineConfigurationProfilePart2 (class ID 105) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewXdslLineConfigurationProfilePart2(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*xdsllineconfigurationprofilepart2BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/xdsllineconfigurationprofilepart3.go b/vendor/github.com/opencord/omci-lib-go/generated/xdsllineconfigurationprofilepart3.go
new file mode 100644
index 0000000..66fb1d3
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/xdsllineconfigurationprofilepart3.go
@@ -0,0 +1,200 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// XdslLineConfigurationProfilePart3ClassID is the 16-bit ID for the OMCI
+// Managed entity xDSL line configuration profile part 3
+const XdslLineConfigurationProfilePart3ClassID ClassID = ClassID(106)
+
+var xdsllineconfigurationprofilepart3BME *ManagedEntityDefinition
+
+// XdslLineConfigurationProfilePart3 (class ID #106)
+// The overall xDSL line configuration profile is modelled in several parts, all of which are
+// associated together through a common ME ID (the client PPTP xDSL UNI part 1 has a single
+// pointer, which refers to the entire set of line configuration profile parts).
+//
+// Relationships
+// An instance of this ME may be associated with zero or more instances of an xDSL UNI.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. All xDSL and
+// VDSL2 line configuration profiles and extensions that pertain to a given PPTP xDSL UNI must
+// share a common ME ID. (R, setbycreate) (mandatory) (2-bytes)
+//
+// Loop Diagnostics Mode Forced Ldsf
+// Only while the line power management state is L3 can the line be forced into loop diagnostic
+// mode. When loop diagnostic procedures complete successfully, the ONU resets this attribute to 0.
+// The line remains in the L3 idle state. The loop diagnostics data are available at least until
+// the line is forced to the L0 state. As long as loop diagnostic procedures have not completed
+// successfully, attempts are made to do so, until the loop diagnostic mode is no longer forced on
+// the line through this configuration parameter. If loop diagnostic procedures cannot be completed
+// successfully after a vendordiscretionary number of retries or within a vendor-discretionary
+// timeout, then an initialization failure occurs. (R,-W, setbycreate) (mandatory) (1-byte)
+//
+// Automode Cold Start Forced
+// Automode is defined as the case where multiple operation modes are enabled in xTSE (Table
+// 9.7.12-1) and where the selection of the operation mode to be used for transmission depends, not
+// only on the common capabilities of both xTUs (as exchanged in [ITU-T G.994.1]), but also on
+// achievable data rates under given loop conditions. (R,-W, setbycreate) (mandatory if automode is
+// supported) (1-byte)
+//
+// L2 Atpr
+// L2ATPR: This parameter specifies the maximum aggregate transmit power reduction that can be
+// performed in the L2 request (i.e., at the transition of L0 to L2 state) or through a single
+// power trim in the L2 state. It is only valid for [ITUT-G.992.3], [ITUT-G.992.4] and
+// [ITUT-G.992.5]. This attribute ranges from 0 (0-dB) dB to 31 (31-dB). (R, W, setbycreate)
+// (mandatory) (1 byte)
+//
+// L2 Atprt
+// L2ATPRT: This parameter specifies the total maximum aggregate transmit power reduction (in
+// decibels) that can be performed in an L2 state. This is the sum of all reductions of L2 requests
+// (i.e., at transitions from L0 to L2 state) and power trims. This attribute ranges from 0 (0 dB)
+// dB to 31 (31 dB). (R, W, setbycreate) (mandatory) (1 byte)
+//
+// Force Inp Downstream
+// Force INP downstream: When set to 1, the FORCEINPds attribute forces the framer settings of all
+// downstream bearer channels to be selected such that the impulse noise protection (INP) computed
+// according to the formula specified in the relevant Recommendation is greater than or equal to
+// the minimal INP requirement. The default value 0 disables this function. (R, W) (mandatory for
+// [ITU-T G.993.2], optional for other Recommendations that support it) (1 byte)
+//
+// Force Inp Upstream
+// Force INP upstream: When set to 1, the FORCEINPus attribute forces the framer settings of all
+// upstream bearer channels to be selected such that the INP computed according to the formula
+// specified in the relevant Recommendation is greater than or equal to the minimal INP
+// requirement. The default value 0 disables this function. (R, W) (mandatory for [ITU-T G.993.2],
+// optional for other Recommendations that support it) (1 byte)
+//
+// Update Request Flag For Near_End Test Parameters
+// Update request flag for near-end test parameters: The UPDATE-TEST-NE attribute forces an update
+// of all near-end test parameters that can be updated during showtime in [ITU-T G.993.2]. Update
+// is triggered by setting this attribute to 1, whereupon the near-end test parameters are expected
+// to be updated within 10-s, and the ONU should reset the attribute value to 0. The update request
+// flag is independent of any autonomous update process in the system. The update request attribute
+// must be prepared to accept another set after a period not to exceed 3-min, a period that starts
+// when the flag is set via the OMCI or by an autonomous process in the system. (R,-W) (optional)
+// (1-byte)
+//
+// Update Request Flag For Far_End Test Parameters
+// Update request flag for far-end test parameters: The UPDATE-TEST-FE attribute forces an update
+// of all far-end test parameters that can be updated during showtime in [ITU-T G.993.2]. Update is
+// triggered by setting this attribute to 1, whereupon the far-end test parameters are expected to
+// be updated within 10-s, and the ONU should reset the attribute value to 0. The update request
+// flag is independent of any autonomous update process in the system. The update request attribute
+// must be prepared to accept another set after a period not to exceed 3-min, a period that starts
+// when the flag is set via the OMCI or by an autonomous process in the system. (R,-W) (optional)
+// (1-byte)
+//
+// Inm Inter Arrival Time Offset Upstream
+// INM inter-arrival time offset upstream: INMIATOus is the inter-arrival time (IAT) offset that
+// the xTU-C receiver uses to determine in which bin of the IAT histogram the IAT is reported.
+// Valid values for INMIATO range from 3 to 511 discrete multi-tone (DMT) symbols in steps of 1 DMT
+// symbol. (R,-W) (optional) (2-bytes)
+//
+// Inm Inter_Arrival Time Step Upstream
+// INM inter-arrival time step upstream: INMIATSus is the IAT step that the xTU-C receiver uses to
+// determine in which bin of the IAT histogram the IAT is reported. Valid values for INMIATS range
+// from 0 to 7 in steps of 1. (R,-W) (optional) (1-byte)
+//
+// Inm Cluster Continuation Value Upstream
+// INM cluster continuation value upstream: INMCCus is the cluster continuation value that the
+// xTU-C receiver uses in the cluster indication process described in the applicable
+// Recommendation. Valid values for INMCC range from 0 to 64 DMT symbols in steps of 1 DMT symbol.
+// (R,-W) (optional) (1-byte)
+//
+// Inm Equivalent Inp Mode Upstream
+// INM equivalent INP mode upstream: INM_INPEQ_MODEus is the INM equivalent INP mode that the xTU-C
+// receiver uses in the computation of the equivalent INP, as defined in the applicable
+// Recommendation. Valid values for INM_INPEQ_MODE are 0..4. (R,-W) (optional) (1-byte)
+//
+// Inm Inter Arrival Time Offset Downstream
+// INM inter-arrival time offset downstream: INMIATOds is the IAT offset that the xTU-R receiver
+// uses to determine in which bin of the IAT histogram the IAT is reported. Valid values for
+// INMIATO range from 3 to 511 DMT symbols in steps of 1 DMT symbol. (R,-W) (optional) (2-bytes)
+//
+// Inm Inter_Arrival Time Step Downstream
+// INM inter-arrival time step downstream: INMIATSds is the IAT step that the xTU-R receiver uses
+// to determine in which bin of the IAT histogram the IAT is reported. Valid values for INMIATS
+// range from 0 to 7 in steps of 1. (R,-W) (optional) (1-byte)
+//
+// Inm Cluster Continuation Value Downstream
+// INM cluster continuation value downstream: INMCCds is the cluster continuation value that the
+// xTU-R receiver uses in the cluster indication process described in the applicable
+// Recommendation. Valid values for INMCC range from 0 to 64 DMT symbols in steps of 1 DMT symbol.
+// (R,-W) (optional) (1-byte)
+//
+// Inm Equivalent Inp Mode Downstream
+// INM equivalent INP mode downstream: INM_INPEQ_MODEds is the INM equivalent INP mode that the
+// xTU-R receiver uses in the computation of the equivalent INP, as defined in the applicable
+// Recommendation. Valid values for INM_INPEQ_MODE are 0..4. (R,-W) (optional) (1-byte)
+//
+type XdslLineConfigurationProfilePart3 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ xdsllineconfigurationprofilepart3BME = &ManagedEntityDefinition{
+ Name: "XdslLineConfigurationProfilePart3",
+ ClassID: 106,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffff,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("LoopDiagnosticsModeForcedLdsf", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: ByteField("AutomodeColdStartForced", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: ByteField("L2Atpr", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+ 4: ByteField("L2Atprt", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+ 5: ByteField("ForceInpDownstream", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, false, false, 5),
+ 6: ByteField("ForceInpUpstream", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read, Write), false, false, false, 6),
+ 7: ByteField("UpdateRequestFlagForNearEndTestParameters", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, Write), true, true, false, 7),
+ 8: ByteField("UpdateRequestFlagForFarEndTestParameters", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read, Write), true, true, false, 8),
+ 9: Uint16Field("InmInterArrivalTimeOffsetUpstream", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, Write), false, true, false, 9),
+ 10: ByteField("InmInterArrivalTimeStepUpstream", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read, Write), false, true, false, 10),
+ 11: ByteField("InmClusterContinuationValueUpstream", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read, Write), false, true, false, 11),
+ 12: ByteField("InmEquivalentInpModeUpstream", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read, Write), false, true, false, 12),
+ 13: Uint16Field("InmInterArrivalTimeOffsetDownstream", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read, Write), false, true, false, 13),
+ 14: ByteField("InmInterArrivalTimeStepDownstream", UnsignedIntegerAttributeType, 0x0004, 0, mapset.NewSetWith(Read, Write), false, true, false, 14),
+ 15: ByteField("InmClusterContinuationValueDownstream", UnsignedIntegerAttributeType, 0x0002, 0, mapset.NewSetWith(Read, Write), false, true, false, 15),
+ 16: ByteField("InmEquivalentInpModeDownstream", UnsignedIntegerAttributeType, 0x0001, 0, mapset.NewSetWith(Read, Write), false, true, false, 16),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewXdslLineConfigurationProfilePart3 (class ID 106) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewXdslLineConfigurationProfilePart3(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*xdsllineconfigurationprofilepart3BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/xdsllineinventoryandstatusdatapart1.go b/vendor/github.com/opencord/omci-lib-go/generated/xdsllineinventoryandstatusdatapart1.go
new file mode 100644
index 0000000..9e22a63
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/xdsllineinventoryandstatusdatapart1.go
@@ -0,0 +1,172 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// XdslLineInventoryAndStatusDataPart1ClassID is the 16-bit ID for the OMCI
+// Managed entity xDSL line inventory and status data part 1
+const XdslLineInventoryAndStatusDataPart1ClassID ClassID = ClassID(100)
+
+var xdsllineinventoryandstatusdatapart1BME *ManagedEntityDefinition
+
+// XdslLineInventoryAndStatusDataPart1 (class ID #100)
+// This ME contains part 1 of the line inventory and status data for an xDSL UNI. The ONU
+// automatically creates or deletes an instance of this ME upon the creation or deletion of a PPTP
+// xDSL UNI part 1.
+//
+// Relationships
+// An instance of this ME is associated with an xDSL UNI.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the PPTP xDSL UNI part 1. (R)
+// (mandatory) (2-bytes)
+//
+// Xtu_C G.994.1 Vendor Id
+// xTU-C G.994.1 vendor ID: This is the vendor ID as inserted by the xTU-C in the ITUT-G.994.1 CL
+// message. It comprises 8 octets, including a country code followed by a (regionally allocated)
+// provider code, as defined in [ITUT-T.35]. (R) (mandatory) (8-bytes)
+//
+// Xtu_R G.994.1 Vendor Id
+// xTU-R G.994.1 vendor ID: This is the vendor ID as inserted by the xTU-R in the ITUT-G.994.1 CLR
+// message. It comprises 8 binary octets, with the same format as the xTUC ITUT G.994.1 vendor ID.
+// (R) (mandatory) (8-bytes)
+//
+// Xtu_C System Vendor Id
+// xTU-C system vendor ID: This is the vendor ID as inserted by the xTU-C in the overhead messages
+// of [ITU-T G.992.3] and [ITU-T G.992.4]. It comprises 8 binary octets, with the same format as
+// the xTU-C ITUT-G.994.1 vendor ID. (R) (mandatory) (8-bytes)
+//
+// Xtu_R System Vendor Id
+// xTU-R system vendor ID: This is the vendor ID as inserted by the xTU-R in the embedded
+// operations channel and overhead messages of [ITU-T G.992.3] and [ITUT-G.992.4]. It comprises 8
+// binary octets, with the same format as the xTU-C ITUT-G.994.1 vendor ID. (R) (mandatory)
+// (8-bytes)
+//
+// Xtu_C Version Number
+// xTU-C version number: This is the vendorspecific version number as inserted by the xTUC in the
+// overhead messages of [ITU-T G.992.3] and [ITU-T G.992.4]. It comprises up to 16 binary octets.
+// (R) (mandatory) (16-bytes)
+//
+// Xtu_R Version Number
+// xTU-R version number: This is the version number as inserted by the xTUR in the embedded
+// operations channel of [ITU-T G.992.1] or [ITU-T G.992.2], or the overhead messages of [ITU-T
+// G.992.3], [ITU-T G.992.4], [ITU-T G.992.5] and [ITU-T G.993.2]. The attribute value may be
+// vendor-specific, but is recommended to comprise up to 16 ASCII characters, null-terminated if it
+// is shorter than 16. The string should contain the xTU-R firmware version and the xTU-R model,
+// encoded in that order and separated by a space character: "<xTU-R firmware version><xTU-R
+// model>". It is recognized that legacy xTU-Rs may not support this format. (R) (mandatory)
+// (16-bytes)
+//
+// Xtu_C Serial Number Part 1
+// xTU-C serial number part 1: The vendorspecific serial number inserted by the xTU-C in the
+// overhead messages of [ITU-T G.992.3] and [ITU-T G.992.4] comprises up to 32 ASCII characters,
+// null terminated if it is shorter than 32 characters. This attribute contains the first 16
+// characters. (R) (mandatory) (16-bytes)
+//
+// Xtu_C Serial Number Part 2
+// xTU-C serial number part 2: This attribute contains the second 16 characters of the xTU-C serial
+// number. (R) (mandatory) (16-bytes)
+//
+// Xtu_R Serial Number Part 1
+// xTU-R serial number part 1: The serial number inserted by the xTU-R in the embedded operations
+// channel of [ITU-T G.992.1] or [ITU-T G.992.2], or the overhead messages of [ITU-T G.992.3],
+// [ITU-T G.992.4], [ITU-T G.992.5] and [ITUT-G.993.2], comprises up to 32 ASCII characters,
+// nullterminated if it is shorter than 32. It is recommended that the equipment serial number, the
+// equipment model and the equipment firmware version, encoded in that order and separated by space
+// characters, be contained: "<equipment serial number><equipment model><equipment firmware
+// version>". It is recognized that legacy xTU-Rs may not support this format. This attribute
+// contains the first 16 characters. (R) (mandatory) (16-bytes)
+//
+// Xtu_R Serial Number Part 2
+// xTU-R serial number part 2: This attribute contains the second 16 characters of the xTU-R serial
+// number. (R) (mandatory) (16-bytes)
+//
+// Xtu_C Self Test Results
+// xTU-C selftest results: This parameter reports the xTU-C self-test result. It is coded in two
+// fields. The most significant octet is 0 if the self-test passed and 1 if it failed. The three
+// least significant octets are a vendor-discretionary integer that can be interpreted in
+// combination with [ITU-T G.994.1] and the system vendor ID. (R) (mandatory) (4-bytes)
+//
+// Xtu_R Self Test Results
+// xTU-R selftest results: This parameter defines the xTU-R self-test result. It is coded in two
+// fields. The most significant octet is 0 if the self-test passed and 1 if it failed. The three
+// least significant octets are a vendor-discretionary integer that can be interpreted in
+// combination with [ITU-T G.994.1] and the system vendor ID. (R) (mandatory) (4-bytes)
+//
+// Xtu_C Transmission System Capability
+// NOTE 1 - This attribute is only 7-bytes long. An eighth byte identifying VDSL2 capabilities is
+// defined in the VDSL2 line inventory and status data part 1 ME.
+//
+// Xtu_R Transmission System Capability
+// NOTE 2 - This attribute is only 7-bytes long. An eighth byte identifying VDSL2 capabilities is
+// defined in the VDSL2 line inventory and status data part 2 ME.
+//
+// Initialization Success_Failure Cause
+// (R) (mandatory) (1-byte)
+//
+type XdslLineInventoryAndStatusDataPart1 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ xdsllineinventoryandstatusdatapart1BME = &ManagedEntityDefinition{
+ Name: "XdslLineInventoryAndStatusDataPart1",
+ ClassID: 100,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ ),
+ AllowedAttributeMask: 0xfffe,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: Uint64Field("XtuCG9941VendorId", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint64Field("XtuRG9941VendorId", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read), false, false, false, 2),
+ 3: Uint64Field("XtuCSystemVendorId", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint64Field("XtuRSystemVendorId", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: MultiByteField("XtuCVersionNumber", OctetsAttributeType, 0x0800, 16, toOctets("AAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read), false, false, false, 5),
+ 6: MultiByteField("XtuRVersionNumber", OctetsAttributeType, 0x0400, 16, toOctets("AAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read), false, false, false, 6),
+ 7: MultiByteField("XtuCSerialNumberPart1", OctetsAttributeType, 0x0200, 16, toOctets("AAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read), false, false, false, 7),
+ 8: MultiByteField("XtuCSerialNumberPart2", OctetsAttributeType, 0x0100, 16, toOctets("AAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read), false, false, false, 8),
+ 9: MultiByteField("XtuRSerialNumberPart1", OctetsAttributeType, 0x0080, 16, toOctets("AAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read), false, false, false, 9),
+ 10: MultiByteField("XtuRSerialNumberPart2", OctetsAttributeType, 0x0040, 16, toOctets("AAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read), false, false, false, 10),
+ 11: Uint32Field("XtuCSelfTestResults", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, false, false, 11),
+ 12: Uint32Field("XtuRSelfTestResults", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, false, false, 12),
+ 13: MultiByteField("XtuCTransmissionSystemCapability", OctetsAttributeType, 0x0008, 7, toOctets("AAAAAAAAAA=="), mapset.NewSetWith(Read), false, false, false, 13),
+ 14: MultiByteField("XtuRTransmissionSystemCapability", OctetsAttributeType, 0x0004, 7, toOctets("AAAAAAAAAA=="), mapset.NewSetWith(Read), false, false, false, 14),
+ 15: ByteField("InitializationSuccessFailureCause", UnsignedIntegerAttributeType, 0x0002, 0, mapset.NewSetWith(Read), false, false, false, 15),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewXdslLineInventoryAndStatusDataPart1 (class ID 100) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewXdslLineInventoryAndStatusDataPart1(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*xdsllineinventoryandstatusdatapart1BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/xdsllineinventoryandstatusdatapart2.go b/vendor/github.com/opencord/omci-lib-go/generated/xdsllineinventoryandstatusdatapart2.go
new file mode 100644
index 0000000..5676e9e
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/xdsllineinventoryandstatusdatapart2.go
@@ -0,0 +1,173 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// XdslLineInventoryAndStatusDataPart2ClassID is the 16-bit ID for the OMCI
+// Managed entity xDSL line inventory and status data part 2
+const XdslLineInventoryAndStatusDataPart2ClassID ClassID = ClassID(101)
+
+var xdsllineinventoryandstatusdatapart2BME *ManagedEntityDefinition
+
+// XdslLineInventoryAndStatusDataPart2 (class ID #101)
+// This ME contains part 2 of the line inventory and status data for an xDSL UNI. The ONU
+// automatically creates or deletes an instance of this ME upon the creation or deletion of a PPTP
+// xDSL UNI part 1.
+//
+// NOTE 1 - [ITU-T G.997.1] specifies that bit rate attributes have granularity of 1000-bit/s. If
+// ITUT-G.997.1 compliance is required, the ONU should only report values with this granularity.
+//
+// Relationships
+// An instance of this ME is associated with an xDSL UNI.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the PPTP xDSL UNI part 1. (R)
+// (mandatory) (2-bytes)
+//
+// Xdsl Transmission System
+// NOTE 2 - This attribute is only 7-bytes long. An eighth byte identifying VDSL2 capabilities in
+// use is defined in the VDSL2 line inventory and status data part 1 ME.
+//
+// Line Power Management State
+// (R) (mandatory) (1-byte)
+//
+// Downstream Line Attenuation
+// NOTE 3 - [ITU-T G.993.2] specifies a per-band array to represent this attribute. The array is
+// defined in the VDSL2 line inventory and status data part 3 ME. In an ITU-T G.993.2 context, the
+// downstream line attenuation attribute should be set to 0 here, and populated in the VDSL2 line
+// inventory and status data part 3 ME instead.
+//
+// Upstream Line Attenuation
+// NOTE 4 - [ITU-T G.993.2] specifies a per-band array to represent this attribute. The array is
+// defined in the VDSL2 line inventory and status data part 3 ME. In an ITU-T G.993.2 context, the
+// upstream line attenuation attribute should be set to 0 here, and populated in the VDSL2 line
+// inventory and status data part 3 ME instead.
+//
+// Downstream Signal Attenuation
+// NOTE 6 - [ITU-T G.993.2] specifies a per-band array to represent this attribute. The array is
+// defined in the VDSL2 line inventory and status data part 3 ME. In an ITU-T G.993.2 context, the
+// downstream signal attenuation attribute should be set to 0 here, and populated in the VDSL2 line
+// inventory and status data part 3 ME instead.
+//
+// Upstream Signal Attenuation
+// NOTE 8 - [ITU-T G.993.2] specifies a per-band array to represent this attribute. The array is
+// defined in the VDSL2 line inventory and status data part 3 ME. In an ITU-T G.993.2 context, the
+// upstream signal attenuation attribute should be set to 0 here, and populated in the VDSL2 line
+// inventory and status data part 3 ME instead.
+//
+// Downstream Snr Ratio Margin
+// Downstream SNR ratio margin: The downstream SNR margin SNRMds is the maximum increase of noise
+// power received at the xTUR, such that the BER requirements can still be met for all downstream
+// bearer channels. The attribute value ranges from 0 (-64.0 dB) to 1270 (+63.0-dB). The special
+// value 0xFFFF indicates that the attribute is out of range (R) (mandatory) (2-bytes)
+//
+// Upstream Snr Margin
+// Upstream SNR margin: The upstream SNR margin SNRMus is the maximum increase of noise power
+// received at the xTUC, such that the BER requirements can still be met for all upstream bearer
+// channels. The attribute value ranges from 0 (-64.0 dB) to 1270 (+63.0 dB). The special value
+// 0xFFFF indicates that the attribute is out of range. (R) (mandatory) (2-bytes)
+//
+// Downstream Maximum Attainable Data Rate
+// Downstream maximum attainable data rate: The ATTNDRds attribute indicates the maximum downstream
+// net data rate currently attainable. The rate is coded in bits per second. (R) (mandatory)
+// (4-bytes)
+//
+// Upstream Maximum Attainable Data Rate
+// Upstream maximum attainable data rate: The ATTNDRus attribute indicates the maximum upstream net
+// data rate currently attainable. The rate is coded in bits per second. (R) (mandatory) (4-bytes)
+//
+// Downstream Actual Power Spectrum Density
+// Downstream actual power spectrum density: The ACTPSDds attribute is the average downstream
+// transmit power spectrum density over the subcarriers in use (subcarriers to which downstream
+// user data are allocated) delivered by the xTUC at the UC reference point, at the instant of
+// measurement. The attribute value ranges from 0 (-90.0-dBm/Hz) to 900 (0.0-dBm/Hz). The special
+// value (0xFFFF) indicates that the parameter is out of range. (R) (mandatory) (2-bytes)
+//
+// Upstream Actual Power Spectrum Density
+// Upstream actual power spectrum density: The ACTPSDus attribute is the average upstream transmit
+// power spectrum density over the subcarriers in use (subcarriers to which upstream user data are
+// allocated) delivered by the xTUR at the UR reference point, at the instant of measurement. The
+// attribute value ranges from 0 (-90.0-dBm/Hz) to 900 (0.0-dBm/Hz). The special value 0xFFFF
+// indicates that the attribute is out of range. (R) (mandatory) (2-bytes)
+//
+// Downstream Actual Aggregate Transmit Power
+// NOTE 9 - The downstream nominal aggregate transmit power may be taken as a best estimate of the
+// parameter.
+//
+// Upstream Actual Aggregate Transmit Power
+// NOTE 10 - The upstream nominal aggregate transmit power may be taken as a best estimate of the
+// parameter.
+//
+// Initialization _ Last State Transmitted Downstream
+// (R) (mandatory) (1-byte)
+//
+// Initialization _ Last State Transmitted Upstream
+// (R) (mandatory) (1-byte)
+//
+type XdslLineInventoryAndStatusDataPart2 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ xdsllineinventoryandstatusdatapart2BME = &ManagedEntityDefinition{
+ Name: "XdslLineInventoryAndStatusDataPart2",
+ ClassID: 101,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ ),
+ AllowedAttributeMask: 0xffff,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: MultiByteField("XdslTransmissionSystem", OctetsAttributeType, 0x8000, 7, toOctets("AAAAAAAAAA=="), mapset.NewSetWith(Read), false, false, false, 1),
+ 2: ByteField("LinePowerManagementState", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read), false, false, false, 2),
+ 3: Uint16Field("DownstreamLineAttenuation", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint16Field("UpstreamLineAttenuation", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint16Field("DownstreamSignalAttenuation", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint16Field("UpstreamSignalAttenuation", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint16Field("DownstreamSnrRatioMargin", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint16Field("UpstreamSnrMargin", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: Uint32Field("DownstreamMaximumAttainableDataRate", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: Uint32Field("UpstreamMaximumAttainableDataRate", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ 11: Uint16Field("DownstreamActualPowerSpectrumDensity", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, false, false, 11),
+ 12: Uint16Field("UpstreamActualPowerSpectrumDensity", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, false, false, 12),
+ 13: Uint16Field("DownstreamActualAggregateTransmitPower", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, false, false, 13),
+ 14: Uint16Field("UpstreamActualAggregateTransmitPower", UnsignedIntegerAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, false, false, 14),
+ 15: ByteField("InitializationLastStateTransmittedDownstream", UnsignedIntegerAttributeType, 0x0002, 0, mapset.NewSetWith(Read), false, false, false, 15),
+ 16: ByteField("InitializationLastStateTransmittedUpstream", UnsignedIntegerAttributeType, 0x0001, 0, mapset.NewSetWith(Read), false, false, false, 16),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewXdslLineInventoryAndStatusDataPart2 (class ID 101) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewXdslLineInventoryAndStatusDataPart2(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*xdsllineinventoryandstatusdatapart2BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/xdsllineinventoryandstatusdatapart5.go b/vendor/github.com/opencord/omci-lib-go/generated/xdsllineinventoryandstatusdatapart5.go
new file mode 100644
index 0000000..382da30
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/xdsllineinventoryandstatusdatapart5.go
@@ -0,0 +1,190 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// XdslLineInventoryAndStatusDataPart5ClassID is the 16-bit ID for the OMCI
+// Managed entity xDSL line inventory and status data part 5
+const XdslLineInventoryAndStatusDataPart5ClassID ClassID = ClassID(325)
+
+var xdsllineinventoryandstatusdatapart5BME *ManagedEntityDefinition
+
+// XdslLineInventoryAndStatusDataPart5 (class ID #325)
+// This ME extends the attributes defined in the xDSL line inventory and status data parts 1..4.
+// This ME reports FEXT and NEXT attributes, and pertains to Annex C of [ITUT G.992.3] (ADSL2) and
+// Annex C of [ITUT G.992.5] (ADSL2plus).
+//
+// Relationships
+// This is one of the status data MEs associated with an xDSL UNI. The ONU automatically creates or
+// deletes an instance of this ME upon creation or deletion of a PPTP xDSL UNI part 1 that supports
+// these attributes.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the PPTP xDSL UNI part 1 ME. (R)
+// (mandatory) (2-bytes)
+//
+// Fext Downstream Snr Margin
+// FEXT downstream SNR margin: The FEXT SNRMds attribute is the downstream SNR margin measured
+// during FEXTR duration at the ATU-R. The attribute value ranges from 0 (-64.0-dB) to 1270
+// (+63.0-dB). The special value 0xFFFF indicates that the attribute is out of range. (R)
+// (mandatory) (2-bytes)
+//
+// Next Downstream Snr Margin
+// NEXT downstream SNR margin: The NEXT SNRMds attribute is the downstream SNR margin measured
+// during NEXTR duration at the ATU-R. The attribute value ranges from 0 (-64.0-dB) to 1270
+// (+63.0-dB). The special value 0xFFFF indicates that the attribute is out of range. (R)
+// (mandatory) (2-bytes)
+//
+// Fext Upstream Snr Margin
+// FEXT upstream SNR margin: The FEXT SNRMus attribute is the upstream SNR margin (see clause
+// 7.5.1.16 of [ITUT G.997.1]) measured during FEXTC duration at the ATU-C. The attribute value
+// ranges from 0 (-64.0-dB) to 1270 (+63.0-dB). The special value 0xFFFF indicates that the
+// attribute is out of range. (R) (mandatory) (2-bytes)
+//
+// Next Upstream Snr Margin
+// NEXT upstream SNR margin: The NEXT SNRMus attribute is the upstream SNR margin (see clause
+// 7.5.1.16 of [ITUT-G.997.1]) measured during NEXTC duration at the ATU-C. The attribute value
+// ranges from 0 (-64.0-dB) to 1270 (+63.0-dB). The special value 0xFFFF indicates that the
+// attribute is out of range. (R) (mandatory) (2-bytes)
+//
+// Fext Downstream Maximum Attainable Data Rate
+// FEXT downstream maximum attainable data rate: The FEXT ATTNDRds attribute is the maximum
+// downstream net data rate calculated from FEXT downstream SNR(f) (see clause 7.5.1.28.3.1 of
+// [ITUT G.997.1]). The rate is coded in bits per second. (R) (mandatory) (4-bytes)
+//
+// Next Downstream Maximum Attainable Data Rate
+// NEXT downstream maximum attainable data rate: The NEXT ATTNDRds attribute is the maximum
+// downstream net data rate calculated from NEXT downstream SNR(f) (see clause 7.5.1.28.3.2 of
+// [ITUT G.997.1]). The rate is coded in bits per second. (R) (mandatory) (4-bytes)
+//
+// Fext Upstream Maximum Attainable Data Rate
+// FEXT upstream maximum attainable data rate: The FEXT ATTNDRus attribute is the maximum upstream
+// net data rate calculated from FEXT upstream SNR(f) (see clause 7.5.1.28.6.1 of [ITUT G.997.1]).
+// The rate is coded in bits per second. (R) (mandatory) (4-bytes)
+//
+// Next Upstream Maximum Attainable Data Rate
+// NEXT upstream maximum attainable data rate: The NEXT ATTNDRus attribute is the maximum upstream
+// net data rate calculated from NEXT upstream SNR(f) (see clause 7.5.1.28.6.2 of [ITUT G.997.1]).
+// The rate is coded in bits per second. (R) (mandatory) (4-bytes)
+//
+// Fext Downstream Actual Power Spectral Density
+// FEXT downstream actual power spectral density: The FEXT ACTPSDds attribute is the average
+// downstream transmit PSD over the used subcarriers (see clause-7.5.1.21.1 of [ITUT G.997.1])
+// calculated from the REFPSDds and RMSGIds for FEXTR duration. The attribute value ranges from 0
+// (-90.0-dBm/Hz) to 900 (0.0-dBm/Hz). The special value 0xFFFF indicates that the parameter is out
+// of range. (R) (mandatory) (2-bytes)
+//
+// Next Downstream Actual Power Spectral Density
+// NEXT downstream actual power spectral density: The NEXT ACTPSDds attribute is the average
+// downstream transmit PSD over the used subcarriers (see clause-7.5.1.21.2 of [ITUT G.997.1])
+// calculated from the REFPSDds and RMSGIds for NEXTR duration. The attribute value ranges from 0
+// (-90.0-dBm/Hz) to 900 (0.0-dBm/Hz). The special value 0xFFFF indicates that the parameter is out
+// of range. (R) (mandatory) (2-bytes)
+//
+// Fext Upstream Actual Power Spectral Density
+// FEXT upstream actual power spectral density: The FEXT ACTPSDus attribute is the average upstream
+// transmit PSD over the used subcarriers (see clause-7.5.1.22.1 of [ITUT G.997.1]) calculated from
+// the REFPSDus and RMSGIus for FEXTC duration. The attribute value ranges from 0 (-90.0-dBm/Hz) to
+// 900 (0.0-dBm/Hz). The special value 0xFFFF indicates that the parameter is out of range. (R)
+// (mandatory) (2-bytes)
+//
+// Next Upstream Actual Power Spectral Density
+// NEXT upstream actual power spectral density: The NEXT ACTPSDus attribute is the average upstream
+// transmit PSD over the used subcarriers (see clause-7.5.1.22.2 of [ITUT G.997.1]) calculated from
+// the REFPSDus and RMSGIus for NEXTC duration. The attribute value ranges from 0 (-90.0-dBm/Hz) to
+// 900 (0.0-dBm/Hz). The special value 0xFFFF indicates that the parameter is out of range. (R)
+// (mandatory) (2-bytes)
+//
+// Fext Downstream Actual Aggregate Transmit Power
+// FEXT downstream actual aggregate transmit power: The FEXT ACTATPds attribute is the total amount
+// of transmit power (see clause 7.5.1.24.1 of [ITUT G.997.1]) calculated from PSDds measured
+// during FEXTR duration at the ATU-R. The attribute value ranges from 0 (-31.0-dBm) to 620
+// (+31.0-dBm). The special value 0xFFFF indicates that the parameter is out of range. (R)
+// (mandatory) (2-bytes)
+//
+// Next Downstream Actual Aggregate Transmit Power
+// NEXT downstream actual aggregate transmit power: The NEXT ACTATPds attribute is the total amount
+// of transmit power (see clause 7.5.1.24.2 of [ITUT G.997.1]) calculated from PSDds measured
+// during NEXTR duration at the ATU-R. The attribute value ranges from 0 (-31.0-dBm) to 620
+// (+31.0-dBm). The special value 0xFFFF indicates that the parameter is out of range. (R)
+// (mandatory) (2-bytes)
+//
+// Fext Upstream Actual Aggregate Transmit Power
+// FEXT upstream actual aggregate transmit power: The FEXT ACTATPus attribute is the total transmit
+// power (see clause 7.5.1.25.1 of [ITUT G.997.1]) calculated from PSDus measured during FEXTC
+// duration at the ATU-C. The attribute value ranges from 0 (-31.0-dBm) to 620 (+31.0-dBm). The
+// special value 0xFFFF indicates that the parameter is out of range. (R) (mandatory) (2-bytes)
+//
+// Next Upstream Actual Aggregate Transmit Power
+// NEXT upstream actual aggregate transmit power: The NEXT ACTATPus attribute is the total transmit
+// power (see clause 7.5.1.25.2 of [ITUT G.997.1]) calculated from PSDus measured during NEXTC
+// duration at the ATU-C. The attribute value ranges from 0 (-31.0-dBm) to 620 (+31.0-dBm). The
+// special value 0xFFFF indicates that the parameter is out of range. (R) (mandatory) (2-bytes)
+//
+type XdslLineInventoryAndStatusDataPart5 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ xdsllineinventoryandstatusdatapart5BME = &ManagedEntityDefinition{
+ Name: "XdslLineInventoryAndStatusDataPart5",
+ ClassID: 325,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ ),
+ AllowedAttributeMask: 0xffff,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: Uint16Field("FextDownstreamSnrMargin", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("NextDownstreamSnrMargin", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read), false, false, false, 2),
+ 3: Uint16Field("FextUpstreamSnrMargin", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint16Field("NextUpstreamSnrMargin", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("FextDownstreamMaximumAttainableDataRate", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("NextDownstreamMaximumAttainableDataRate", UnsignedIntegerAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("FextUpstreamMaximumAttainableDataRate", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint32Field("NextUpstreamMaximumAttainableDataRate", UnsignedIntegerAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: Uint16Field("FextDownstreamActualPowerSpectralDensity", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: Uint16Field("NextDownstreamActualPowerSpectralDensity", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ 11: Uint16Field("FextUpstreamActualPowerSpectralDensity", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, false, false, 11),
+ 12: Uint16Field("NextUpstreamActualPowerSpectralDensity", UnsignedIntegerAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, false, false, 12),
+ 13: Uint16Field("FextDownstreamActualAggregateTransmitPower", UnsignedIntegerAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, false, false, 13),
+ 14: Uint16Field("NextDownstreamActualAggregateTransmitPower", UnsignedIntegerAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, false, false, 14),
+ 15: Uint16Field("FextUpstreamActualAggregateTransmitPower", UnsignedIntegerAttributeType, 0x0002, 0, mapset.NewSetWith(Read), false, false, false, 15),
+ 16: Uint16Field("NextUpstreamActualAggregateTransmitPower", UnsignedIntegerAttributeType, 0x0001, 0, mapset.NewSetWith(Read), false, false, false, 16),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewXdslLineInventoryAndStatusDataPart5 (class ID 325) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewXdslLineInventoryAndStatusDataPart5(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*xdsllineinventoryandstatusdatapart5BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/xdsllineinventoryandstatusdatapart8.go b/vendor/github.com/opencord/omci-lib-go/generated/xdsllineinventoryandstatusdatapart8.go
new file mode 100644
index 0000000..19fe01b
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/xdsllineinventoryandstatusdatapart8.go
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// XdslLineInventoryAndStatusDataPart8ClassID is the 16-bit ID for the OMCI
+// Managed entity xDSL line inventory and status data part 8
+const XdslLineInventoryAndStatusDataPart8ClassID ClassID = ClassID(414)
+
+var xdsllineinventoryandstatusdatapart8BME *ManagedEntityDefinition
+
+// XdslLineInventoryAndStatusDataPart8 (class ID #414)
+// This ME extends the attributes defined in the xDSL line inventory and status data parts-1..4.
+//
+// Relationships
+// This is one of the status data MEs associated with an xDSL UNI. The ONU automatically creates or
+// deletes an instance of this ME upon creation or deletion of a PPTP xDSL UNI part 1 that supports
+// these attributes.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the PPTP xDSL UNI part 1 ME. (R)
+// (mandatory) (2-bytes)
+//
+// Retransmission Used Downstream Rtx_Usedds
+// Retransmission used downstream (RTX_USEDds): This parameter specifies whether [ITU-T G.998.4]
+// retransmission is used (i.e., active in showtime) in the downstream transmit direction. The
+// valid range of values is given in clause-7.5.1.38 of [ITU-T G.997.1]. (R) (mandatory) (1 byte)
+//
+// Retransmission Used Upstream Rtx_Usedus
+// Retransmission used upstream (RTX_USEDus): This parameter specifies whether [ITUT G.998.4]
+// retransmission is used (i.e., active in showtime) in the upstream transmit direction. The valid
+// range of values is given in clause 7.5.1.38 of [ITU-T G.997.1]. (R) (mandatory) (1 byte)
+//
+// Date_Time_Stamping Of Near_End Test Parameters Stamp_Test_Ne
+// (R) (optional) (7-bytes)
+//
+// Date_Time_Stamping Of Far_End Test Parameters Stamp_Test_Fe
+// Date/time-stamping of far-end test parameters (STAMP-TEST-FE): This parameter indicates the
+// date/time when the far-end test parameters that can change during showtime were last updated.
+// See clause 7.5.1.36.4 of [ITUT-G.997.1]. The format of this parameter is the same as STAMP-TEST-
+// NE. (R) (optional) (7-bytes)
+//
+// Date_Time_Stamping Of Last Successful Downstream Olr Operation Stamp_Olr_Ds
+// Date/time-stamping of last successful downstream OLR operation (STAMP-OLR-ds): This parameter
+// indicates the date/time of the last successful OLR execution in the downstream direction that
+// has modified the bits or gains. See clause-7.5.1.37.1 of [ITU-T G.997.1]. The format of this
+// parameter is the same as STAMP-TEST-NE. (R) (optional) (7 bytes)
+//
+// Date_Time_Stamping Of Last Successful Upstream Olr Operation Stamp_Olr_Us
+// Date/time-stamping of last successful upstream OLR operation (STAMP-OLR-us): This parameter
+// indicates the date/time of the last successful OLR execution in the upstream direction that has
+// modified the bits or gains. See clause-7.5.1.37.2 of [ITU-T G.997.1]. The format of this
+// parameter is the same as STAMP-TEST-NE. (R) (optional) (7 bytes)
+//
+type XdslLineInventoryAndStatusDataPart8 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ xdsllineinventoryandstatusdatapart8BME = &ManagedEntityDefinition{
+ Name: "XdslLineInventoryAndStatusDataPart8",
+ ClassID: 414,
+ MessageTypes: mapset.NewSetWith(
+ Get,
+ ),
+ AllowedAttributeMask: 0xfc00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read), false, false, false, 0),
+ 1: ByteField("RetransmissionUsedDownstreamRtxUsedds", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: ByteField("RetransmissionUsedUpstreamRtxUsedus", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read), false, false, false, 2),
+ 3: MultiByteField("DateTimeStampingOfNearEndTestParametersStampTestNe", OctetsAttributeType, 0x2000, 7, toOctets("AAAAAAAAAA=="), mapset.NewSetWith(Read), false, true, false, 3),
+ 4: MultiByteField("DateTimeStampingOfFarEndTestParametersStampTestFe", OctetsAttributeType, 0x1000, 7, toOctets("AAAAAAAAAA=="), mapset.NewSetWith(Read), false, true, false, 4),
+ 5: MultiByteField("DateTimeStampingOfLastSuccessfulDownstreamOlrOperationStampOlrDs", OctetsAttributeType, 0x0800, 7, toOctets("AAAAAAAAAA=="), mapset.NewSetWith(Read), false, true, false, 5),
+ 6: MultiByteField("DateTimeStampingOfLastSuccessfulUpstreamOlrOperationStampOlrUs", OctetsAttributeType, 0x0400, 7, toOctets("AAAAAAAAAA=="), mapset.NewSetWith(Read), false, true, false, 6),
+ },
+ Access: CreatedByOnu,
+ Support: UnknownSupport,
+ }
+}
+
+// NewXdslLineInventoryAndStatusDataPart8 (class ID 414) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewXdslLineInventoryAndStatusDataPart8(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*xdsllineinventoryandstatusdatapart8BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/xdslpsdmaskprofile.go b/vendor/github.com/opencord/omci-lib-go/generated/xdslpsdmaskprofile.go
new file mode 100644
index 0000000..a399351
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/xdslpsdmaskprofile.go
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// XdslPsdMaskProfileClassID is the 16-bit ID for the OMCI
+// Managed entity xDSL PSD mask profile
+const XdslPsdMaskProfileClassID ClassID = ClassID(110)
+
+var xdslpsdmaskprofileBME *ManagedEntityDefinition
+
+// XdslPsdMaskProfile (class ID #110)
+// This ME contains a PSD mask profile for an xDSL UNI. An instance of this ME is created and
+// deleted by the OLT.
+//
+// Relationships
+// An instance of this ME may be associated with zero or more instances of the PPTP xDSL UNI part
+// 1.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. The value 0 is
+// reserved. (R, setbycreate) (mandatory) (2-bytes)
+//
+// Psd Mask Table
+// (R,-W) (mandatory) (4 * N bytes where N is the number of breakpoints)
+//
+// Mask Valid
+// (R,-W) (mandatory) (1-byte)
+//
+type XdslPsdMaskProfile struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ xdslpsdmaskprofileBME = &ManagedEntityDefinition{
+ Name: "XdslPsdMaskProfile",
+ ClassID: 110,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ GetNext,
+ Set,
+ ),
+ AllowedAttributeMask: 0xc000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: TableField("PsdMaskTable", TableAttributeType, 0x8000, TableInfo{nil, 4}, mapset.NewSetWith(Read, Write), false, false, false, 1),
+ 2: ByteField("MaskValid", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, Write), false, false, false, 2),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewXdslPsdMaskProfile (class ID 110) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewXdslPsdMaskProfile(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*xdslpsdmaskprofileBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/xdslsubcarriermaskingdownstreamprofile.go b/vendor/github.com/opencord/omci-lib-go/generated/xdslsubcarriermaskingdownstreamprofile.go
new file mode 100644
index 0000000..202351e
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/xdslsubcarriermaskingdownstreamprofile.go
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// XdslSubcarrierMaskingDownstreamProfileClassID is the 16-bit ID for the OMCI
+// Managed entity xDSL subcarrier masking downstream profile
+const XdslSubcarrierMaskingDownstreamProfileClassID ClassID = ClassID(108)
+
+var xdslsubcarriermaskingdownstreamprofileBME *ManagedEntityDefinition
+
+// XdslSubcarrierMaskingDownstreamProfile (class ID #108)
+// This ME contains the subcarrier masking downstream profile for an xDSL UNI. Instances of this ME
+// are created and deleted by the OLT.
+//
+// Relationships
+// An instance of this ME may be associated with zero or more instances of the PPTP xDSL UNI part
+// 1.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. The value 0 is
+// reserved. (R, set-by-create) (mandatory) (2-bytes)
+//
+// Downstream Subcarrier Mask 1
+// Downstream subcarrier mask 1: Subcarriers 1 to 128. (R,-W, set-by-create) (mandatory) (16-bytes)
+//
+// Downstream Subcarrier Mask 2
+// Downstream subcarrier mask 2: Subcarriers 129 to 256. (R,-W) (mandatory for modems that support
+// NSCds-> 128) (16-bytes)
+//
+// Downstream Subcarrier Mask 3
+// Downstream subcarrier mask 3: Subcarriers 257 to 384. (R,-W) (mandatory for modems that support
+// NSCds-> 256) (16-bytes)
+//
+// Downstream Subcarrier Mask 4
+// Downstream subcarrier mask 4: Subcarriers 385 to 512. (R,-W) (mandatory for modems that support
+// NSCds-> 384) (16-bytes)
+//
+// Mask Valid
+// (R,-W) (mandatory) (1-byte)
+//
+type XdslSubcarrierMaskingDownstreamProfile struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ xdslsubcarriermaskingdownstreamprofileBME = &ManagedEntityDefinition{
+ Name: "XdslSubcarrierMaskingDownstreamProfile",
+ ClassID: 108,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xf800,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: MultiByteField("DownstreamSubcarrierMask1", OctetsAttributeType, 0x8000, 16, toOctets("AAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ 2: MultiByteField("DownstreamSubcarrierMask2", OctetsAttributeType, 0x4000, 16, toOctets("AAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read, Write), false, false, false, 2),
+ 3: MultiByteField("DownstreamSubcarrierMask3", OctetsAttributeType, 0x2000, 16, toOctets("AAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read, Write), false, false, false, 3),
+ 4: MultiByteField("DownstreamSubcarrierMask4", OctetsAttributeType, 0x1000, 16, toOctets("AAAAAAAAAAAAAAAAAAAAAA=="), mapset.NewSetWith(Read, Write), false, false, false, 4),
+ 5: ByteField("MaskValid", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, false, false, 5),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewXdslSubcarrierMaskingDownstreamProfile (class ID 108) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewXdslSubcarrierMaskingDownstreamProfile(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*xdslsubcarriermaskingdownstreamprofileBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/xdslsubcarriermaskingupstreamprofile.go b/vendor/github.com/opencord/omci-lib-go/generated/xdslsubcarriermaskingupstreamprofile.go
new file mode 100644
index 0000000..a1c09d6
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/xdslsubcarriermaskingupstreamprofile.go
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// XdslSubcarrierMaskingUpstreamProfileClassID is the 16-bit ID for the OMCI
+// Managed entity xDSL subcarrier masking upstream profile
+const XdslSubcarrierMaskingUpstreamProfileClassID ClassID = ClassID(109)
+
+var xdslsubcarriermaskingupstreamprofileBME *ManagedEntityDefinition
+
+// XdslSubcarrierMaskingUpstreamProfile (class ID #109)
+// This ME contains the subcarrier masking upstream profile for an xDSL UNI. An instance of this ME
+// is created and deleted by the OLT.
+//
+// Relationships
+// An instance of this ME may be associated with zero or more instances of the PPTP xDSL UNI part
+// 1.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. The value 0 is
+// reserved. (R, setbycreate) (mandatory) (2-bytes)
+//
+// Upstream Subcarrier Mask
+// Subcarrier number 1 is the lowest, and the number of xDSL subcarriers, upstream (NSCus) is the
+// highest subcarrier that can be transmitted in the upstream direction. For [ITUT-G.992.3],
+// [ITUT-G.992.4] and [ITUT-G.992.5], it is defined in the corresponding Recommendation. For Annex
+// A of [ITUT-G.992.1] and [ITUT G.992.2], NSCus-= 32 and for Annex B of [ITUT-G.992.1], NSCus-=
+// 64. (R, W, setbycreate) (mandatory) (8-bytes)
+//
+type XdslSubcarrierMaskingUpstreamProfile struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ xdslsubcarriermaskingupstreamprofileBME = &ManagedEntityDefinition{
+ Name: "XdslSubcarrierMaskingUpstreamProfile",
+ ClassID: 109,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0x8000,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: Uint64Field("UpstreamSubcarrierMask", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewXdslSubcarrierMaskingUpstreamProfile (class ID 109) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewXdslSubcarrierMaskingUpstreamProfile(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*xdslsubcarriermaskingupstreamprofileBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/xdslxtu-cchannelperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/xdslxtu-cchannelperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..8cd69ae
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/xdslxtu-cchannelperformancemonitoringhistorydata.go
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// XdslXtuCChannelPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity xDSL xTU-C channel performance monitoring history data
+const XdslXtuCChannelPerformanceMonitoringHistoryDataClassID ClassID = ClassID(114)
+
+var xdslxtucchannelperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// XdslXtuCChannelPerformanceMonitoringHistoryData (class ID #114)
+// This ME collects PM data of an xTUC to xTUR channel as seen from the xTU-C. Instances of this ME
+// are created and deleted by the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an xDSL bearer channel. Several instances may
+// therefore be associated with an xDSL UNI.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. The two MSBs of
+// the first byte are the bearer channel ID. Excluding the first 2-bits of the first byte, the
+// remaining part of the ME ID is identical to that of this ME's parent PPTP xDSL UNI part 1. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 ME that
+// contains PM threshold values. Since no threshold value attribute number exceeds 7, a threshold
+// data 2 ME is optional. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Corrected Blocks
+// Corrected blocks: This attribute counts blocks received with errors that were corrected on this
+// channel. (R) (mandatory) (4-bytes)
+//
+// Uncorrected Blocks
+// Uncorrected blocks: This attribute counts blocks received with uncorrectable errors on this
+// channel. (R) (mandatory) (4-bytes)
+//
+// Transmitted Blocks
+// Transmitted blocks: This attribute counts encoded blocks transmitted on this channel. (R)
+// (mandatory) (4-bytes)
+//
+// Received Blocks
+// Received blocks: This attribute counts encoded blocks received on this channel. (R) (mandatory)
+// (4-bytes)
+//
+// Code Violations
+// Code violations: This attribute counts CRC-8 anomalies in the bearer channel. (R) (mandatory)
+// (2-bytes)
+//
+// Forward Error Corrections
+// Forward error corrections: This attribute counts FEC anomalies in the bearer channel. (R)
+// (mandatory) (2-bytes)
+//
+type XdslXtuCChannelPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ xdslxtucchannelperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "XdslXtuCChannelPerformanceMonitoringHistoryData",
+ ClassID: 114,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xff00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("CorrectedBlocks", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("UncorrectedBlocks", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("TransmittedBlocks", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("ReceivedBlocks", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint16Field("CodeViolations", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint16Field("ForwardErrorCorrections", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewXdslXtuCChannelPerformanceMonitoringHistoryData (class ID 114) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewXdslXtuCChannelPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*xdslxtucchannelperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/xdslxtu-cperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/xdslxtu-cperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..fb1dee8
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/xdslxtu-cperformancemonitoringhistorydata.go
@@ -0,0 +1,163 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// XdslXtuCPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity xDSL xTU-C performance monitoring history data
+const XdslXtuCPerformanceMonitoringHistoryDataClassID ClassID = ClassID(112)
+
+var xdslxtucperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// XdslXtuCPerformanceMonitoringHistoryData (class ID #112)
+// This ME collects PM data on the xTUC to xTUR path as seen from the xTU-C. Instances of this ME
+// are created and deleted by the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an xDSL UNI.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the PPTP xDSL UNI part 1. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 and 2 MEs
+// that contain PM threshold values. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Loss Of Frame Seconds
+// Loss of frame seconds: (R) (mandatory) (2-bytes)
+//
+// Loss Of Signal Seconds
+// Loss of signal seconds: (R) (mandatory) (2-bytes)
+//
+// Loss Of Link Seconds
+// Loss of link seconds: (R) (mandatory) (2-bytes)
+//
+// Loss Of Power Seconds
+// Loss of power seconds: (R) (mandatory) (2-bytes)
+//
+// Errored Seconds Es
+// Errored seconds (ES): This attribute counts 1-s intervals with one or more CRC8 anomalies summed
+// over all received bearer channels, or one or more loss of signal (LOS) defects, or one or more
+// SEF defects, or one or more LPR defects. (R) (mandatory) (2-bytes)
+//
+// Severely Errored Seconds
+// (R) (mandatory) (2-bytes)
+//
+// Line Initializations
+// Line initializations: This attribute counts the total number of full initializations attempted
+// on the line, both successful and failed. (R) (mandatory) (2-bytes)
+//
+// Failed Line Initializations
+// Failed line initializations: This attribute counts the total number of failed full
+// initializations during the accumulation period. A failed full initialization occurs when
+// showtime is not reached at the end of the full initialization procedure. (R) (mandatory)
+// (2-bytes)
+//
+// Short Initializations
+// Short initializations: This attribute counts the total number of fast retrains or short
+// initializations attempted on the line, successful and failed. Fast retrain is defined in [ITUT
+// G.992.2]. Short initialization is defined in [ITUT-G.992.3] and [ITUT G.992.4]. (R) (optional)
+// (2-bytes)
+//
+// Failed Short Initializations
+// (R) (optional) (2-bytes)
+//
+// Fec Seconds
+// FEC seconds: This attribute counts seconds during which there was an FEC anomaly. (R)
+// (mandatory) (2-bytes)
+//
+// Unavailable Seconds
+// Unavailable seconds: This attribute counts 1-s intervals during which the xDSL UNI is
+// unavailable. The line becomes unavailable at the onset of 10 contiguous SES-Ls. The 10 SES-Ls
+// are included in unavailable time. Once unavailable, the line becomes available at the onset of
+// 10-contiguous seconds that are not severely errored. The 10-s with no SESLs are excluded from
+// unavailable time. Some attribute counts are inhibited during unavailability - see clause
+// 7.2.7.13 of [ITUT G.997.1]. (R) (mandatory) (2-bytes)
+//
+// Sos Success Count, Near End
+// SOS success count, near end: The SOS-SUCCESS-NE attribute is a count of the total number of
+// successful SOS procedures initiated by the near-end xTU on the line during the accumulation
+// period. Successful SOS is defined in clause-12.1.4 of [ITUT G.993.2]. (R) (optional) (2-bytes)
+//
+// Sos Success Count, Far End
+// SOS success count, far end: The SOS-SUCCESS-FE attribute is a count of the total number of
+// successful SOS procedures initiated by the far-end xTU on the line during the accumulation
+// period. Successful SOS is defined in clause 12.1.4 of [ITUT-G.993.2]. (R) (optional) (2-bytes)
+//
+type XdslXtuCPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ xdslxtucperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "XdslXtuCPerformanceMonitoringHistoryData",
+ ClassID: 112,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffff,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint16Field("LossOfFrameSeconds", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint16Field("LossOfSignalSeconds", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint16Field("LossOfLinkSeconds", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint16Field("LossOfPowerSeconds", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint16Field("ErroredSecondsEs", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint16Field("SeverelyErroredSeconds", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: Uint16Field("LineInitializations", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: Uint16Field("FailedLineInitializations", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ 11: Uint16Field("ShortInitializations", CounterAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, true, false, 11),
+ 12: Uint16Field("FailedShortInitializations", CounterAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, true, false, 12),
+ 13: Uint16Field("FecSeconds", CounterAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, false, false, 13),
+ 14: Uint16Field("UnavailableSeconds", CounterAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, false, false, 14),
+ 15: Uint16Field("SosSuccessCount,NearEnd", CounterAttributeType, 0x0002, 0, mapset.NewSetWith(Read), false, true, false, 15),
+ 16: Uint16Field("SosSuccessCount,FarEnd", CounterAttributeType, 0x0001, 0, mapset.NewSetWith(Read), false, true, false, 16),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewXdslXtuCPerformanceMonitoringHistoryData (class ID 112) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewXdslXtuCPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*xdslxtucperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/xdslxtu-cperformancemonitoringhistorydatapart2.go b/vendor/github.com/opencord/omci-lib-go/generated/xdslxtu-cperformancemonitoringhistorydatapart2.go
new file mode 100644
index 0000000..df422ef
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/xdslxtu-cperformancemonitoringhistorydatapart2.go
@@ -0,0 +1,106 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// XdslXtuCPerformanceMonitoringHistoryDataPart2ClassID is the 16-bit ID for the OMCI
+// Managed entity xDSL xTU-C performance monitoring history data part 2
+const XdslXtuCPerformanceMonitoringHistoryDataPart2ClassID ClassID = ClassID(408)
+
+var xdslxtucperformancemonitoringhistorydatapart2BME *ManagedEntityDefinition
+
+// XdslXtuCPerformanceMonitoringHistoryDataPart2 (class ID #408)
+// This ME collects PM data on the xTUC to xTUR path as seen from the xTU-C. Instances of this ME
+// are created and deleted by the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an xDSL UNI.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the PPTP xDSL UNI part 1. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 and 2 MEs
+// that contain PM threshold values. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Leftr Defect Seconds
+// "leftr" defect seconds: If retransmission is used, this attribute is a count of the seconds with
+// a near-end ''leftr'' defect present - see clause 7.2.1.1.6 of [ITU-T G.997.1]. (R) (mandatory)
+// (2-bytes)
+//
+// Error_Free Bits Counter
+// Error-free bits counter: If retransmission is used, this attribute is a count of the number of
+// error-free bits passed over the B1 reference point, divided by 216 - see clause-7.2.1.1.7 of
+// [ITU-T G.997.1]. (R) (mandatory) (4-bytes)
+//
+// Minimum Error_Free Throughput Mineftr
+// Minimum error-free throughput (MINEFTR): If retransmission is used, this attribute is the
+// minimum error-free throughput in bits per second - see clause 7.2.1.1.8 of [ITUT-G.997.1]. (R)
+// (mandatory) (4-bytes)
+//
+type XdslXtuCPerformanceMonitoringHistoryDataPart2 struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ xdslxtucperformancemonitoringhistorydatapart2BME = &ManagedEntityDefinition{
+ Name: "XdslXtuCPerformanceMonitoringHistoryDataPart2",
+ ClassID: 408,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xf800,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint16Field("LeftrDefectSeconds", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("ErrorFreeBitsCounter", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("MinimumErrorFreeThroughputMineftr", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewXdslXtuCPerformanceMonitoringHistoryDataPart2 (class ID 408) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewXdslXtuCPerformanceMonitoringHistoryDataPart2(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*xdslxtucperformancemonitoringhistorydatapart2BME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/xdslxtu-rchannelperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/xdslxtu-rchannelperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..a6cbe43
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/xdslxtu-rchannelperformancemonitoringhistorydata.go
@@ -0,0 +1,124 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// XdslXtuRChannelPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity xDSL xTU-R channel performance monitoring history data
+const XdslXtuRChannelPerformanceMonitoringHistoryDataClassID ClassID = ClassID(115)
+
+var xdslxturchannelperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// XdslXtuRChannelPerformanceMonitoringHistoryData (class ID #115)
+// This ME collects PM data of the xTUC to xTUR channel as seen from the xTU-R. Instances of this
+// ME are created and deleted by the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an xDSL bearer channel. Several instances may
+// therefore be associated with an xDSL UNI.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. The two MSBs of
+// the first byte are the bearer channel ID. Excluding the first 2-bits of the first byte, the
+// remaining part of the ME ID is identical to that of this ME's parent PPTP xDSL UNI part 1. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 ME that
+// contains PM threshold values. Since no threshold value attribute number exceeds 7, a threshold
+// data 2 ME is optional. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Corrected Blocks
+// Corrected blocks: This attribute counts blocks received with errors that were corrected on this
+// channel. (R) (mandatory) (4-bytes)
+//
+// Uncorrected Blocks
+// Uncorrected blocks: This attribute counts blocks received with uncorrectable errors on this
+// channel. (R) (mandatory) (4-bytes)
+//
+// Transmitted Blocks
+// Transmitted blocks: This attribute counts encoded blocks transmitted on this channel. (R)
+// (mandatory) (4-bytes)
+//
+// Received Blocks
+// Received blocks: This attribute counts encoded blocks received on this channel. (R) (mandatory)
+// (4-bytes)
+//
+// Code Violations
+// Code violations: This attribute counts FEBE anomalies reported in the downstream bearer channel.
+// If the CRC is applied over multiple bearer channels, then each related FEBE anomaly increments
+// each of the counters related to the individual bearer channels. (R) (mandatory) (2-bytes)
+//
+// Forward Error Corrections
+// Forward error corrections: This attribute counts FFEC anomalies reported in the downstream
+// bearer channel. If FEC is applied over multiple bearer channels, each related FFEC anomaly
+// increments each of the counters related to the individual bearer channels. (R) (mandatory)
+// (2-bytes)
+//
+type XdslXtuRChannelPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ xdslxturchannelperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "XdslXtuRChannelPerformanceMonitoringHistoryData",
+ ClassID: 115,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xff00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("CorrectedBlocks", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint32Field("UncorrectedBlocks", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint32Field("TransmittedBlocks", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint32Field("ReceivedBlocks", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint16Field("CodeViolations", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint16Field("ForwardErrorCorrections", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewXdslXtuRChannelPerformanceMonitoringHistoryData (class ID 115) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewXdslXtuRChannelPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*xdslxturchannelperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/xdslxtu-rperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/xdslxtu-rperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..1482405
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/xdslxtu-rperformancemonitoringhistorydata.go
@@ -0,0 +1,138 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// XdslXtuRPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity xDSL xTU-R performance monitoring history data
+const XdslXtuRPerformanceMonitoringHistoryDataClassID ClassID = ClassID(113)
+
+var xdslxturperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// XdslXtuRPerformanceMonitoringHistoryData (class ID #113)
+// This ME collects PM data of the xTUC to xTUR path as seen from the xTU-R. Instances of this ME
+// are created and deleted by the OLT.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an xDSL UNI.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the PPTP xDSL UNI part 1. (R,
+// setbycreate) (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 ME that
+// contains PM threshold values. Since no threshold value attribute number exceeds 7, a threshold
+// data 2 ME is optional. (R,-W, setbycreate) (mandatory) (2-bytes)
+//
+// Loss Of Frame Seconds
+// Loss of frame seconds: (R) (mandatory) (2-bytes)
+//
+// Loss Of Signal Seconds
+// Loss of signal seconds: (R) (mandatory) (2-bytes)
+//
+// Loss Of Power Seconds
+// Loss of power seconds: (R) (mandatory) (2-bytes)
+//
+// Errored Seconds
+// Errored seconds: This attribute counts 1-s intervals with one or more far end block error (FEBE)
+// anomalies summed over all transmitted bearer channels, or one or more LOSFE defects, or one or
+// more RDI defects, or one or more LPR-FE defects. (R) (mandatory) (2-bytes)
+//
+// Severely Errored Seconds
+// (R) (mandatory) (2-bytes)
+//
+// Fec Seconds
+// FEC seconds: This attribute counts seconds during which there was an FEC anomaly. (R)
+// (mandatory) (2-bytes)
+//
+// Unavailable Seconds
+// (R) (mandatory) (2-bytes)
+//
+// Leftr Defect Seconds
+// "leftr" defect seconds: If retransmission is used, this parameter is a count of the seconds with
+// a near-end ''leftr'' defect present - see clause 7.2.1.1.6 of [ITUT-G.997.1]. (R) (optional)
+// (2-bytes)
+//
+// Error_Free Bits Counter
+// Error-free bits counter: If retransmission is used, this parameter is a count of the number of
+// error-free bits passed over the B1 reference point, divided by 216 - see clause 7.2.1.1.7 of
+// [ITU-T G.997.1]. (R) (optional) (4-bytes)
+//
+// Minimum Error_Free Throughput Mineftr
+// Minimum error-free throughput (MINEFTR): If retransmission is used, this parameter is the
+// minimum error-free throughput in bits per second - see clause 7.2.1.1.8 of [ITUT-G.997.1]. (R)
+// (optional) (4-bytes)
+//
+type XdslXtuRPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ xdslxturperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "XdslXtuRPerformanceMonitoringHistoryData",
+ ClassID: 113,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfff0,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint16Field("LossOfFrameSeconds", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, false, false, 3),
+ 4: Uint16Field("LossOfSignalSeconds", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, false, false, 4),
+ 5: Uint16Field("LossOfPowerSeconds", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, false, false, 5),
+ 6: Uint16Field("ErroredSeconds", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint16Field("SeverelyErroredSeconds", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, false, false, 7),
+ 8: Uint16Field("FecSeconds", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, false, false, 8),
+ 9: Uint16Field("UnavailableSeconds", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: Uint16Field("LeftrDefectSeconds", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, true, false, 10),
+ 11: Uint32Field("ErrorFreeBitsCounter", CounterAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, true, false, 11),
+ 12: Uint32Field("MinimumErrorFreeThroughputMineftr", CounterAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, true, false, 12),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewXdslXtuRPerformanceMonitoringHistoryData (class ID 113) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewXdslXtuRPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*xdslxturperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/xg-pondownstreammanagementperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/xg-pondownstreammanagementperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..43dbb8d
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/xg-pondownstreammanagementperformancemonitoringhistorydata.go
@@ -0,0 +1,163 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// XgPonDownstreamManagementPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity XG-PON downstream management performance monitoring history data
+const XgPonDownstreamManagementPerformanceMonitoringHistoryDataClassID ClassID = ClassID(345)
+
+var xgpondownstreammanagementperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// XgPonDownstreamManagementPerformanceMonitoringHistoryData (class ID #345)
+// This ME collects PM data associated with the XG-PON TC layer. It collects counters associated
+// with downstream PLOAM and OMCI messages.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an ANI-G.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the ANI-G. (R, set-by-create)
+// (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 ME that
+// contains PM threshold values. Since no threshold value attribute number exceeds 7, a threshold
+// data 2 ME is optional. (R,-W, set-by-create) (mandatory) (2-bytes)
+//
+// Ploam Message Integrity Check Mic Error Count
+// PLOAM message integrity check (MIC) error count: This attribute counts MIC errors detected in
+// downstream PLOAM messages, either directed to this ONU or broadcast to all ONUs. (R) (optional)
+// (4-bytes)
+//
+// Downstream Ploam Messages Count
+// Downstream PLOAM messages count: This attribute counts PLOAM messages received, either directed
+// to this ONU or broadcast to all ONUs. (R) (optional) (4-bytes)
+//
+// Profile Messages Received
+// Profile messages received: This attribute counts the number of profile messages received, either
+// directed to this ONU or broadcast to all ONUs. In [ITU-T G.9807.1], this attribute is used for
+// received burst_profile message count. (R) (optional) (4-bytes)
+//
+// Ranging_Time Messages Received
+// Ranging_time messages received: This attribute counts the number of ranging_time messages
+// received, either directed to this ONU or broadcast to all ONUs. (R) (mandatory) (4-bytes)
+//
+// Deactivate_Onu_Id Messages Received
+// Deactivate_ONU-ID messages received: This attribute counts the number of deactivate_ONU-ID
+// messages received, either directed to this ONU or broadcast to all ONUs. Deactivate_ONU-ID
+// messages do not reset this counter. (R) (optional) (4-bytes)
+//
+// Disable_Serial_Number Messages Received
+// Disable_serial_number messages received: This attribute counts the number of
+// disable_serial_number messages received, whose serial number specified this ONU. (R) (optional)
+// (4-bytes)
+//
+// Request_Registration Messages Received
+// Request_registration messages received: This attribute counts the number of request_registration
+// messages received. (R) (optional) (4-bytes)
+//
+// Assign_Alloc_Id Messages Received
+// Assign_alloc-ID messages received: This attribute counts the number of assign_alloc-ID messages
+// received. (R) (optional) (4-bytes)
+//
+// Key_Control Messages Received
+// Key_control messages received: This attribute counts the number of key_control messages
+// received, either directed to this ONU or broadcast to all ONUs. (R) (optional) (4-bytes)
+//
+// Sleep_Allow Messages Received
+// Sleep_allow messages received: This attribute counts the number of sleep_allow messages
+// received, either directed to this ONU or broadcast to all ONUs. (R) (optional) (4-bytes)
+//
+// Baseline Omci Messages Received Count
+// Baseline OMCI messages received count: This attribute counts the number of OMCI messages
+// received in the baseline message format. (R) (optional) (4-bytes)
+//
+// Extended Omci Messages Received Count
+// Extended OMCI messages received count: This attribute counts the number of OMCI messages
+// received in the extended message format. (R) (optional) (4-bytes)
+//
+// Assign_Onu_Id Messages Received
+// Assign_ONU-ID messages received: This attribute counts the number of assign_ONU-ID messages
+// received since the last re-boot. (R) (optional) (4-bytes)
+//
+// Omci Mic Error Count
+// OMCI MIC error count: This attribute counts MIC errors detected in OMCI messages directed to
+// this ONU. (R) (optional) (4-bytes)
+//
+type XgPonDownstreamManagementPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ xgpondownstreammanagementperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "XgPonDownstreamManagementPerformanceMonitoringHistoryData",
+ ClassID: 345,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xffff,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", PointerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("PloamMessageIntegrityCheckMicErrorCount", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, true, false, 3),
+ 4: Uint32Field("DownstreamPloamMessagesCount", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, true, false, 4),
+ 5: Uint32Field("ProfileMessagesReceived", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, true, false, 5),
+ 6: Uint32Field("RangingTimeMessagesReceived", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("DeactivateOnuIdMessagesReceived", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, true, false, 7),
+ 8: Uint32Field("DisableSerialNumberMessagesReceived", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, true, false, 8),
+ 9: Uint32Field("RequestRegistrationMessagesReceived", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, true, false, 9),
+ 10: Uint32Field("AssignAllocIdMessagesReceived", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, true, false, 10),
+ 11: Uint32Field("KeyControlMessagesReceived", CounterAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, true, false, 11),
+ 12: Uint32Field("SleepAllowMessagesReceived", CounterAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, true, false, 12),
+ 13: Uint32Field("BaselineOmciMessagesReceivedCount", CounterAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, true, false, 13),
+ 14: Uint32Field("ExtendedOmciMessagesReceivedCount", CounterAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, true, false, 14),
+ 15: Uint32Field("AssignOnuIdMessagesReceived", CounterAttributeType, 0x0002, 0, mapset.NewSetWith(Read), false, true, false, 15),
+ 16: Uint32Field("OmciMicErrorCount", CounterAttributeType, 0x0001, 0, mapset.NewSetWith(Read), false, true, false, 16),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewXgPonDownstreamManagementPerformanceMonitoringHistoryData (class ID 345) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewXgPonDownstreamManagementPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*xgpondownstreammanagementperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/xg-pontcperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/xg-pontcperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..35a899f
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/xg-pontcperformancemonitoringhistorydata.go
@@ -0,0 +1,154 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// XgPonTcPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity XG-PON TC performance monitoring history data
+const XgPonTcPerformanceMonitoringHistoryDataClassID ClassID = ClassID(344)
+
+var xgpontcperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// XgPonTcPerformanceMonitoringHistoryData (class ID #344)
+// This ME collects PM data associated with the XG-PON TC layer.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an ANI-G.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the ANI-G. (R, set-by-create)
+// (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: This attribute points to an instance of the threshold data 1 ME that
+// contains PM threshold values. (R,-W, set-by-create) (mandatory) (2-bytes)
+//
+// Psbd Hec Error Count
+// PSBd HEC error count: This attribute counts HEC errors in any of the fields of the downstream
+// physical sync block. (R) (optional) (4-bytes)
+//
+// Xgtc Hec Error Count
+// XGTC HEC error count: This attribute counts HEC errors detected in the XGTC header. In [ITU-T
+// G.9807.1], this attribute is used for framing sublayer (FS) HEC error count management. (R)
+// (optional) (4-bytes)
+//
+// Unknown Profile Count
+// Unknown profile count: This attribute counts the number of grants received whose specified
+// profile was not known to the ONU. (R) (optional) (4-bytes)
+//
+// Transmitted Xg_Pon Encapsulation Method Xgem Frames
+// Transmitted XG-PON encapsulation method (XGEM) frames: This attribute counts the number of non-
+// idle XGEM frames transmitted. If a service data unit (SDU) is fragmented, each fragment is an
+// XGEM frame and is counted as such. (R) (mandatory) (4 bytes)
+//
+// Fragment Xgem Frames
+// Fragment XGEM frames: This attribute counts the number of XGEM frames that represent fragmented
+// SDUs, as indicated by the LF bit-= 0. (R) (optional) (4-bytes)
+//
+// Xgem Hec Lost Words Count
+// XGEM HEC lost words count: This attribute counts the number of 4-byte words lost because of an
+// XGEM frame HEC error. In general, all XGTC payload following the error is lost, until the next
+// PSBd event. (R) (optional) (4 bytes)
+//
+// Xgem Key Errors
+// (R) (mandatory) (4 bytes)
+//
+// Xgem Hec Error Count
+// XGEM HEC error count: This attribute counts the number of instances of an XGEM frame HEC error.
+// (R) (mandatory) (4 bytes)
+//
+// Transmitted Bytes In Non_Idle Xgem Frames
+// Transmitted bytes in non-idle XGEM frames: This attribute counts the number of transmitted bytes
+// in non-idle XGEM frames. (R) (mandatory) (8 bytes)
+//
+// Received Bytes In Non_Idle Xgem Frames
+// Received bytes in non-idle XGEM frames: This attribute counts the number of received bytes in
+// non-idle XGEM frames. (R) (optional) (8 bytes)
+//
+// Loss Of Downstream Synchronization Lods Event Count
+// Loss of downstream synchronization (LODS) event count: This attribute counts the number of state
+// transitions from O5.1 to O6. (R) (optional) (4-bytes)
+//
+// Lods Event Restored Count
+// LODS event restored count: This attribute counts the number of LODS cleared events. (R)
+// (optional) (4-bytes)
+//
+// Onu Reactivation By Lods Events
+// ONU reactivation by LODS events: This attribute counts the number of LODS events resulting in
+// ONU reactivation without synchronization being reacquired. (R) (optional) (4-bytes)
+//
+type XgPonTcPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ xgpontcperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "XgPonTcPerformanceMonitoringHistoryData",
+ ClassID: 344,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xfffe,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", PointerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("PsbdHecErrorCount", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, true, false, 3),
+ 4: Uint32Field("XgtcHecErrorCount", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, true, false, 4),
+ 5: Uint32Field("UnknownProfileCount", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, true, false, 5),
+ 6: Uint32Field("TransmittedXgPonEncapsulationMethodXgemFrames", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, false, false, 6),
+ 7: Uint32Field("FragmentXgemFrames", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, true, false, 7),
+ 8: Uint32Field("XgemHecLostWordsCount", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, true, false, 8),
+ 9: Uint32Field("XgemKeyErrors", CounterAttributeType, 0x0080, 0, mapset.NewSetWith(Read), false, false, false, 9),
+ 10: Uint32Field("XgemHecErrorCount", CounterAttributeType, 0x0040, 0, mapset.NewSetWith(Read), false, false, false, 10),
+ 11: Uint64Field("TransmittedBytesInNonIdleXgemFrames", CounterAttributeType, 0x0020, 0, mapset.NewSetWith(Read), false, false, false, 11),
+ 12: Uint64Field("ReceivedBytesInNonIdleXgemFrames", CounterAttributeType, 0x0010, 0, mapset.NewSetWith(Read), false, true, false, 12),
+ 13: Uint32Field("LossOfDownstreamSynchronizationLodsEventCount", CounterAttributeType, 0x0008, 0, mapset.NewSetWith(Read), false, true, false, 13),
+ 14: Uint32Field("LodsEventRestoredCount", CounterAttributeType, 0x0004, 0, mapset.NewSetWith(Read), false, true, false, 14),
+ 15: Uint32Field("OnuReactivationByLodsEvents", CounterAttributeType, 0x0002, 0, mapset.NewSetWith(Read), false, true, false, 15),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewXgPonTcPerformanceMonitoringHistoryData (class ID 344) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewXgPonTcPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*xgpontcperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/xg-ponupstreammanagementperformancemonitoringhistorydata.go b/vendor/github.com/opencord/omci-lib-go/generated/xg-ponupstreammanagementperformancemonitoringhistorydata.go
new file mode 100644
index 0000000..be7cccb
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/xg-ponupstreammanagementperformancemonitoringhistorydata.go
@@ -0,0 +1,114 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// XgPonUpstreamManagementPerformanceMonitoringHistoryDataClassID is the 16-bit ID for the OMCI
+// Managed entity XG-PON upstream management performance monitoring history data
+const XgPonUpstreamManagementPerformanceMonitoringHistoryDataClassID ClassID = ClassID(346)
+
+var xgponupstreammanagementperformancemonitoringhistorydataBME *ManagedEntityDefinition
+
+// XgPonUpstreamManagementPerformanceMonitoringHistoryData (class ID #346)
+// This ME collects PM data associated with the XG-PON TC layer. It counts upstream PLOAM messages
+// transmitted by the ONU.
+//
+// For a complete discussion of generic PM architecture, refer to clause I.4.
+//
+// Relationships
+// An instance of this ME is associated with an ANI-G.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the ANI-G. (R, set-by-create)
+// (mandatory) (2-bytes)
+//
+// Interval End Time
+// Interval end time: This attribute identifies the most recently finished 15-min interval. (R)
+// (mandatory) (1-byte)
+//
+// Threshold Data 1_2 Id
+// Threshold data 1/2 ID: No thresholds are defined for this ME. For uniformity with other PM, the
+// attribute is retained and shown as mandatory, but it should be set to a null pointer. (R,-W,
+// set-by-create) (mandatory) (2-bytes)
+//
+// Upstream Ploam Message Count
+// Upstream PLOAM message count: This attribute counts PLOAM messages transmitted upstream,
+// excluding acknowledge messages. (R) (optional) (4-bytes)
+//
+// Serial_Number_Onu Message Count
+// Serial_number_ONU message count: This attribute counts Serial_number_ONU PLOAM messages
+// transmitted. (R) (optional) (4-bytes)
+//
+// Registration Message Count
+// Registration message count: This attribute counts Registration PLOAM messages transmitted. (R)
+// (optional) (4-bytes)
+//
+// Key_Report Message Count
+// Key_report message count: This attribute counts key_report PLOAM messages transmitted. (R)
+// (optional) (4-bytes)
+//
+// Acknowledge Message Count
+// Acknowledge message count: This attribute counts acknowledge PLOAM messages transmitted. It
+// includes all forms of acknowledgement (AK), including those transmitted in response to a PLOAM
+// grant when the ONU has nothing to send. (R) (optional) (4-bytes)
+//
+// Sleep_Request Message Count
+// Sleep_request message count: This attribute counts sleep_request PLOAM messages transmitted. (R)
+// (optional) (4-bytes)
+//
+type XgPonUpstreamManagementPerformanceMonitoringHistoryData struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ xgponupstreammanagementperformancemonitoringhistorydataBME = &ManagedEntityDefinition{
+ Name: "XgPonUpstreamManagementPerformanceMonitoringHistoryData",
+ ClassID: 346,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ Set,
+ ),
+ AllowedAttributeMask: 0xff00,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: ByteField("IntervalEndTime", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read), false, false, false, 1),
+ 2: Uint16Field("ThresholdData12Id", PointerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+ 3: Uint32Field("UpstreamPloamMessageCount", CounterAttributeType, 0x2000, 0, mapset.NewSetWith(Read), false, true, false, 3),
+ 4: Uint32Field("SerialNumberOnuMessageCount", CounterAttributeType, 0x1000, 0, mapset.NewSetWith(Read), false, true, false, 4),
+ 5: Uint32Field("RegistrationMessageCount", CounterAttributeType, 0x0800, 0, mapset.NewSetWith(Read), false, true, false, 5),
+ 6: Uint32Field("KeyReportMessageCount", CounterAttributeType, 0x0400, 0, mapset.NewSetWith(Read), false, true, false, 6),
+ 7: Uint32Field("AcknowledgeMessageCount", CounterAttributeType, 0x0200, 0, mapset.NewSetWith(Read), false, true, false, 7),
+ 8: Uint32Field("SleepRequestMessageCount", CounterAttributeType, 0x0100, 0, mapset.NewSetWith(Read), false, true, false, 8),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewXgPonUpstreamManagementPerformanceMonitoringHistoryData (class ID 346) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewXgPonUpstreamManagementPerformanceMonitoringHistoryData(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*xgponupstreammanagementperformancemonitoringhistorydataBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/generated/xtudatagatheringconfiguration.go b/vendor/github.com/opencord/omci-lib-go/generated/xtudatagatheringconfiguration.go
new file mode 100644
index 0000000..2b5171a
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/generated/xtudatagatheringconfiguration.go
@@ -0,0 +1,116 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// XtuDataGatheringConfigurationClassID is the 16-bit ID for the OMCI
+// Managed entity xTU data gathering configuration
+const XtuDataGatheringConfigurationClassID ClassID = ClassID(413)
+
+var xtudatagatheringconfigurationBME *ManagedEntityDefinition
+
+// XtuDataGatheringConfiguration (class ID #413)
+// This ME defines configurations specific to data gathering.
+//
+// An instance of this ME is created and deleted by the OLT.
+//
+// Relationships
+// An instance of this ME may be associated with zero or more instances of the PPTP xDSL UNI part
+// 1.
+//
+// Attributes
+// Managed Entity Id
+// Managed entity ID: This attribute uniquely identifies each instance of this ME. Through an
+// identical ID, this ME is implicitly linked to an instance of the PPTP xDSL UNI part 1 ME.
+// (R,-set-by-create) (mandatory) (2 bytes)
+//
+// Logging Depth Event Percentage Per Event _ Vtu_O Logging_Depth_Event_Percentage_Oi Table
+// Logging depth event percentage per event - VTU-O (LOGGING_DEPTH_EVENT_PERCENTAGE_Oi) table: This
+// parameter is the percentage of the data gathering event buffer assigned to event type i at the
+// VTU-O. See clause 7.3.6.1 of [ITU-T G.997.1]. Each element in the table consists of 2-bytes,
+// where the first byte is event type i, and the second byte is the percentage of event type i
+// defined as the integer value multiplied by 1%. (R, W) (optional) (2- N-bytes for N event types)
+//
+// Logging Depth Event Percentage Per Event _ Vtu_R Logging_Depth_Event_Percentage_Ri Table
+// Logging depth event percentage per event - VTU-R (LOGGING_DEPTH_EVENT_PERCENTAGE_Ri) table: This
+// parameter is the percentage of the data gathering event buffer assigned to event type i at the
+// VTU-R. See clause 7.3.6.2 of [ITU-T G.997.1]. Each element in the table consists of 2-bytes,
+// where the first byte is event type i, and the second byte is the percentage of event type i
+// defined as the integer value multiplied by 1%. (R, W) (optional) (2- N-bytes for N event types)
+//
+// Logging Depth For Vtu_O Reporting _ Vtu_R Logging_Depth_Reporting_O
+// Logging depth for VTU-O reporting - VTU-R (LOGGING_DEPTH_REPORTING_O): This parameter is the
+// logging depth that is requested for reporting the VTU-O event trace buffer in the COMIB, in
+// number of 6-byte data gathering records. See clause 7.3.6.3 of [ITU-T G.997.1]. (R, W)
+// (optional) (2-bytes)
+//
+// Logging Depth For Vtu_R Reporting _ Vtu_R Logging_Depth_Reporting_R
+// Logging depth for VTU-R reporting - VTU-R (LOGGING_DEPTH_REPORTING_R): This parameter is the
+// logging depth that is requested for reporting the VTU-R event trace buffer over the embedded
+// operations channel (eoc), in number of 6-byte data gathering records. See clause 7.3.6.4 of
+// [ITU-T G.997.1]. (R, W) (optional) (2-bytes)
+//
+// Logging Data Report Newer Events First _ Vtu_R Logging_Report_Newer_First
+// Logging data report newer events first - VTU-R (LOGGING_REPORT_NEWER_FIRST): This parameter
+// determines whether the VTU-R to reports newer events first or older events first. See clause
+// 7.3.6.4 of [ITU-T G.997.1]. False is mapped to 0, true is mapped to 1. (R, W) (optional)
+// (1-byte)
+//
+type XtuDataGatheringConfiguration struct {
+ ManagedEntityDefinition
+ Attributes AttributeValueMap
+}
+
+func init() {
+ xtudatagatheringconfigurationBME = &ManagedEntityDefinition{
+ Name: "XtuDataGatheringConfiguration",
+ ClassID: 413,
+ MessageTypes: mapset.NewSetWith(
+ Create,
+ Delete,
+ Get,
+ GetNext,
+ Set,
+ ),
+ AllowedAttributeMask: 0xf800,
+ AttributeDefinitions: AttributeDefinitionMap{
+ 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+ 1: TableField("LoggingDepthEventPercentagePerEventVtuOLoggingDepthEventPercentageOiTable", TableAttributeType, 0x8000, TableInfo{nil, 2}, mapset.NewSetWith(Read, Write), false, true, false, 1),
+ 2: TableField("LoggingDepthEventPercentagePerEventVtuRLoggingDepthEventPercentageRiTable", TableAttributeType, 0x4000, TableInfo{nil, 2}, mapset.NewSetWith(Read, Write), false, true, false, 2),
+ 3: Uint16Field("LoggingDepthForVtuOReportingVtuRLoggingDepthReportingO", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, Write), false, true, false, 3),
+ 4: Uint16Field("LoggingDepthForVtuRReportingVtuRLoggingDepthReportingR", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, Write), false, true, false, 4),
+ 5: ByteField("LoggingDataReportNewerEventsFirstVtuRLoggingReportNewerFirst", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, true, false, 5),
+ },
+ Access: CreatedByOlt,
+ Support: UnknownSupport,
+ }
+}
+
+// NewXtuDataGatheringConfiguration (class ID 413) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewXtuDataGatheringConfiguration(params ...ParamData) (*ManagedEntity, OmciErrors) {
+ return NewManagedEntity(*xtudatagatheringconfigurationBME, params...)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/go.mod b/vendor/github.com/opencord/omci-lib-go/go.mod
new file mode 100644
index 0000000..77a4226
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/go.mod
@@ -0,0 +1,21 @@
+module github.com/opencord/omci-lib-go
+
+go 1.13
+
+require (
+ github.com/aead/cmac v0.0.0-20160719120800-7af84192f0b1
+ github.com/deckarep/golang-set v1.7.1
+ github.com/google/gopacket v1.1.17
+ github.com/stretchr/objx v0.2.0 // indirect
+ github.com/stretchr/testify v1.5.1
+ golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d // indirect
+ golang.org/x/mod v0.2.0 // indirect
+ golang.org/x/net v0.0.0-20200222125558-5a598a2470a0 // indirect
+ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e // indirect
+ golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae // indirect
+ golang.org/x/text v0.3.2 // indirect
+ golang.org/x/tools v0.0.0-20200221224223-e1da425f72fd // indirect
+ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 // indirect
+ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
+ gopkg.in/yaml.v2 v2.2.8 // indirect
+)
diff --git a/vendor/github.com/opencord/omci-lib-go/go.sum b/vendor/github.com/opencord/omci-lib-go/go.sum
new file mode 100644
index 0000000..dd264c4
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/go.sum
@@ -0,0 +1,47 @@
+github.com/aead/cmac v0.0.0-20160719120800-7af84192f0b1 h1:+JkXLHME8vLJafGhOH4aoV2Iu8bR55nU6iKMVfYVLjY=
+github.com/aead/cmac v0.0.0-20160719120800-7af84192f0b1/go.mod h1:nuudZmJhzWtx2212z+pkuy7B6nkBqa+xwNXZHL1j8cg=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/deckarep/golang-set v1.7.1 h1:SCQV0S6gTtp6itiFrTqI+pfmJ4LN85S1YzhDf9rTHJQ=
+github.com/deckarep/golang-set v1.7.1/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ=
+github.com/google/gopacket v1.1.16-0.20190128161349-66eed7fc5258/go.mod h1:UCLx9mCmAwsVbn6qQl1WIEt2SO7Nd2fD0th1TBAsqBw=
+github.com/google/gopacket v1.1.17 h1:rMrlX2ZY2UbvT+sdz3+6J+pp2z+msCq9MxTU6ymxbBY=
+github.com/google/gopacket v1.1.17/go.mod h1:UdDNZ1OO62aGYVnPhxT1U6aI7ukYtA/kB8vaU0diBUM=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
+golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190405154228-4b34438f7a67/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20200211045251-2de505fc5306/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200221224223-e1da425f72fd/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
diff --git a/vendor/github.com/opencord/omci-lib-go/layers.go b/vendor/github.com/opencord/omci-lib-go/layers.go
new file mode 100644
index 0000000..f05c34b
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/layers.go
@@ -0,0 +1,198 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+
+package omci
+
+import (
+ "errors"
+ me "github.com/opencord/omci-lib-go/generated"
+ "github.com/google/gopacket"
+)
+
+var nextLayerMapping map[MessageType]gopacket.LayerType
+
+var (
+ LayerTypeCreateRequest gopacket.LayerType
+ LayerTypeDeleteRequest gopacket.LayerType
+ LayerTypeSetRequest gopacket.LayerType
+ LayerTypeGetRequest gopacket.LayerType
+ LayerTypeGetAllAlarmsRequest gopacket.LayerType
+ LayerTypeGetAllAlarmsNextRequest gopacket.LayerType
+ LayerTypeMibUploadRequest gopacket.LayerType
+ LayerTypeMibUploadNextRequest gopacket.LayerType
+ LayerTypeMibResetRequest gopacket.LayerType
+ LayerTypeTestRequest gopacket.LayerType
+ LayerTypeStartSoftwareDownloadRequest gopacket.LayerType
+ LayerTypeDownloadSectionRequest gopacket.LayerType
+ LayerTypeDownloadSectionLastRequest gopacket.LayerType
+ LayerTypeEndSoftwareDownloadRequest gopacket.LayerType
+ LayerTypeActivateSoftwareRequest gopacket.LayerType
+ LayerTypeCommitSoftwareRequest gopacket.LayerType
+ LayerTypeSynchronizeTimeRequest gopacket.LayerType
+ LayerTypeRebootRequest gopacket.LayerType
+ LayerTypeGetNextRequest gopacket.LayerType
+ LayerTypeGetCurrentDataRequest gopacket.LayerType
+ LayerTypeSetTableRequest gopacket.LayerType
+)
+var (
+ LayerTypeCreateResponse gopacket.LayerType
+ LayerTypeDeleteResponse gopacket.LayerType
+ LayerTypeSetResponse gopacket.LayerType
+ LayerTypeGetResponse gopacket.LayerType
+ LayerTypeGetAllAlarmsResponse gopacket.LayerType
+ LayerTypeGetAllAlarmsNextResponse gopacket.LayerType
+ LayerTypeMibUploadResponse gopacket.LayerType
+ LayerTypeMibUploadNextResponse gopacket.LayerType
+ LayerTypeMibResetResponse gopacket.LayerType
+ LayerTypeAlarmNotification gopacket.LayerType
+ LayerTypeAttributeValueChange gopacket.LayerType
+ LayerTypeTestResponse gopacket.LayerType
+ LayerTypeStartSoftwareDownloadResponse gopacket.LayerType
+ LayerTypeDownloadSectionResponse gopacket.LayerType
+ LayerTypeEndSoftwareDownloadResponse gopacket.LayerType
+ LayerTypeActivateSoftwareResponse gopacket.LayerType
+ LayerTypeCommitSoftwareResponse gopacket.LayerType
+ LayerTypeSynchronizeTimeResponse gopacket.LayerType
+ LayerTypeRebootResponse gopacket.LayerType
+ LayerTypeGetNextResponse gopacket.LayerType
+ LayerTypeTestResult gopacket.LayerType
+ LayerTypeGetCurrentDataResponse gopacket.LayerType
+ LayerTypeSetTableResponse gopacket.LayerType
+)
+
+func mkReqLayer(mt me.MsgType, mts string, decode gopacket.DecodeFunc) gopacket.LayerType {
+ return gopacket.RegisterLayerType(1000+(int(mt)|int(me.AR)),
+ gopacket.LayerTypeMetadata{Name: mts, Decoder: decode})
+}
+
+func mkRespLayer(mt me.MsgType, mts string, decode gopacket.DecodeFunc) gopacket.LayerType {
+ return gopacket.RegisterLayerType(1000+(int(mt)|int(me.AK)),
+ gopacket.LayerTypeMetadata{Name: mts, Decoder: decode})
+}
+
+func mkLayer(mt me.MsgType, mts string, decode gopacket.DecodeFunc) gopacket.LayerType {
+ return gopacket.RegisterLayerType(1000+(int(mt)),
+ gopacket.LayerTypeMetadata{Name: mts, Decoder: decode})
+}
+
+func init() {
+ // Create layers for message_type & action
+ LayerTypeCreateRequest = mkReqLayer(me.Create, "CreateRequest", gopacket.DecodeFunc(decodeCreateRequest))
+ LayerTypeDeleteRequest = mkReqLayer(me.Delete, "DeleteRequest", gopacket.DecodeFunc(decodeDeleteRequest))
+ LayerTypeSetRequest = mkReqLayer(me.Set, "SetRequest", gopacket.DecodeFunc(decodeSetRequest))
+ LayerTypeGetRequest = mkReqLayer(me.Get, "GetRequest", gopacket.DecodeFunc(decodeGetRequest))
+ LayerTypeGetAllAlarmsRequest = mkReqLayer(me.GetAllAlarms, "GetAllAlarmsRequest", gopacket.DecodeFunc(decodeGetAllAlarmsRequest))
+ LayerTypeGetAllAlarmsNextRequest = mkReqLayer(me.GetAllAlarmsNext, "GetAllAlarmsNextRequest", gopacket.DecodeFunc(decodeGetAllAlarmsNextRequest))
+ LayerTypeMibUploadRequest = mkReqLayer(me.MibUpload, "MibUploadRequest", gopacket.DecodeFunc(decodeMibUploadRequest))
+ LayerTypeMibUploadNextRequest = mkReqLayer(me.MibUploadNext, "MibUploadNextRequest", gopacket.DecodeFunc(decodeMibUploadNextRequest))
+ LayerTypeMibResetRequest = mkReqLayer(me.MibReset, "MibResetRequest", gopacket.DecodeFunc(decodeMibResetRequest))
+ LayerTypeTestRequest = mkReqLayer(me.Test, "TestRequest", gopacket.DecodeFunc(decodeTestRequest))
+ LayerTypeStartSoftwareDownloadRequest = mkReqLayer(me.StartSoftwareDownload, "StartSoftwareDownloadRequest", gopacket.DecodeFunc(decodeStartSoftwareDownloadRequest))
+
+ // For Download section, AR=0 if not response expected, AR=1 if response expected (last section of a window)
+ LayerTypeDownloadSectionRequest = mkLayer(me.DownloadSection, "DownloadSectionRequest", gopacket.DecodeFunc(decodeDownloadSectionRequest))
+ LayerTypeDownloadSectionLastRequest = mkReqLayer(me.DownloadSection, "DownloadLastSectionRequest", gopacket.DecodeFunc(decodeDownloadSectionRequest))
+ LayerTypeEndSoftwareDownloadRequest = mkReqLayer(me.EndSoftwareDownload, "EndSoftwareDownloadRequest", gopacket.DecodeFunc(decodeEndSoftwareDownloadRequest))
+ LayerTypeActivateSoftwareRequest = mkReqLayer(me.ActivateSoftware, "ActivateSoftwareRequest", gopacket.DecodeFunc(decodeActivateSoftwareRequest))
+ LayerTypeCommitSoftwareRequest = mkReqLayer(me.CommitSoftware, "CommitSoftwareRequest", gopacket.DecodeFunc(decodeCommitSoftwareRequest))
+ LayerTypeSynchronizeTimeRequest = mkReqLayer(me.SynchronizeTime, "SynchronizeTimeRequest", gopacket.DecodeFunc(decodeSynchronizeTimeRequest))
+ LayerTypeRebootRequest = mkReqLayer(me.Reboot, "RebootRequest", gopacket.DecodeFunc(decodeRebootRequest))
+ LayerTypeGetNextRequest = mkReqLayer(me.GetNext, "GetNextRequest", gopacket.DecodeFunc(decodeGetNextRequest))
+ LayerTypeGetCurrentDataRequest = mkReqLayer(me.GetCurrentData, "GetCurrentDataRequest", gopacket.DecodeFunc(decodeGetCurrentDataRequest))
+ LayerTypeSetTableRequest = mkReqLayer(me.SetTable, "SetTableRequest", gopacket.DecodeFunc(decodeSetTableRequest))
+
+ LayerTypeCreateResponse = mkRespLayer(me.Create, "CreateResponse", gopacket.DecodeFunc(decodeCreateResponse))
+ LayerTypeDeleteResponse = mkRespLayer(me.Delete, "DeleteResponse", gopacket.DecodeFunc(decodeDeleteResponse))
+ LayerTypeSetResponse = mkRespLayer(me.Set, "SetResponse", gopacket.DecodeFunc(decodeSetResponse))
+ LayerTypeGetResponse = mkRespLayer(me.Get, "GetResponse", gopacket.DecodeFunc(decodeGetResponse))
+ LayerTypeGetAllAlarmsResponse = mkRespLayer(me.GetAllAlarms, "GetAllAlarmsResponse", gopacket.DecodeFunc(decodeGetAllAlarmsResponse))
+ LayerTypeGetAllAlarmsNextResponse = mkRespLayer(me.GetAllAlarmsNext, "GetAllAlarmsNextResponse", gopacket.DecodeFunc(decodeGetAllAlarmsNextResponse))
+ LayerTypeMibUploadResponse = mkRespLayer(me.MibUpload, "MibUploadResponse", gopacket.DecodeFunc(decodeMibUploadResponse))
+ LayerTypeMibUploadNextResponse = mkRespLayer(me.MibUploadNext, "MibUploadNextResponse", gopacket.DecodeFunc(decodeMibUploadNextResponse))
+ LayerTypeMibResetResponse = mkRespLayer(me.MibReset, "MibResetResponse", gopacket.DecodeFunc(decodeMibResetResponse))
+ LayerTypeAlarmNotification = mkLayer(me.AlarmNotification, "AlarmNotification", gopacket.DecodeFunc(decodeAlarmNotification))
+ LayerTypeAttributeValueChange = mkLayer(me.AttributeValueChange, "AttributeValueChange", gopacket.DecodeFunc(decodeAttributeValueChange))
+ LayerTypeTestResponse = mkRespLayer(me.Test, "TestResponse", gopacket.DecodeFunc(decodeTestResponse))
+ LayerTypeStartSoftwareDownloadResponse = mkRespLayer(me.StartSoftwareDownload, "StartSoftwareDownloadResponse", gopacket.DecodeFunc(decodeStartSoftwareDownloadResponse))
+ LayerTypeDownloadSectionResponse = mkRespLayer(me.DownloadSection, "DownloadSectionResponse", gopacket.DecodeFunc(decodeDownloadSectionResponse))
+ LayerTypeEndSoftwareDownloadResponse = mkRespLayer(me.EndSoftwareDownload, "EndSoftwareDownloadResponse", gopacket.DecodeFunc(decodeEndSoftwareDownloadResponse))
+ LayerTypeActivateSoftwareResponse = mkRespLayer(me.ActivateSoftware, "ActivateSoftwareResponse", gopacket.DecodeFunc(decodeActivateSoftwareResponse))
+ LayerTypeCommitSoftwareResponse = mkRespLayer(me.CommitSoftware, "CommitSoftwareResponse", gopacket.DecodeFunc(decodeCommitSoftwareResponse))
+ LayerTypeSynchronizeTimeResponse = mkRespLayer(me.SynchronizeTime, "SynchronizeTimeResponse", gopacket.DecodeFunc(decodeSynchronizeTimeResponse))
+ LayerTypeRebootResponse = mkRespLayer(me.Reboot, "RebootResponse", gopacket.DecodeFunc(decodeRebootResponse))
+ LayerTypeGetNextResponse = mkRespLayer(me.GetNext, "GetNextResponse", gopacket.DecodeFunc(decodeGetNextResponse))
+ LayerTypeTestResult = mkRespLayer(me.TestResult, "TestResult", gopacket.DecodeFunc(decodeTestResult))
+ LayerTypeGetCurrentDataResponse = mkRespLayer(me.GetCurrentData, "GetCurrentDataResponse", gopacket.DecodeFunc(decodeGetCurrentDataResponse))
+ LayerTypeSetTableResponse = mkRespLayer(me.SetTable, "SetTableResponse", gopacket.DecodeFunc(decodeSetTableResponse))
+
+ // Map message_type and action to layer
+ nextLayerMapping = make(map[MessageType]gopacket.LayerType)
+
+ nextLayerMapping[CreateRequestType] = LayerTypeCreateRequest
+ nextLayerMapping[DeleteRequestType] = LayerTypeDeleteRequest
+ nextLayerMapping[SetRequestType] = LayerTypeSetRequest
+ nextLayerMapping[GetRequestType] = LayerTypeGetRequest
+ nextLayerMapping[GetAllAlarmsRequestType] = LayerTypeGetAllAlarmsRequest
+ nextLayerMapping[GetAllAlarmsNextRequestType] = LayerTypeGetAllAlarmsNextRequest
+ nextLayerMapping[MibUploadRequestType] = LayerTypeMibUploadRequest
+ nextLayerMapping[MibUploadNextRequestType] = LayerTypeMibUploadNextRequest
+ nextLayerMapping[MibResetRequestType] = LayerTypeMibResetRequest
+ nextLayerMapping[TestRequestType] = LayerTypeTestRequest
+ nextLayerMapping[StartSoftwareDownloadRequestType] = LayerTypeStartSoftwareDownloadRequest
+ nextLayerMapping[DownloadSectionRequestType] = LayerTypeDownloadSectionRequest
+ nextLayerMapping[EndSoftwareDownloadRequestType] = LayerTypeEndSoftwareDownloadRequest
+ nextLayerMapping[ActivateSoftwareRequestType] = LayerTypeActivateSoftwareRequest
+ nextLayerMapping[CommitSoftwareRequestType] = LayerTypeCommitSoftwareRequest
+ nextLayerMapping[SynchronizeTimeRequestType] = LayerTypeSynchronizeTimeRequest
+ nextLayerMapping[RebootRequestType] = LayerTypeRebootRequest
+ nextLayerMapping[GetNextRequestType] = LayerTypeGetNextRequest
+ nextLayerMapping[GetCurrentDataRequestType] = LayerTypeGetCurrentDataRequest
+ nextLayerMapping[SetTableRequestType] = LayerTypeSetTableRequest
+
+ nextLayerMapping[CreateResponseType] = LayerTypeCreateResponse
+ nextLayerMapping[DeleteResponseType] = LayerTypeDeleteResponse
+ nextLayerMapping[SetResponseType] = LayerTypeSetResponse
+ nextLayerMapping[GetResponseType] = LayerTypeGetResponse
+ nextLayerMapping[GetAllAlarmsResponseType] = LayerTypeGetAllAlarmsResponse
+ nextLayerMapping[GetAllAlarmsNextResponseType] = LayerTypeGetAllAlarmsNextResponse
+ nextLayerMapping[MibUploadResponseType] = LayerTypeMibUploadResponse
+ nextLayerMapping[MibUploadNextResponseType] = LayerTypeMibUploadNextResponse
+ nextLayerMapping[MibResetResponseType] = LayerTypeMibResetResponse
+ nextLayerMapping[TestResponseType] = LayerTypeTestResponse
+ nextLayerMapping[StartSoftwareDownloadResponseType] = LayerTypeStartSoftwareDownloadResponse
+ nextLayerMapping[DownloadSectionResponseType] = LayerTypeDownloadSectionResponse
+ nextLayerMapping[EndSoftwareDownloadResponseType] = LayerTypeEndSoftwareDownloadResponse
+ nextLayerMapping[ActivateSoftwareResponseType] = LayerTypeActivateSoftwareResponse
+ nextLayerMapping[CommitSoftwareResponseType] = LayerTypeCommitSoftwareResponse
+ nextLayerMapping[SynchronizeTimeResponseType] = LayerTypeSynchronizeTimeResponse
+ nextLayerMapping[RebootResponseType] = LayerTypeRebootResponse
+ nextLayerMapping[GetNextResponseType] = LayerTypeGetNextResponse
+ nextLayerMapping[GetCurrentDataResponseType] = LayerTypeGetCurrentDataResponse
+ nextLayerMapping[SetTableResponseType] = LayerTypeSetTableResponse
+
+ nextLayerMapping[AttributeValueChangeType] = LayerTypeAttributeValueChange
+ nextLayerMapping[AlarmNotificationType] = LayerTypeAlarmNotification
+ nextLayerMapping[TestResultType] = LayerTypeTestResult
+}
+
+func MsgTypeToNextLayer(mt MessageType) (gopacket.LayerType, error) {
+ nextLayer, ok := nextLayerMapping[mt]
+ if ok {
+ return nextLayer, nil
+ }
+ return gopacket.LayerTypeZero, errors.New("unknown message type")
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/mebase.go b/vendor/github.com/opencord/omci-lib-go/mebase.go
new file mode 100644
index 0000000..750233d
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/mebase.go
@@ -0,0 +1,105 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+
+package omci
+
+import (
+ "encoding/binary"
+ "fmt"
+ me "github.com/opencord/omci-lib-go/generated"
+ "github.com/google/gopacket"
+ "github.com/google/gopacket/layers"
+)
+
+type MeBasePacket struct {
+ EntityClass me.ClassID
+ EntityInstance uint16
+
+ gopacket.Layer
+ layers.BaseLayer
+ MsgLayerType gopacket.LayerType
+}
+
+func (msg *MeBasePacket) String() string {
+ return fmt.Sprintf("ClassID: %v, InstanceId: %d/%#x",
+ msg.EntityClass, msg.EntityInstance, msg.EntityInstance)
+}
+
+// CanDecode returns the set of layer types that this DecodingLayer can decode
+func (msg *MeBasePacket) CanDecode() gopacket.LayerClass {
+ return msg.MsgLayerType
+}
+
+// LayerType returns MsgLayerType. It partially satisfies Layer and SerializableLayer
+func (msg *MeBasePacket) LayerType() gopacket.LayerType {
+ return msg.MsgLayerType
+}
+
+// LayerContents returns the bytes of the packet layer.
+func (msg *MeBasePacket) LayerContents() []byte {
+ return msg.Contents
+}
+
+// LayerPayload returns the bytes contained within the packet layer
+func (msg *MeBasePacket) LayerPayload() []byte {
+ return msg.Payload
+}
+
+// NextLayerType returns the layer type contained by this DecodingLayer
+func (msg *MeBasePacket) NextLayerType() gopacket.LayerType {
+ return gopacket.LayerTypeZero
+}
+
+// DecodeFromBytes decodes the given bytes into this layer
+func (msg *MeBasePacket) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Note: Base OMCI frame already checked for frame with at least 10 octets
+ msg.EntityClass = me.ClassID(binary.BigEndian.Uint16(data[0:]))
+ msg.EntityInstance = binary.BigEndian.Uint16(data[2:])
+ msg.BaseLayer = layers.BaseLayer{Contents: data[:4], Payload: data[4:]}
+ return nil
+}
+
+// SerializeTo provides serialization of this message layer
+func (msg *MeBasePacket) SerializeTo(b gopacket.SerializeBuffer) error {
+ // Add class ID and entity ID
+ bytes, err := b.PrependBytes(4)
+ if err != nil {
+ return err
+ }
+ binary.BigEndian.PutUint16(bytes, uint16(msg.EntityClass))
+ binary.BigEndian.PutUint16(bytes[2:], msg.EntityInstance)
+ return nil
+}
+
+type layerDecodingLayer interface {
+ gopacket.Layer
+ DecodeFromBytes([]byte, gopacket.PacketBuilder) error
+ NextLayerType() gopacket.LayerType
+}
+
+func decodingLayerDecoder(d layerDecodingLayer, data []byte, p gopacket.PacketBuilder) error {
+ err := d.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ p.AddLayer(d)
+ next := d.NextLayerType()
+ if next == gopacket.LayerTypeZero {
+ return nil
+ }
+ return p.NextDecoder(next)
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/meframe.go b/vendor/github.com/opencord/omci-lib-go/meframe.go
new file mode 100644
index 0000000..70edf4f
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/meframe.go
@@ -0,0 +1,1385 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ *
+ * 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.
+ */
+ /*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ * https://github.com/opencord/omci-lib-go/OMCI-parser/README.md
+ */
+
+package omci
+
+import (
+ "errors"
+ "fmt"
+ me "github.com/opencord/omci-lib-go/generated"
+ "github.com/deckarep/golang-set"
+ "github.com/google/gopacket"
+ "time"
+)
+
+var encoderMap map[MessageType]func(*me.ManagedEntity, options) (gopacket.SerializableLayer, error)
+
+func init() {
+ encoderMap = make(map[MessageType]func(*me.ManagedEntity, options) (gopacket.SerializableLayer, error))
+
+ encoderMap[CreateRequestType] = CreateRequestFrame
+ encoderMap[DeleteRequestType] = DeleteRequestFrame
+ encoderMap[SetRequestType] = SetRequestFrame
+ encoderMap[GetRequestType] = GetRequestFrame
+ encoderMap[GetAllAlarmsRequestType] = GetAllAlarmsRequestFrame
+ encoderMap[GetAllAlarmsNextRequestType] = GetAllAlarmsNextRequestFrame
+ encoderMap[MibUploadRequestType] = MibUploadRequestFrame
+ encoderMap[MibUploadNextRequestType] = MibUploadNextRequestFrame
+ encoderMap[MibResetRequestType] = MibResetRequestFrame
+ encoderMap[TestRequestType] = TestRequestFrame
+ encoderMap[StartSoftwareDownloadRequestType] = StartSoftwareDownloadRequestFrame
+ encoderMap[DownloadSectionRequestType] = DownloadSectionRequestFrame
+ encoderMap[EndSoftwareDownloadRequestType] = EndSoftwareDownloadRequestFrame
+ encoderMap[ActivateSoftwareRequestType] = ActivateSoftwareRequestFrame
+ encoderMap[CommitSoftwareRequestType] = CommitSoftwareRequestFrame
+ encoderMap[SynchronizeTimeRequestType] = SynchronizeTimeRequestFrame
+ encoderMap[RebootRequestType] = RebootRequestFrame
+ encoderMap[GetNextRequestType] = GetNextRequestFrame
+ encoderMap[GetCurrentDataRequestType] = GetCurrentDataRequestFrame
+ encoderMap[SetTableRequestType] = SetTableRequestFrame
+ encoderMap[CreateResponseType] = CreateResponseFrame
+ encoderMap[DeleteResponseType] = DeleteResponseFrame
+ encoderMap[SetResponseType] = SetResponseFrame
+ encoderMap[GetResponseType] = GetResponseFrame
+ encoderMap[GetAllAlarmsResponseType] = GetAllAlarmsResponseFrame
+ encoderMap[GetAllAlarmsNextResponseType] = GetAllAlarmsNextResponseFrame
+ encoderMap[MibUploadResponseType] = MibUploadResponseFrame
+ encoderMap[MibUploadNextResponseType] = MibUploadNextResponseFrame
+ encoderMap[MibResetResponseType] = MibResetResponseFrame
+ encoderMap[TestResponseType] = TestResponseFrame
+ encoderMap[StartSoftwareDownloadResponseType] = StartSoftwareDownloadResponseFrame
+ encoderMap[DownloadSectionResponseType] = DownloadSectionResponseFrame
+ encoderMap[EndSoftwareDownloadResponseType] = EndSoftwareDownloadResponseFrame
+ encoderMap[ActivateSoftwareResponseType] = ActivateSoftwareResponseFrame
+ encoderMap[CommitSoftwareResponseType] = CommitSoftwareResponseFrame
+ encoderMap[SynchronizeTimeResponseType] = SynchronizeTimeResponseFrame
+ encoderMap[RebootResponseType] = RebootResponseFrame
+ encoderMap[GetNextResponseType] = GetNextResponseFrame
+ encoderMap[GetCurrentDataResponseType] = GetCurrentDataResponseFrame
+ encoderMap[SetTableResponseType] = SetTableResponseFrame
+ encoderMap[AlarmNotificationType] = AlarmNotificationFrame
+ encoderMap[AttributeValueChangeType] = AttributeValueChangeFrame
+ encoderMap[TestResultType] = TestResultFrame
+}
+
+type options struct {
+ frameFormat DeviceIdent
+ failIfTruncated bool
+ attributeMask uint16
+ result me.Results // Common for many responses
+ attrExecutionMask uint16 // Create Response Only if results == 3 or Set Response only if results == 0
+ unsupportedMask uint16 // Set Response only if results == 9
+ sequenceNumberCountOrSize uint16 // For get-next request frames and for frames that return number of commands or length
+ transactionID uint16 // OMCI TID
+ mode uint8 // Get All Alarms retrieval mode
+ alarm AlarmOptions // Alarm related frames
+ software SoftwareOptions // Software image related frames
+ payload interface{} // ME or list of MEs, alarm bitmap, timestamp, ...
+ addDefaults bool // Add missing SetByCreate attributes for Create Requests
+}
+
+var defaultFrameOptions = options{
+ frameFormat: BaselineIdent,
+ failIfTruncated: false,
+ attributeMask: 0xFFFF,
+ result: me.Success,
+ attrExecutionMask: 0,
+ unsupportedMask: 0,
+ sequenceNumberCountOrSize: 0,
+ transactionID: 0,
+ mode: 0,
+ software: defaultSoftwareOptions,
+ alarm: defaultAlarmOptions,
+ payload: nil,
+ addDefaults: false,
+}
+
+// FrameOption sets options such as frame format, etc.
+type FrameOption func(*options)
+
+// FrameFormat determines determines the OMCI message format used on the fiber.
+// The default value is BaselineIdent
+func FrameFormat(ff DeviceIdent) FrameOption {
+ return func(o *options) {
+ o.frameFormat = ff
+ }
+}
+
+// FailIfTruncated determines whether a request to encode a frame that does
+// not have enough room for all requested options should fail and return an
+// error.
+//
+// If set to 'false', the behaviour depends on the message type/operation
+// requested. The table below provides more information:
+//
+// Request Type Behavour
+// ------------------------------------------------------------------------
+// CreateRequest A single CreateRequest struct is always returned as the
+// CreateRequest message does not have an attributes Mask
+// field and a Baseline OMCI message is large enough to
+// support all Set-By-Create attributes.
+//
+// GetResponse If multiple OMCI response frames are needed to return
+// all requested attributes, only the attributes that can
+// fit will be returned and the FailedAttributeMask field
+// set to the attributes that could not be returned
+//
+// If this is an ME with an attribute that is a table, the
+// first GetResponse struct will return the size of the
+// attribute and the following GetNextResponse structs will
+// contain the attribute data. The ONU application is
+// responsible for stashing these extra struct(s) away in
+// anticipation of possible GetNext Requests occurring for
+// the attribute. See the discussion on Table attributes
+// in the GetResponse section of ITU G.988 for more
+// information.
+//
+// If set to 'true', no struct(s) are returned and an error is provided.
+//
+// The default value is 'false'
+func FailIfTruncated(f bool) FrameOption {
+ return func(o *options) {
+ o.failIfTruncated = f
+ }
+}
+
+// attributeMask determines the attributes to encode into the frame.
+// The default value is 0xFFFF which specifies all available attributes
+// in the frame
+func AttributeMask(m uint16) FrameOption {
+ return func(o *options) {
+ o.attributeMask = m
+ }
+}
+
+// AttributeExecutionMask is used by the Create and Set Response frames to indicate
+// attributes that failed to be created/set.
+func AttributeExecutionMask(m uint16) FrameOption {
+ return func(o *options) {
+ o.attrExecutionMask = m
+ }
+}
+
+// UnsupportedAttributeMask is used by the Set Response frames to indicate
+// attributes are not supported on this ONU
+func UnsupportedAttributeMask(m uint16) FrameOption {
+ return func(o *options) {
+ o.unsupportedMask = m
+ }
+}
+
+// Result is used to set returned results in responses
+// that have that field
+func Result(r me.Results) FrameOption {
+ return func(o *options) {
+ o.result = r
+ }
+}
+
+// SequenceNumberCountOrSize is used by the GetNext and MibUploadGetNext request frames and for
+// frames that return number of commands or length such as Get (table attribute) or
+// MibUpload/GetAllAlarms/...
+func SequenceNumberCountOrSize(m uint16) FrameOption {
+ return func(o *options) {
+ o.sequenceNumberCountOrSize = m
+ }
+}
+
+// TransactionID is to specify the TID in the OMCI header. The default is
+// zero which requires the caller to set it to the appropriate value if this
+// is not an autonomous ONU notification frame
+func TransactionID(tid uint16) FrameOption {
+ return func(o *options) {
+ o.transactionID = tid
+ }
+}
+
+// RetrievalMode is to specify the the Alarm Retrieval Mode in a GetAllAlarms Request
+func RetrievalMode(m uint8) FrameOption {
+ return func(o *options) {
+ o.mode = m
+ }
+}
+
+// SuccessResult is to specify the the SuccessResult for a SynchronizeTime Response
+func SuccessResult(m uint8) FrameOption {
+ return func(o *options) {
+ o.mode = m
+ }
+}
+
+// RebootCondition is to specify the the Reboot Condition for a ONU Reboot request
+func RebootCondition(m uint8) FrameOption {
+ return func(o *options) {
+ o.mode = m
+ }
+}
+
+// Alarm is used to specify a collection of options related to Alarm notifications
+func Alarm(ao AlarmOptions) FrameOption {
+ return func(o *options) {
+ o.alarm = ao
+ }
+}
+
+// Software is used to specify a collection of options related to Software image
+// manipulation
+func Software(so SoftwareOptions) FrameOption {
+ return func(o *options) {
+ o.software = so
+ }
+}
+
+// Payload is used to specify ME payload options that are not simple types. This
+// include the ME (list of MEs) to encode into a GetNextMibUpload response, the
+// alarm bitmap for alarm relates responses/notifications, alarm bitmaps, and
+// for specifying the download section data when performing Software Download.
+func Payload(p interface{}) FrameOption {
+ return func(o *options) {
+ o.payload = p
+ }
+}
+
+// AddDefaults is used to specify that if a SetByCreate attribute is not
+// specified in the list of attributes for a Create Request, use the attribute
+// defined default
+func AddDefaults(add bool) FrameOption {
+ return func(o *options) {
+ o.addDefaults = add
+ }
+}
+
+// Alarm related frames have a wide variety of settable values. Placing them
+// in a separate struct is mainly to keep the base options simple
+type AlarmOptions struct {
+ AlarmClassID me.ClassID
+ AlarmInstance uint16
+ AlarmBitmap []byte // Should be up to 58 octets
+}
+
+var defaultAlarmOptions = AlarmOptions{
+ AlarmClassID: 0,
+ AlarmInstance: 0,
+ AlarmBitmap: nil,
+}
+
+// Software related frames have a wide variety of settable values. Placing them
+// in a separate struct is mainly to keep the base options simple
+type SoftwareOptions struct {
+ WindowSize uint8 // Window size - 1
+ ImageSize uint32
+ CircuitPacks []uint16 // slot (upper 8 bits) and instance (lower 8 bits)
+ Results []downloadResults
+}
+
+var defaultSoftwareOptions = SoftwareOptions{
+ WindowSize: 0,
+ ImageSize: 0,
+ CircuitPacks: nil,
+ Results: nil,
+}
+
+// EncodeFrame will encode the Managed Entity specific protocol struct and an
+// OMCILayer struct. This struct can be provided to the gopacket.SerializeLayers()
+// function to be serialized into a buffer for transmission.
+func EncodeFrame(m *me.ManagedEntity, messageType MessageType, opt ...FrameOption) (*OMCI, gopacket.SerializableLayer, error) {
+ // Check for message type support
+ msgType := me.MsgType(messageType & me.MsgTypeMask)
+ meDefinition := m.GetManagedEntityDefinition()
+
+ if !me.SupportsMsgType(meDefinition, msgType) {
+ msg := fmt.Sprintf("managed entity %v does not support %v Message-Type",
+ meDefinition.GetName(), msgType)
+ return nil, nil, errors.New(msg)
+ }
+ // Decode options
+ opts := defaultFrameOptions
+ for _, o := range opt {
+ o(&opts)
+ }
+ // TODO: If AttributesMask option passed in, check for deprecated options. Allow encoding option
+ // that will ignore deprecated option. Add additional in the get and set meframe_test,go
+ // test functions to test this. Also have it test attribute name(s) to see if the attribute
+ // is deprecated. The OMCI-Parser now supports detection of deprecated attributes and
+ // provides that to the code-generator (and currently available in generated golang code).
+ // Note: Transaction ID should be set before frame serialization
+ omci := &OMCI{
+ TransactionID: opts.transactionID,
+ MessageType: messageType,
+ DeviceIdentifier: opts.frameFormat,
+ }
+ var meInfo gopacket.SerializableLayer
+ var err error
+
+ if encoder, ok := encoderMap[messageType]; ok {
+ meInfo, err = encoder(m, opts)
+ } else {
+ err = fmt.Errorf("message-type: %v/%#x is not supported", messageType, messageType)
+ }
+ if err != nil {
+ return nil, nil, err
+ }
+ return omci, meInfo, err
+}
+
+// For most all create methods below, error checking for valid masks, attribute
+// values, and other fields is left to when the frame is actually serialized.
+
+func checkAttributeMask(m *me.ManagedEntity, mask uint16) (uint16, error) {
+ if mask == defaultFrameOptions.attributeMask {
+ // Scale back to just what is allowed
+ return m.GetAllowedAttributeMask(), nil
+ }
+ if mask&m.GetManagedEntityDefinition().GetAllowedAttributeMask() != mask {
+ return 0, errors.New("invalid attribute mask")
+ }
+ return mask & m.GetManagedEntityDefinition().GetAllowedAttributeMask(), nil
+}
+
+// return the maximum space that can be used by attributes
+func maxPacketAvailable(m *me.ManagedEntity, opt options) uint {
+ if opt.frameFormat == BaselineIdent {
+ // OMCI Header - 4 octets
+ // Class ID/Instance ID - 4 octets
+ // Length field - 4 octets
+ // MIC - 4 octets
+ return MaxBaselineLength - 16
+ }
+ // OMCI Header - 4 octets
+ // Class ID/Instance ID - 4 octets
+ // Length field - 4 octets
+ // MIC - 4 octets
+ return MaxExtendedLength - 16
+}
+
+func calculateAttributeMask(m *me.ManagedEntity, requestedMask uint16) (uint16, error) {
+ attrDefs := m.GetAttributeDefinitions()
+ var entityIDName string
+ if entry, ok := attrDefs[0]; ok {
+ entityIDName = entry.GetName()
+ } else {
+ panic("unexpected error") // All attribute definition maps have an entity ID
+ }
+ attributeNames := make([]interface{}, 0)
+ for attrName := range m.GetAttributeValueMap() {
+ if attrName == entityIDName {
+ continue // No mask for EntityID
+ }
+ attributeNames = append(attributeNames, attrName)
+ }
+ calculatedMask, err := me.GetAttributesBitmap(attrDefs, mapset.NewSetWith(attributeNames...))
+
+ if err != nil {
+ return 0, err
+ }
+ return calculatedMask & requestedMask, nil
+}
+
+// GenFrame is a helper function to make tests a little easier to read.
+// For a real application, use the .../omci/generated/class.go 'New'
+// functions to create your Managed Entity and then use it to call the
+// EncodeFrame method.
+func GenFrame(meInstance *me.ManagedEntity, messageType MessageType, options ...FrameOption) ([]byte, error) {
+ omciLayer, msgLayer, err := EncodeFrame(meInstance, messageType, options...)
+ if err != nil {
+ return nil, err
+ }
+ // Serialize the frame and send it
+ var serializeOptions gopacket.SerializeOptions
+ serializeOptions.FixLengths = true
+
+ buffer := gopacket.NewSerializeBuffer()
+ err = gopacket.SerializeLayers(buffer, serializeOptions, omciLayer, msgLayer)
+ if err != nil {
+ return nil, err
+ }
+ return buffer.Bytes(), nil
+}
+
+func CreateRequestFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ // NOTE: The OMCI parser does not extract the default values of set-by-create attributes
+ // and are the zero 'default' (or nil) at this time. For this reason, make sure
+ // you specify all non-zero default values and pass them in appropriate
+ meLayer := &CreateRequest{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ Attributes: m.GetAttributeValueMap(),
+ }
+ // Add any missing SetByCreate options if requested
+ if opt.addDefaults {
+ if attrDefs, err := me.GetAttributesDefinitions(m.GetClassID()); err.StatusCode() == me.Success {
+ for index, attr := range attrDefs {
+ if me.SupportsAttributeAccess(attr, me.SetByCreate) {
+ if index == 0 {
+ continue // Skip Entity ID, if it is SetByCreate, they should always specify it
+ }
+ if _, found := meLayer.Attributes[attr.GetName()]; !found {
+ meLayer.Attributes[attr.GetName()] = attr.DefValue
+ }
+ }
+ }
+ }
+ }
+ return meLayer, nil
+}
+
+func CreateResponseFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ meLayer := &CreateResponse{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ Result: opt.result,
+ }
+ if meLayer.Result == me.ParameterError {
+ meLayer.AttributeExecutionMask = opt.attrExecutionMask
+ }
+ return meLayer, nil
+}
+
+func DeleteRequestFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ meLayer := &DeleteRequest{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ }
+ return meLayer, nil
+}
+
+func DeleteResponseFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ meLayer := &DeleteResponse{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ Result: opt.result,
+ }
+ return meLayer, nil
+}
+
+func SetRequestFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ mask, err := checkAttributeMask(m, opt.attributeMask)
+ if err != nil {
+ return nil, err
+ }
+ mask, err = calculateAttributeMask(m, mask)
+ if err != nil {
+ return nil, err
+ }
+ meDefinition := m.GetManagedEntityDefinition()
+ attrDefs := meDefinition.GetAttributeDefinitions()
+ attrMap := m.GetAttributeValueMap()
+
+ // Get payload space available
+ maxPayload := maxPacketAvailable(m, opt)
+ payloadAvailable := int(maxPayload) - 2 // Less attribute mask
+
+ meLayer := &SetRequest{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ AttributeMask: 0,
+ Attributes: make(me.AttributeValueMap),
+ }
+ for mask != 0 {
+ // Iterate down the attributes (Attribute 0 is the ManagedEntity ID)
+ var attrIndex uint
+ for attrIndex = 1; attrIndex <= 16; attrIndex++ {
+ // Is this attribute requested
+ if mask&(1<<(16-attrIndex)) != 0 {
+ // Get definitions since we need the name
+ attrDef, ok := attrDefs[attrIndex]
+ if !ok {
+ msg := fmt.Sprintf("Unexpected error, index %v not valued for ME %v",
+ attrIndex, meDefinition.GetName())
+ return nil, errors.New(msg)
+ }
+ var attrValue interface{}
+ attrValue, ok = attrMap[attrDef.Name]
+ if !ok {
+ msg := fmt.Sprintf("Unexpected error, attribute %v not provided in ME %v: %v",
+ attrDef.GetName(), meDefinition.GetName(), m)
+ return nil, errors.New(msg)
+ }
+ // Is space available?
+ if attrDef.Size <= payloadAvailable {
+ // Mark bit handled
+ mask &= ^attrDef.Mask
+ meLayer.AttributeMask |= attrDef.Mask
+ meLayer.Attributes[attrDef.Name] = attrValue
+ payloadAvailable -= attrDef.Size
+ } else {
+ // TODO: Should we set truncate?
+ msg := fmt.Sprintf("out-of-space. Cannot fit attribute %v into SetRequest message",
+ attrDef.GetName())
+ return nil, me.NewMessageTruncatedError(msg)
+ }
+ }
+ }
+ }
+ if err == nil && meLayer.AttributeMask == 0 {
+ // TODO: Is a set request with no attributes valid?
+ return nil, errors.New("no attributes encoded for SetRequest")
+ }
+ return meLayer, nil
+}
+
+func SetResponseFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ meLayer := &SetResponse{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ Result: opt.result,
+ }
+ if meLayer.Result == me.AttributeFailure {
+ meLayer.UnsupportedAttributeMask = opt.unsupportedMask
+ meLayer.FailedAttributeMask = opt.attrExecutionMask
+ }
+ return meLayer, nil
+}
+
+func GetRequestFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ // Given mask sent in (could be default of 0xFFFF) get what is allowable.
+ // This will be all allowed if 0xFFFF is passed in, or a subset if a fixed
+ // number of items.
+ maxMask, err := checkAttributeMask(m, opt.attributeMask)
+ if err != nil {
+ return nil, err
+ }
+ // Now scan attributes and reduce mask to only those requested
+ var mask uint16
+ mask, err = calculateAttributeMask(m, maxMask)
+ if err != nil {
+ return nil, err
+ }
+ if mask == 0 {
+ // TODO: Is a Get request with no attributes valid?
+ return nil, errors.New("no attributes requested for GetRequest")
+ }
+ meLayer := &GetRequest{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ AttributeMask: mask,
+ }
+ return meLayer, nil
+}
+
+func GetResponseFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ mask, err := checkAttributeMask(m, opt.attributeMask)
+ if err != nil {
+ return nil, err
+ }
+ mask, err = calculateAttributeMask(m, mask)
+ if err != nil {
+ return nil, err
+ }
+ meLayer := &GetResponse{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ Result: opt.result,
+ AttributeMask: 0,
+ Attributes: make(me.AttributeValueMap),
+ }
+ if meLayer.Result == me.AttributeFailure {
+ meLayer.UnsupportedAttributeMask = opt.unsupportedMask
+ meLayer.FailedAttributeMask = opt.attrExecutionMask
+ }
+ // Encode whatever we can
+ if meLayer.Result == me.Success || meLayer.Result == me.AttributeFailure {
+ // Encode results
+ // Get payload space available
+ maxPayload := maxPacketAvailable(m, opt)
+ payloadAvailable := int(maxPayload) - 2 - 4 // Less attribute mask and attribute error encoding
+ meDefinition := m.GetManagedEntityDefinition()
+ attrDefs := meDefinition.GetAttributeDefinitions()
+ attrMap := m.GetAttributeValueMap()
+
+ if mask != 0 {
+ // Iterate down the attributes (Attribute 0 is the ManagedEntity ID)
+ var attrIndex uint
+ for attrIndex = 1; attrIndex <= 16; attrIndex++ {
+ // Is this attribute requested
+ if mask&(1<<(16-attrIndex)) != 0 {
+ // Get definitions since we need the name
+ attrDef, ok := attrDefs[attrIndex]
+ if !ok {
+ msg := fmt.Sprintf("Unexpected error, index %v not valued for ME %v",
+ attrIndex, meDefinition.GetName())
+ return nil, errors.New(msg)
+ }
+ var attrValue interface{}
+ attrValue, ok = attrMap[attrDef.Name]
+ if !ok {
+ msg := fmt.Sprintf("Unexpected error, attribute %v not provided in ME %v: %v",
+ attrDef.GetName(), meDefinition.GetName(), m)
+ return nil, errors.New(msg)
+ }
+ // Is space available?
+ if attrDef.Size <= payloadAvailable {
+ // Mark bit handled
+ mask &= ^attrDef.Mask
+ meLayer.AttributeMask |= attrDef.Mask
+ meLayer.Attributes[attrDef.Name] = attrValue
+ payloadAvailable -= attrDef.Size
+
+ } else if opt.failIfTruncated {
+ // TODO: Should we set truncate?
+ msg := fmt.Sprintf("out-of-space. Cannot fit attribute %v into GetResponse message",
+ attrDef.GetName())
+ return nil, me.NewMessageTruncatedError(msg)
+ } else {
+ // Add to existing 'failed' mask and update result
+ meLayer.FailedAttributeMask |= attrDef.Mask
+ meLayer.Result = me.AttributeFailure
+ }
+ }
+ }
+ }
+ }
+ return meLayer, nil
+}
+
+func GetAllAlarmsRequestFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ // Common for all MEs
+ meLayer := &GetAllAlarmsRequest{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ AlarmRetrievalMode: opt.mode,
+ }
+ return meLayer, nil
+}
+
+func GetAllAlarmsResponseFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ // Common for all MEs
+ meLayer := &GetAllAlarmsResponse{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ NumberOfCommands: opt.sequenceNumberCountOrSize,
+ }
+ return meLayer, nil
+}
+
+func GetAllAlarmsNextRequestFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ // Common for all MEs
+ meLayer := &GetAllAlarmsNextRequest{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ CommandSequenceNumber: opt.sequenceNumberCountOrSize,
+ }
+ return meLayer, nil
+}
+
+func GetAllAlarmsNextResponseFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ // Common for all MEs
+ meLayer := &GetAllAlarmsNextResponse{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ AlarmEntityClass: opt.alarm.AlarmClassID,
+ AlarmEntityInstance: opt.alarm.AlarmInstance,
+ }
+ if len(opt.alarm.AlarmBitmap) > 28 {
+ return nil, errors.New("invalid Alarm Bitmap Size. Must be [0..27]")
+ }
+ for octet := 0; octet < len(opt.alarm.AlarmBitmap); octet++ {
+ meLayer.AlarmBitMap[octet] = opt.alarm.AlarmBitmap[octet]
+ }
+ for octet := len(opt.alarm.AlarmBitmap); octet < 28; octet++ {
+ meLayer.AlarmBitMap[octet] = 0
+ }
+ return meLayer, nil
+}
+
+func MibUploadRequestFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ // Common for all MEs
+ meLayer := &MibUploadRequest{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: 0,
+ },
+ }
+ return meLayer, nil
+}
+
+func MibUploadResponseFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ // Common for all MEs
+ meLayer := &MibUploadResponse{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: 0,
+ },
+ NumberOfCommands: opt.sequenceNumberCountOrSize,
+ }
+ return meLayer, nil
+}
+
+func MibUploadNextRequestFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ // Common for all MEs
+ meLayer := &MibUploadNextRequest{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: 0,
+ },
+ CommandSequenceNumber: opt.sequenceNumberCountOrSize,
+ }
+ return meLayer, nil
+}
+
+func MibUploadNextResponseFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ // Common for all MEs
+ meLayer := &MibUploadNextResponse{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ }
+ if opt.payload == nil {
+ // Shortcut used to specify the request sequence number is out of range, encode
+ // a ME instance with class ID of zero to specify this per ITU G.988
+ meDef := me.ManagedEntityDefinition{
+ Name: "InvalidSequenceNumberManagedEntity",
+ ClassID: me.ClassID(0),
+ MessageTypes: nil,
+ AttributeDefinitions: make(me.AttributeDefinitionMap),
+ }
+ opt.payload, _ = me.NewManagedEntity(meDef)
+ }
+ if _, ok := opt.payload.(*[]me.ManagedEntity); ok {
+ if opt.frameFormat == BaselineIdent {
+ return nil, errors.New("invalid payload for Baseline message")
+ }
+ // TODO: List of MEs. valid for extended messages only
+ } else if managedEntity, ok := opt.payload.(*me.ManagedEntity); ok {
+ // Single ME
+ meLayer.ReportedME = *managedEntity
+ } else {
+ return nil, errors.New("invalid payload for MibUploadNextResponse frame")
+ }
+ return meLayer, nil
+}
+
+func MibResetRequestFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ // Common for all MEs
+ meLayer := &MibResetRequest{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ }
+ return meLayer, nil
+}
+
+func MibResetResponseFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ // Common for all MEs
+ meLayer := &MibResetResponse{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ Result: opt.result,
+ }
+ return meLayer, nil
+}
+
+func AlarmNotificationFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ mask, err := checkAttributeMask(m, opt.attributeMask)
+ if err != nil {
+ return nil, err
+ }
+ // Common for all MEs
+ meLayer := &AlarmNotificationMsg{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ }
+ // Get payload space available
+ maxPayload := maxPacketAvailable(m, opt)
+ payloadAvailable := int(maxPayload) - 1 // Less alarm sequence number
+
+ // TODO: Lots of work to do
+ fmt.Println(mask, maxPayload, payloadAvailable)
+
+ return meLayer, errors.New("todo: Not implemented")
+}
+
+func AttributeValueChangeFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ mask, err := checkAttributeMask(m, opt.attributeMask)
+ if err != nil {
+ return nil, err
+ }
+ // Common for all MEs
+ meLayer := &AttributeValueChangeMsg{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ AttributeMask: 0,
+ Attributes: make(me.AttributeValueMap),
+ }
+ // Get payload space available
+ maxPayload := maxPacketAvailable(m, opt)
+ payloadAvailable := int(maxPayload) - 2 // Less attribute mask
+
+ // TODO: Lots of work to do
+
+ fmt.Println(mask, maxPayload, payloadAvailable)
+ return meLayer, errors.New("todo: Not implemented")
+}
+
+func TestRequestFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ mask, err := checkAttributeMask(m, opt.attributeMask)
+ if err != nil {
+ return nil, err
+ }
+ // Common for all MEs
+ meLayer := &TestRequest{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ }
+ // Get payload space available
+ maxPayload := maxPacketAvailable(m, opt)
+
+ // TODO: Lots of work to do
+
+ fmt.Println(mask, maxPayload)
+ return meLayer, errors.New("todo: Not implemented")
+}
+
+func TestResponseFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ mask, err := checkAttributeMask(m, opt.attributeMask)
+ if err != nil {
+ return nil, err
+ }
+ // Common for all MEs
+ meLayer := &TestResponse{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ }
+ // Get payload space available
+ maxPayload := maxPacketAvailable(m, opt)
+
+ // TODO: Lots of work to do
+
+ fmt.Println(mask, maxPayload)
+ return meLayer, errors.New("todo: Not implemented")
+}
+
+func StartSoftwareDownloadRequestFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ // Common for all MEs
+ meLayer := &StartSoftwareDownloadRequest{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ WindowSize: opt.software.WindowSize,
+ ImageSize: opt.software.ImageSize,
+ NumberOfCircuitPacks: byte(len(opt.software.CircuitPacks)),
+ CircuitPacks: opt.software.CircuitPacks,
+ }
+ // TODO: Add length check to insure we do not exceed maximum packet size
+ // payloadAvailable := int(maxPacketAvailable(m, opt))
+ payloadAvailable := 2
+ sizeNeeded := 1
+ if sizeNeeded > payloadAvailable {
+ // TODO: Should we set truncate?
+ msg := "out-of-space. Cannot fit Circuit Pack instances into Start Software Download Request message"
+ return nil, me.NewMessageTruncatedError(msg)
+ }
+ return meLayer, nil
+}
+
+func StartSoftwareDownloadResponseFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ // Common for all MEs
+ meLayer := &StartSoftwareDownloadResponse{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ WindowSize: opt.software.WindowSize,
+ NumberOfInstances: byte(len(opt.software.CircuitPacks)),
+ MeResults: opt.software.Results,
+ }
+ // TODO: Add length check to insure we do not exceed maximum packet size
+ // payloadAvailable := int(maxPacketAvailable(m, opt))
+ payloadAvailable := 2
+ sizeNeeded := 1
+ if sizeNeeded > payloadAvailable {
+ // TODO: Should we set truncate?
+ msg := "out-of-space. Cannot fit Results into Start Software Download Response message"
+ return nil, me.NewMessageTruncatedError(msg)
+ }
+ return meLayer, nil
+}
+
+func DownloadSectionRequestFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ mask, err := checkAttributeMask(m, opt.attributeMask)
+ if err != nil {
+ return nil, err
+ }
+ // Common for all MEs
+ meLayer := &DownloadSectionRequest{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ }
+ // Get payload space available
+ maxPayload := maxPacketAvailable(m, opt)
+
+ // TODO: Lots of work to do
+
+ fmt.Println(mask, maxPayload)
+ return meLayer, errors.New("todo: Not implemented")
+}
+
+func DownloadSectionResponseFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ mask, err := checkAttributeMask(m, opt.attributeMask)
+ if err != nil {
+ return nil, err
+ }
+ // Common for all MEs
+ meLayer := &DownloadSectionResponse{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ }
+ // Get payload space available
+ maxPayload := maxPacketAvailable(m, opt)
+
+ // TODO: Lots of work to do
+
+ fmt.Println(mask, maxPayload)
+ return meLayer, errors.New("todo: Not implemented")
+}
+
+func EndSoftwareDownloadRequestFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ mask, err := checkAttributeMask(m, opt.attributeMask)
+ if err != nil {
+ return nil, err
+ }
+ // Common for all MEs
+ meLayer := &EndSoftwareDownloadRequest{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ }
+ // Get payload space available
+ maxPayload := maxPacketAvailable(m, opt)
+
+ // TODO: Lots of work to do
+
+ fmt.Println(mask, maxPayload)
+ return meLayer, errors.New("todo: Not implemented")
+}
+
+func EndSoftwareDownloadResponseFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ mask, err := checkAttributeMask(m, opt.attributeMask)
+ if err != nil {
+ return nil, err
+ }
+ // Common for all MEs
+ meLayer := &EndSoftwareDownloadResponse{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ }
+ // Get payload space available
+ maxPayload := maxPacketAvailable(m, opt)
+
+ // TODO: Lots of work to do
+
+ fmt.Println(mask, maxPayload)
+ return meLayer, errors.New("todo: Not implemented")
+}
+
+func ActivateSoftwareRequestFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ mask, err := checkAttributeMask(m, opt.attributeMask)
+ if err != nil {
+ return nil, err
+ }
+ // Common for all MEs
+ meLayer := &ActivateSoftwareRequest{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ }
+ // Get payload space available
+ maxPayload := maxPacketAvailable(m, opt)
+
+ // TODO: Lots of work to do
+
+ fmt.Println(mask, maxPayload)
+ return meLayer, errors.New("todo: Not implemented")
+}
+
+func ActivateSoftwareResponseFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ mask, err := checkAttributeMask(m, opt.attributeMask)
+ if err != nil {
+ return nil, err
+ }
+ // Common for all MEs
+ meLayer := &ActivateSoftwareResponse{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ }
+ // Get payload space available
+ maxPayload := maxPacketAvailable(m, opt)
+
+ // TODO: Lots of work to do
+
+ fmt.Println(mask, maxPayload)
+ return meLayer, errors.New("todo: Not implemented")
+}
+
+func CommitSoftwareRequestFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ mask, err := checkAttributeMask(m, opt.attributeMask)
+ if err != nil {
+ return nil, err
+ }
+ // Common for all MEs
+ meLayer := &CommitSoftwareRequest{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ }
+ // Get payload space available
+ maxPayload := maxPacketAvailable(m, opt)
+
+ // TODO: Lots of work to do
+
+ fmt.Println(mask, maxPayload)
+ return meLayer, errors.New("todo: Not implemented")
+}
+
+func CommitSoftwareResponseFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ mask, err := checkAttributeMask(m, opt.attributeMask)
+ if err != nil {
+ return nil, err
+ }
+ // Common for all MEs
+ meLayer := &CommitSoftwareResponse{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ }
+ // Get payload space available
+ maxPayload := maxPacketAvailable(m, opt)
+
+ // TODO: Lots of work to do
+
+ fmt.Println(mask, maxPayload)
+ return meLayer, errors.New("todo: Not implemented")
+}
+
+func SynchronizeTimeRequestFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ // Common for all MEs
+ meLayer := &SynchronizeTimeRequest{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ }
+ // Decode payload option. If nil, no timestamp provided
+ if timestamp, ok := opt.payload.(int64); ok {
+ tm := time.Unix(timestamp, 0)
+ meLayer.Year = uint16(tm.UTC().Year())
+ meLayer.Month = uint8(tm.UTC().Month())
+ meLayer.Day = uint8(tm.UTC().Day())
+ meLayer.Hour = uint8(tm.UTC().Hour())
+ meLayer.Minute = uint8(tm.UTC().Minute())
+ meLayer.Second = uint8(tm.UTC().Second())
+ }
+ return meLayer, nil
+}
+
+func SynchronizeTimeResponseFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ // Common for all MEs
+ meLayer := &SynchronizeTimeResponse{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ Result: opt.result,
+ SuccessResults: opt.mode,
+ }
+ return meLayer, nil
+}
+
+func RebootRequestFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ // Common for all MEs
+ meLayer := &RebootRequest{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ RebootCondition: opt.mode,
+ }
+ return meLayer, nil
+}
+
+func RebootResponseFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ // Common for all MEs
+ meLayer := &RebootResponse{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ Result: opt.result,
+ }
+ return meLayer, nil
+}
+
+func GetNextRequestFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ // Validate attribute mask
+ mask, err := checkAttributeMask(m, opt.attributeMask)
+ if err != nil {
+ return nil, err
+ }
+ // Now scan attributes and reduce mask to only those requested
+ mask, err = calculateAttributeMask(m, mask)
+ if err != nil {
+ return nil, err
+ }
+ if mask == 0 {
+ return nil, errors.New("no attributes requested for GetNextRequest")
+ }
+ // TODO: If more than one attribute or the attribute requested is not a table attribute, return an error
+ // Common for all MEs
+ meLayer := &GetNextRequest{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ AttributeMask: mask,
+ SequenceNumber: opt.sequenceNumberCountOrSize,
+ }
+ return meLayer, nil
+}
+
+func GetNextResponseFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ // Validate attribute mask
+ mask, err := checkAttributeMask(m, opt.attributeMask)
+ if err != nil {
+ return nil, err
+ }
+ mask, err = calculateAttributeMask(m, mask)
+ if err != nil {
+ return nil, err
+ }
+ //
+ // Common for all MEs
+ meLayer := &GetNextResponse{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ Result: opt.result,
+ AttributeMask: 0,
+ Attributes: make(me.AttributeValueMap),
+ }
+ if meLayer.Result == me.Success {
+ // Get payload space available
+ maxPayload := maxPacketAvailable(m, opt)
+ payloadAvailable := int(maxPayload) - 3 // Less results and attribute mask
+ meDefinition := m.GetManagedEntityDefinition()
+ attrDefs := meDefinition.GetAttributeDefinitions()
+ attrMap := m.GetAttributeValueMap()
+
+ if mask == 0 {
+ return nil, errors.New("no attributes requested for GetNextResponse")
+ }
+ // TODO: If more than one attribute or the attribute requested is not a table attribute, return an error
+ // Iterate down the attributes (Attribute 0 is the ManagedEntity ID)
+ var attrIndex uint
+ for attrIndex = 1; attrIndex <= 16; attrIndex++ {
+ // Is this attribute requested
+ if mask&(1<<(16-attrIndex)) != 0 {
+ // Get definitions since we need the name
+ attrDef, ok := attrDefs[attrIndex]
+ if !ok {
+ msg := fmt.Sprintf("Unexpected error, index %v not valued for ME %v",
+ attrIndex, meDefinition.GetName())
+ return nil, errors.New(msg)
+ }
+ var attrValue interface{}
+ attrValue, ok = attrMap[attrDef.Name]
+ if !ok || attrValue == nil {
+ msg := fmt.Sprintf("Unexpected error, attribute %v not provided in ME %v: %v",
+ attrDef.GetName(), meDefinition.GetName(), m)
+ return nil, errors.New(msg)
+ }
+ // Is space available?
+ if attrDef.Size <= payloadAvailable {
+ // Mark bit handled
+ mask &= ^attrDef.Mask
+ meLayer.AttributeMask |= attrDef.Mask
+ meLayer.Attributes[attrDef.Name] = attrValue
+ payloadAvailable -= attrDef.Size
+ } else {
+ // TODO: Should we set truncate?
+ msg := fmt.Sprintf("out-of-space. Cannot fit attribute %v into GetNextResponse message",
+ attrDef.GetName())
+ return nil, me.NewMessageTruncatedError(msg)
+ }
+ }
+ }
+ }
+ return meLayer, nil
+}
+
+func TestResultFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ mask, err := checkAttributeMask(m, opt.attributeMask)
+ if err != nil {
+ return nil, err
+ }
+ // Common for all MEs
+ meLayer := &TestResultMsg{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ }
+ // Get payload space available
+ maxPayload := maxPacketAvailable(m, opt)
+
+ // TODO: Lots of work to do
+
+ fmt.Println(mask, maxPayload)
+ return meLayer, errors.New("todo: Not implemented")
+}
+
+func GetCurrentDataRequestFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ mask, err := checkAttributeMask(m, opt.attributeMask)
+ if err != nil {
+ return nil, err
+ }
+ // Common for all MEs
+ meLayer := &GetCurrentDataRequest{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ }
+ // Get payload space available
+ maxPayload := maxPacketAvailable(m, opt)
+
+ // TODO: Lots of work to do
+
+ fmt.Println(mask, maxPayload)
+ return meLayer, errors.New("todo: Not implemented")
+}
+
+func GetCurrentDataResponseFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ mask, err := checkAttributeMask(m, opt.attributeMask)
+ if err != nil {
+ return nil, err
+ }
+ // Common for all MEs
+ meLayer := &GetCurrentDataResponse{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ }
+ // Get payload space available
+ maxPayload := maxPacketAvailable(m, opt)
+
+ // TODO: Lots of work to do
+
+ fmt.Println(mask, maxPayload)
+ return meLayer, errors.New("todo: Not implemented")
+}
+
+func SetTableRequestFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ if opt.frameFormat != ExtendedIdent {
+ return nil, errors.New("SetTable message type only supported with Extended OMCI Messaging")
+ }
+ mask, err := checkAttributeMask(m, opt.attributeMask)
+ if err != nil {
+ return nil, err
+ }
+ // Common for all MEs
+ meLayer := &SetTableRequest{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ }
+ // Get payload space available
+ maxPayload := maxPacketAvailable(m, opt)
+
+ // TODO: Lots of work to do
+
+ fmt.Println(mask, maxPayload)
+ return meLayer, errors.New("todo: Not implemented")
+}
+
+func SetTableResponseFrame(m *me.ManagedEntity, opt options) (gopacket.SerializableLayer, error) {
+ if opt.frameFormat != ExtendedIdent {
+ return nil, errors.New("SetTable message type only supported with Extended OMCI Messaging")
+ }
+ mask, err := checkAttributeMask(m, opt.attributeMask)
+ if err != nil {
+ return nil, err
+ }
+ // Common for all MEs
+ meLayer := &SetTableResponse{
+ MeBasePacket: MeBasePacket{
+ EntityClass: m.GetClassID(),
+ EntityInstance: m.GetEntityID(),
+ },
+ }
+ // Get payload space available
+ maxPayload := maxPacketAvailable(m, opt)
+
+ // TODO: Lots of work to do
+
+ fmt.Println(mask, maxPayload)
+ return meLayer, errors.New("todo: Not implemented")
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/messagetypes.go b/vendor/github.com/opencord/omci-lib-go/messagetypes.go
new file mode 100644
index 0000000..553b7f3
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/messagetypes.go
@@ -0,0 +1,3524 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+
+package omci
+
+import (
+ "encoding/binary"
+ "errors"
+ "fmt"
+ me "github.com/opencord/omci-lib-go/generated"
+ "github.com/google/gopacket"
+)
+
+// MessageType is the OMCI Message Type or'ed with the AR/AK flags as appropriate.
+type MessageType byte
+
+const (
+ CreateRequestType = MessageType(byte(me.Create) | me.AR)
+ CreateResponseType = MessageType(byte(me.Create) | me.AK)
+ DeleteRequestType = MessageType(byte(me.Delete) | me.AR)
+ DeleteResponseType = MessageType(byte(me.Delete) | me.AK)
+ SetRequestType = MessageType(byte(me.Set) | me.AR)
+ SetResponseType = MessageType(byte(me.Set) | me.AK)
+ GetRequestType = MessageType(byte(me.Get) | me.AR)
+ GetResponseType = MessageType(byte(me.Get) | me.AK)
+ GetAllAlarmsRequestType = MessageType(byte(me.GetAllAlarms) | me.AR)
+ GetAllAlarmsResponseType = MessageType(byte(me.GetAllAlarms) | me.AK)
+ GetAllAlarmsNextRequestType = MessageType(byte(me.GetAllAlarmsNext) | me.AR)
+ GetAllAlarmsNextResponseType = MessageType(byte(me.GetAllAlarmsNext) | me.AK)
+ MibUploadRequestType = MessageType(byte(me.MibUpload) | me.AR)
+ MibUploadResponseType = MessageType(byte(me.MibUpload) | me.AK)
+ MibUploadNextRequestType = MessageType(byte(me.MibUploadNext) | me.AR)
+ MibUploadNextResponseType = MessageType(byte(me.MibUploadNext) | me.AK)
+ MibResetRequestType = MessageType(byte(me.MibReset) | me.AR)
+ MibResetResponseType = MessageType(byte(me.MibReset) | me.AK)
+ TestRequestType = MessageType(byte(me.Test) | me.AR)
+ TestResponseType = MessageType(byte(me.Test) | me.AK)
+ StartSoftwareDownloadRequestType = MessageType(byte(me.StartSoftwareDownload) | me.AR)
+ StartSoftwareDownloadResponseType = MessageType(byte(me.StartSoftwareDownload) | me.AK)
+ DownloadSectionRequestType = MessageType(byte(me.DownloadSection) | me.AR)
+ DownloadSectionResponseType = MessageType(byte(me.DownloadSection) | me.AK)
+ EndSoftwareDownloadRequestType = MessageType(byte(me.EndSoftwareDownload) | me.AR)
+ EndSoftwareDownloadResponseType = MessageType(byte(me.EndSoftwareDownload) | me.AK)
+ ActivateSoftwareRequestType = MessageType(byte(me.ActivateSoftware) | me.AR)
+ ActivateSoftwareResponseType = MessageType(byte(me.ActivateSoftware) | me.AK)
+ CommitSoftwareRequestType = MessageType(byte(me.CommitSoftware) | me.AR)
+ CommitSoftwareResponseType = MessageType(byte(me.CommitSoftware) | me.AK)
+ SynchronizeTimeRequestType = MessageType(byte(me.SynchronizeTime) | me.AR)
+ SynchronizeTimeResponseType = MessageType(byte(me.SynchronizeTime) | me.AK)
+ RebootRequestType = MessageType(byte(me.Reboot) | me.AR)
+ RebootResponseType = MessageType(byte(me.Reboot) | me.AK)
+ GetNextRequestType = MessageType(byte(me.GetNext) | me.AR)
+ GetNextResponseType = MessageType(byte(me.GetNext) | me.AK)
+ GetCurrentDataRequestType = MessageType(byte(me.GetCurrentData) | me.AR)
+ GetCurrentDataResponseType = MessageType(byte(me.GetCurrentData) | me.AK)
+ SetTableRequestType = MessageType(byte(me.SetTable) | me.AR)
+ SetTableResponseType = MessageType(byte(me.SetTable) | me.AK)
+ // Autonomous ONU messages
+ AlarmNotificationType = MessageType(byte(me.AlarmNotification))
+ AttributeValueChangeType = MessageType(byte(me.AttributeValueChange))
+ TestResultType = MessageType(byte(me.TestResult))
+)
+
+func (mt MessageType) String() string {
+ switch mt {
+ default:
+ return "Unknown"
+
+ case CreateRequestType:
+ return "Create Request"
+ case CreateResponseType:
+ return "Create Response"
+ case DeleteRequestType:
+ return "Delete Request"
+ case DeleteResponseType:
+ return "Delete Response"
+ case SetRequestType:
+ return "Set Request"
+ case SetResponseType:
+ return "Set Response"
+ case GetRequestType:
+ return "Get Request"
+ case GetResponseType:
+ return "Get Response"
+ case GetAllAlarmsRequestType:
+ return "Get All Alarms Request"
+ case GetAllAlarmsResponseType:
+ return "Get All Alarms Response"
+ case GetAllAlarmsNextRequestType:
+ return "Get All Alarms Next Request"
+ case GetAllAlarmsNextResponseType:
+ return "Get All Alarms Next Response"
+ case MibUploadRequestType:
+ return "MIB Upload Request"
+ case MibUploadResponseType:
+ return "MIB Upload Response"
+ case MibUploadNextRequestType:
+ return "MIB Upload Next Request"
+ case MibUploadNextResponseType:
+ return "MIB Upload Next Response"
+ case MibResetRequestType:
+ return "MIB Reset Request"
+ case MibResetResponseType:
+ return "MIB Reset Response"
+ case TestRequestType:
+ return "Test Request"
+ case TestResponseType:
+ return "Test Response"
+ case StartSoftwareDownloadRequestType:
+ return "Start Software Download Request"
+ case StartSoftwareDownloadResponseType:
+ return "Start Software Download Response"
+ case DownloadSectionRequestType:
+ return "Download Section Request"
+ case DownloadSectionResponseType:
+ return "Download Section Response"
+ case EndSoftwareDownloadRequestType:
+ return "End Software Download Request"
+ case EndSoftwareDownloadResponseType:
+ return "End Software Download Response"
+ case ActivateSoftwareRequestType:
+ return "Activate Software Request"
+ case ActivateSoftwareResponseType:
+ return "Activate Software Response"
+ case CommitSoftwareRequestType:
+ return "Commit Software Request"
+ case CommitSoftwareResponseType:
+ return "Commit Software Response"
+ case SynchronizeTimeRequestType:
+ return "Synchronize Time Request"
+ case SynchronizeTimeResponseType:
+ return "Synchronize Time Response"
+ case RebootRequestType:
+ return "Reboot Request"
+ case RebootResponseType:
+ return "Reboot Response"
+ case GetNextRequestType:
+ return "Get Next Request"
+ case GetNextResponseType:
+ return "Get Next Response"
+ case GetCurrentDataRequestType:
+ return "Get Current Data Request"
+ case GetCurrentDataResponseType:
+ return "Get Current Data Response"
+ case SetTableRequestType:
+ return "Set Table Request"
+ case SetTableResponseType:
+ return "Set Table Response"
+ case AlarmNotificationType:
+ return "Alarm Notification"
+ case AttributeValueChangeType:
+ return "Attribute Value Change"
+ case TestResultType:
+ return "Test Result"
+ }
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// CreateRequest
+type CreateRequest struct {
+ MeBasePacket
+ Attributes me.AttributeValueMap
+}
+
+func (omci *CreateRequest) String() string {
+ return fmt.Sprintf("%v, attributes: %v", omci.MeBasePacket.String(), omci.Attributes)
+}
+
+// DecodeFromBytes decodes the given bytes of a Create Request into this layer
+func (omci *CreateRequest) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ // Create attribute mask for all set-by-create entries
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Create
+ if !me.SupportsMsgType(meDefinition, me.Create) {
+ return me.NewProcessingError("managed entity does not support Create Message-Type")
+ }
+ var sbcMask uint16
+ for index, attr := range meDefinition.GetAttributeDefinitions() {
+ if me.SupportsAttributeAccess(attr, me.SetByCreate) {
+ if index == 0 {
+ continue // Skip Entity ID
+ }
+ sbcMask |= attr.Mask
+ }
+ }
+ // Attribute decode
+ omci.Attributes, err = meDefinition.DecodeAttributes(sbcMask, data[4:], p, byte(CreateRequestType))
+ if err != nil {
+ return err
+ }
+ if eidDef, eidDefOK := meDefinition.GetAttributeDefinitions()[0]; eidDefOK {
+ omci.Attributes[eidDef.GetName()] = omci.EntityInstance
+ return nil
+ }
+ panic("All Managed Entities have an EntityID attribute")
+}
+
+func decodeCreateRequest(data []byte, p gopacket.PacketBuilder) error {
+ omci := &CreateRequest{}
+ omci.MsgLayerType = LayerTypeCreateRequest
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Create Request Message
+func (omci *CreateRequest) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // Create attribute mask of SetByCreate attributes that should be present in the provided
+ // attributes.
+ var sbcMask uint16
+ for index, attr := range meDefinition.GetAttributeDefinitions() {
+ if me.SupportsAttributeAccess(attr, me.SetByCreate) {
+ if index == 0 {
+ continue // Skip Entity ID
+ }
+ sbcMask |= attr.Mask
+ }
+ }
+ // Attribute serialization
+ // TODO: Only Baseline supported at this time
+ bytesAvailable := MaxBaselineLength - 8 - 8
+ err, _ = meDefinition.SerializeAttributes(omci.Attributes, sbcMask, b, byte(CreateRequestType), bytesAvailable, false)
+ return err
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// CreateResponse
+type CreateResponse struct {
+ MeBasePacket
+ Result me.Results
+ AttributeExecutionMask uint16 // Used when Result == ParameterError
+}
+
+func (omci *CreateResponse) String() string {
+ return fmt.Sprintf("%v, Result: %d (%v), Mask: %#x",
+ omci.MeBasePacket.String(), omci.Result, omci.Result, omci.AttributeExecutionMask)
+}
+
+// DecodeFromBytes decodes the given bytes of a Create Response into this layer
+func (omci *CreateResponse) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ entity, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Create
+ if !me.SupportsMsgType(entity, me.Create) {
+ return me.NewProcessingError("managed entity does not support the Create Message-Type")
+ }
+ omci.Result = me.Results(data[4])
+ if omci.Result == me.ParameterError {
+ omci.AttributeExecutionMask = binary.BigEndian.Uint16(data[5:])
+ // TODO: validation that attributes set in mask are SetByCreate would be good here
+ }
+ return nil
+}
+
+func decodeCreateResponse(data []byte, p gopacket.PacketBuilder) error {
+ omci := &CreateResponse{}
+ omci.MsgLayerType = LayerTypeCreateResponse
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Create Response message
+func (omci *CreateResponse) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ entity, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Create
+ if !me.SupportsMsgType(entity, me.Create) {
+ return me.NewProcessingError("managed entity does not support the Create Message-Type")
+ }
+ bytes, err := b.AppendBytes(3)
+ if err != nil {
+ return err
+ }
+ bytes[0] = byte(omci.Result)
+ if omci.Result == me.ParameterError {
+ // TODO: validation that attributes set in mask are SetByCreate would be good here
+ binary.BigEndian.PutUint16(bytes[1:], omci.AttributeExecutionMask)
+ } else {
+ binary.BigEndian.PutUint16(bytes[1:], 0)
+ }
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// DeleteRequest
+type DeleteRequest struct {
+ MeBasePacket
+}
+
+func (omci *DeleteRequest) String() string {
+ return fmt.Sprintf("%v", omci.MeBasePacket.String())
+}
+
+// DecodeFromBytes decodes the given bytes of a Delete Request into this layer
+func (omci *DeleteRequest) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ entity, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Delete
+ if !me.SupportsMsgType(entity, me.Delete) {
+ return me.NewProcessingError("managed entity does not support the Delete Message-Type")
+ }
+ return nil
+}
+
+func decodeDeleteRequest(data []byte, p gopacket.PacketBuilder) error {
+ omci := &DeleteRequest{}
+ omci.MsgLayerType = LayerTypeDeleteRequest
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Delete Request message
+func (omci *DeleteRequest) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ entity, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Delete
+ if !me.SupportsMsgType(entity, me.Delete) {
+ return me.NewProcessingError("managed entity does not support the Delete Message-Type")
+ }
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// DeleteResponse
+type DeleteResponse struct {
+ MeBasePacket
+ Result me.Results
+}
+
+func (omci *DeleteResponse) String() string {
+ return fmt.Sprintf("%v, Result: %d (%v)",
+ omci.MeBasePacket.String(), omci.Result, omci.Result)
+}
+
+// DecodeFromBytes decodes the given bytes of a Delete Response into this layer
+func (omci *DeleteResponse) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ entity, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Delete
+ if !me.SupportsMsgType(entity, me.Delete) {
+ return me.NewProcessingError("managed entity does not support the Delete Message-Type")
+ }
+ omci.Result = me.Results(data[4])
+ return nil
+}
+
+func decodeDeleteResponse(data []byte, p gopacket.PacketBuilder) error {
+ omci := &DeleteResponse{}
+ omci.MsgLayerType = LayerTypeDeleteResponse
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Delete Response message
+func (omci *DeleteResponse) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ entity, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Delete
+ if !me.SupportsMsgType(entity, me.Delete) {
+ return me.NewProcessingError("managed entity does not support the Delete Message-Type")
+ }
+ bytes, err := b.AppendBytes(1)
+ if err != nil {
+ return err
+ }
+ bytes[0] = byte(omci.Result)
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// SetRequest
+type SetRequest struct {
+ MeBasePacket
+ AttributeMask uint16
+ Attributes me.AttributeValueMap
+}
+
+func (omci *SetRequest) String() string {
+ return fmt.Sprintf("%v, Mask: %#x, attributes: %v",
+ omci.MeBasePacket.String(), omci.AttributeMask, omci.Attributes)
+}
+
+// DecodeFromBytes decodes the given bytes of a Set Request into this layer
+func (omci *SetRequest) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Set
+ if !me.SupportsMsgType(meDefinition, me.Set) {
+ return me.NewProcessingError("managed entity does not support Set Message-Type")
+ }
+ omci.AttributeMask = binary.BigEndian.Uint16(data[4:6])
+
+ // Attribute decode
+ omci.Attributes, err = meDefinition.DecodeAttributes(omci.AttributeMask, data[6:], p, byte(SetRequestType))
+ if err != nil {
+ return err
+ }
+ // Validate all attributes support write
+ for attrName := range omci.Attributes {
+ attr, err := me.GetAttributeDefinitionByName(meDefinition.GetAttributeDefinitions(), attrName)
+ if err != nil {
+ return err
+ }
+ if attr.Index != 0 && !me.SupportsAttributeAccess(*attr, me.Write) {
+ msg := fmt.Sprintf("attribute '%v' does not support write access", attrName)
+ return me.NewProcessingError(msg)
+ }
+ }
+ if eidDef, eidDefOK := meDefinition.GetAttributeDefinitions()[0]; eidDefOK {
+ omci.Attributes[eidDef.GetName()] = omci.EntityInstance
+ return nil
+ }
+ panic("All Managed Entities have an EntityID attribute")
+}
+
+func decodeSetRequest(data []byte, p gopacket.PacketBuilder) error {
+ omci := &SetRequest{}
+ omci.MsgLayerType = LayerTypeSetRequest
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Set Request message
+func (omci *SetRequest) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Set
+ if !me.SupportsMsgType(meDefinition, me.Set) {
+ return me.NewProcessingError("managed entity does not support Set Message-Type")
+ }
+ // Validate all attributes support write
+ for attrName := range omci.Attributes {
+ attr, err := me.GetAttributeDefinitionByName(meDefinition.GetAttributeDefinitions(), attrName)
+ if err != nil {
+ return err
+ }
+ // Do not test for write of Entity ID in the attribute list
+ if attr.Index != 0 && !me.SupportsAttributeAccess(*attr, me.Write) {
+ // TODO: Check ITU spec to see if this should be listed as a failed
+ // attribute and not a processing error.
+ msg := fmt.Sprintf("attribute '%v' does not support write access", attrName)
+ return me.NewProcessingError(msg)
+ }
+ }
+ bytes, err := b.AppendBytes(2)
+ if err != nil {
+ return err
+ }
+ binary.BigEndian.PutUint16(bytes, omci.AttributeMask)
+
+ // Attribute serialization
+ // TODO: Only Baseline supported at this time
+ bytesAvailable := MaxBaselineLength - 10 - 8
+
+ err, _ = meDefinition.SerializeAttributes(omci.Attributes, omci.AttributeMask, b,
+ byte(SetRequestType), bytesAvailable, false)
+ return err
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// SetResponse
+type SetResponse struct {
+ MeBasePacket
+ Result me.Results
+ UnsupportedAttributeMask uint16
+ FailedAttributeMask uint16
+}
+
+func (omci *SetResponse) String() string {
+ return fmt.Sprintf("%v, Result: %d (%v), Unsupported Mask: %#x, Failed Mask: %#x",
+ omci.MeBasePacket.String(), omci.Result, omci.Result, omci.UnsupportedAttributeMask,
+ omci.FailedAttributeMask)
+}
+
+// DecodeFromBytes decodes the given bytes of a Set Response into this layer
+func (omci *SetResponse) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ entity, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Set
+ if !me.SupportsMsgType(entity, me.Set) {
+ return me.NewProcessingError("managed entity does not support the Delete Message-Type")
+ }
+ omci.Result = me.Results(data[4])
+
+ if omci.Result == me.AttributeFailure {
+ omci.UnsupportedAttributeMask = binary.BigEndian.Uint16(data[5:7])
+ omci.FailedAttributeMask = binary.BigEndian.Uint16(data[7:9])
+ }
+ return nil
+}
+
+func decodeSetResponse(data []byte, p gopacket.PacketBuilder) error {
+ omci := &SetResponse{}
+ omci.MsgLayerType = LayerTypeSetResponse
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Set Response message
+func (omci *SetResponse) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ entity, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Set
+ if !me.SupportsMsgType(entity, me.Set) {
+ return me.NewProcessingError("managed entity does not support the Set Message-Type")
+ }
+ bytes, err := b.AppendBytes(5)
+ if err != nil {
+ return err
+ }
+ bytes[0] = byte(omci.Result)
+ binary.BigEndian.PutUint16(bytes[1:3], omci.UnsupportedAttributeMask)
+ binary.BigEndian.PutUint16(bytes[3:5], omci.FailedAttributeMask)
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// GetRequest
+type GetRequest struct {
+ MeBasePacket
+ AttributeMask uint16
+}
+
+func (omci *GetRequest) String() string {
+ return fmt.Sprintf("%v, Mask: %#x",
+ omci.MeBasePacket.String(), omci.AttributeMask)
+}
+
+// DecodeFromBytes decodes the given bytes of a Get Request into this layer
+func (omci *GetRequest) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Get
+ if !me.SupportsMsgType(meDefinition, me.Get) {
+ return me.NewProcessingError("managed entity does not support Get Message-Type")
+ }
+ omci.AttributeMask = binary.BigEndian.Uint16(data[4:6])
+ return nil
+}
+
+func decodeGetRequest(data []byte, p gopacket.PacketBuilder) error {
+ omci := &GetRequest{}
+ omci.MsgLayerType = LayerTypeGetRequest
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Get Request message
+func (omci *GetRequest) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Set
+ if !me.SupportsMsgType(meDefinition, me.Get) {
+ return me.NewProcessingError("managed entity does not support Get Message-Type")
+ }
+ bytes, err := b.AppendBytes(2)
+ if err != nil {
+ return err
+ }
+ binary.BigEndian.PutUint16(bytes, omci.AttributeMask)
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// GetResponse
+type GetResponse struct {
+ MeBasePacket
+ Result me.Results
+ AttributeMask uint16
+ Attributes me.AttributeValueMap
+ UnsupportedAttributeMask uint16
+ FailedAttributeMask uint16
+}
+
+func (omci *GetResponse) String() string {
+ return fmt.Sprintf("%v, Result: %d (%v), Mask: %#x, Unsupported: %#x, Failed: %#x, attributes: %v",
+ omci.MeBasePacket.String(), omci.Result, omci.Result, omci.AttributeMask,
+ omci.UnsupportedAttributeMask, omci.FailedAttributeMask, omci.Attributes)
+}
+
+// DecodeFromBytes decodes the given bytes of a Get Response into this layer
+func (omci *GetResponse) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Get
+ if !me.SupportsMsgType(meDefinition, me.Get) {
+ return me.NewProcessingError("managed entity does not support Get Message-Type")
+ }
+ omci.Result = me.Results(data[4])
+ omci.AttributeMask = binary.BigEndian.Uint16(data[5:7])
+
+ // Attribute decode. Note that the ITU-T G.988 specification states that the
+ // Unsupported and Failed attribute masks are always present
+ // but only valid if the status code== 9. However some XGS
+ // ONUs (T&W and Alpha, perhaps more) will use these last 4
+ // octets for data if the status code == 0. So accommodate
+ // this behaviour in favor of greater interoperability.
+ lastOctet := 36
+ if omci.Result == me.AttributeFailure {
+ lastOctet = 32
+ }
+ omci.Attributes, err = meDefinition.DecodeAttributes(omci.AttributeMask, data[7:lastOctet], p, byte(GetResponseType))
+ if err != nil {
+ return err
+ }
+ // If Attribute failed or Unknown, decode optional attribute mask
+ if omci.Result == me.AttributeFailure {
+ omci.UnsupportedAttributeMask = binary.BigEndian.Uint16(data[32:34])
+ omci.FailedAttributeMask = binary.BigEndian.Uint16(data[34:36])
+ }
+ // Validate all attributes support read
+ for attrName := range omci.Attributes {
+ attr, err := me.GetAttributeDefinitionByName(meDefinition.GetAttributeDefinitions(), attrName)
+ if err != nil {
+ return err
+ }
+ if attr.Index != 0 && !me.SupportsAttributeAccess(*attr, me.Read) {
+ msg := fmt.Sprintf("attribute '%v' does not support read access", attrName)
+ return me.NewProcessingError(msg)
+ }
+ }
+ if eidDef, eidDefOK := meDefinition.GetAttributeDefinitions()[0]; eidDefOK {
+ omci.Attributes[eidDef.GetName()] = omci.EntityInstance
+ return nil
+ }
+ panic("All Managed Entities have an EntityID attribute")
+}
+
+func decodeGetResponse(data []byte, p gopacket.PacketBuilder) error {
+ omci := &GetResponse{}
+ omci.MsgLayerType = LayerTypeGetResponse
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Get Response message
+func (omci *GetResponse) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ if err := omci.MeBasePacket.SerializeTo(b); err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Get
+ if !me.SupportsMsgType(meDefinition, me.Get) {
+ return me.NewProcessingError("managed entity does not support the Get Message-Type")
+ }
+ bytes, err := b.AppendBytes(3)
+ if err != nil {
+ return err
+ }
+ bytes[0] = byte(omci.Result)
+ binary.BigEndian.PutUint16(bytes[1:3], omci.AttributeMask)
+
+ // Validate all attributes support read
+ for attrName := range omci.Attributes {
+ attr, err := me.GetAttributeDefinitionByName(meDefinition.GetAttributeDefinitions(), attrName)
+ if err != nil {
+ return err
+ }
+ if attr.Index != 0 && !me.SupportsAttributeAccess(*attr, me.Read) {
+ msg := fmt.Sprintf("attribute '%v' does not support read access", attrName)
+ return me.NewProcessingError(msg)
+ }
+ }
+ // Attribute serialization
+ switch omci.Result {
+ default:
+ break
+
+ case me.Success, me.AttributeFailure:
+ // TODO: Baseline only supported at this time)
+ available := MaxBaselineLength - 11 - 4 - 8
+
+ // Serialize to temporary buffer if we may need to reset values due to
+ // recoverable truncation errors
+ origBuffer := b
+ b := gopacket.NewSerializeBuffer()
+
+ err, failedMask := meDefinition.SerializeAttributes(omci.Attributes, omci.AttributeMask, b, byte(GetResponseType),
+ available, opts.FixLengths)
+
+ if err == nil && failedMask != 0 && opts.FixLengths {
+ // Not all attributes would fit
+ omci.FailedAttributeMask |= failedMask
+ omci.AttributeMask &= ^failedMask
+ omci.Result = me.AttributeFailure
+
+ // Adjust already recorded values
+ bytes[0] = byte(omci.Result)
+ binary.BigEndian.PutUint16(bytes[1:3], omci.AttributeMask)
+ } else if err != nil {
+ return err
+ }
+ // Copy over attributes to the original serialization buffer
+ newSpace, err := origBuffer.AppendBytes(len(b.Bytes()))
+ if err != nil {
+ return err
+ }
+ copy(newSpace, b.Bytes())
+ b = origBuffer
+
+ // Calculate space left. Max - msgType header - OMCI trailer - spacedUsedSoFar
+ bytesLeft := MaxBaselineLength - 4 - 8 - len(b.Bytes())
+
+ remainingBytes, err := b.AppendBytes(bytesLeft + 4)
+ if err != nil {
+ return me.NewMessageTruncatedError(err.Error())
+ }
+ copy(remainingBytes, lotsOfZeros[:])
+
+ if omci.Result == me.AttributeFailure {
+ binary.BigEndian.PutUint16(remainingBytes[bytesLeft-4:bytesLeft-2], omci.UnsupportedAttributeMask)
+ binary.BigEndian.PutUint16(remainingBytes[bytesLeft-2:bytesLeft], omci.FailedAttributeMask)
+ }
+ }
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// GetAllAlarms
+type GetAllAlarmsRequest struct {
+ MeBasePacket
+ AlarmRetrievalMode byte
+}
+
+func (omci *GetAllAlarmsRequest) String() string {
+ return fmt.Sprintf("%v, Retrieval Mode: %v",
+ omci.MeBasePacket.String(), omci.AlarmRetrievalMode)
+}
+
+// DecodeFromBytes decodes the given bytes of a Get All Alarms Request into this layer
+func (omci *GetAllAlarmsRequest) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Get All Alarms
+ if !me.SupportsMsgType(meDefinition, me.GetAllAlarms) {
+ return me.NewProcessingError("managed entity does not support Get All Alarms Message-Type")
+ }
+ // Entity Class are always ONU DATA (2) and Entity Instance of 0
+ if omci.EntityClass != me.OnuDataClassID {
+ msg := fmt.Sprintf("invalid Entity Class for Get All Alarms request: %v",
+ omci.EntityClass)
+ return me.NewProcessingError(msg)
+ }
+ if omci.EntityInstance != 0 {
+ msg := fmt.Sprintf("invalid Entity Instance for Get All Alarms request: %v",
+ omci.EntityInstance)
+ return me.NewUnknownInstanceError(msg)
+ }
+ omci.AlarmRetrievalMode = data[4]
+ if omci.AlarmRetrievalMode > 1 {
+ msg := fmt.Sprintf("invalid Alarm Retrieval Mode for Get All Alarms request: %v, must be 0..1",
+ omci.AlarmRetrievalMode)
+ return errors.New(msg)
+ }
+ return nil
+}
+
+func decodeGetAllAlarmsRequest(data []byte, p gopacket.PacketBuilder) error {
+ omci := &GetAllAlarmsRequest{}
+ omci.MsgLayerType = LayerTypeGetAllAlarmsRequest
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Get All Alarms Request message
+func (omci *GetAllAlarmsRequest) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ entity, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Get All Alarms
+ if !me.SupportsMsgType(entity, me.GetAllAlarms) {
+ return me.NewProcessingError("managed entity does not support the Get All Alarms Message-Type")
+ }
+ bytes, err := b.AppendBytes(1)
+ if err != nil {
+ return err
+ }
+ bytes[0] = omci.AlarmRetrievalMode
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// GetAllAlarms
+type GetAllAlarmsResponse struct {
+ MeBasePacket
+ NumberOfCommands uint16
+}
+
+func (omci *GetAllAlarmsResponse) String() string {
+ return fmt.Sprintf("%v, NumberOfCommands: %d",
+ omci.MeBasePacket.String(), omci.NumberOfCommands)
+}
+
+// DecodeFromBytes decodes the given bytes of a Get All Alarms Response into this layer
+func (omci *GetAllAlarmsResponse) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Get All Alarms
+ if !me.SupportsMsgType(meDefinition, me.GetAllAlarms) {
+ return me.NewProcessingError("managed entity does not support Get All Alarms Message-Type")
+ }
+ // Entity Class are always ONU DATA (2) and Entity Instance of 0
+ if omci.EntityClass != me.OnuDataClassID {
+ msg := fmt.Sprintf("invalid Entity Class for Get All Alarms response: %v",
+ omci.EntityClass)
+ return me.NewProcessingError(msg)
+ }
+ if omci.EntityInstance != 0 {
+ msg := fmt.Sprintf("invalid Entity Instance for Get All Alarms response: %v",
+ omci.EntityInstance)
+ return me.NewUnknownInstanceError(msg)
+ }
+ omci.NumberOfCommands = binary.BigEndian.Uint16(data[4:6])
+ return nil
+}
+
+func decodeGetAllAlarmsResponse(data []byte, p gopacket.PacketBuilder) error {
+ omci := &GetAllAlarmsResponse{}
+ omci.MsgLayerType = LayerTypeGetAllAlarmsResponse
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Get All Alarms Response message
+func (omci *GetAllAlarmsResponse) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ entity, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Get All Alarms
+ if !me.SupportsMsgType(entity, me.GetAllAlarms) {
+ return me.NewProcessingError("managed entity does not support the Get All Alarms Message-Type")
+ }
+ bytes, err := b.AppendBytes(2)
+ if err != nil {
+ return err
+ }
+ binary.BigEndian.PutUint16(bytes[0:2], omci.NumberOfCommands)
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// GetAllAlarms
+type GetAllAlarmsNextRequest struct {
+ MeBasePacket
+ CommandSequenceNumber uint16
+}
+
+func (omci *GetAllAlarmsNextRequest) String() string {
+ return fmt.Sprintf("%v, Sequence Number: %d",
+ omci.MeBasePacket.String(), omci.CommandSequenceNumber)
+}
+
+// DecodeFromBytes decodes the given bytes of a Get All Alarms Next Request into this layer
+func (omci *GetAllAlarmsNextRequest) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Get All Alarms
+ if !me.SupportsMsgType(meDefinition, me.GetAllAlarmsNext) {
+ return me.NewProcessingError("managed entity does not support Get All Alarms Next Message-Type")
+ }
+ // Entity Class are always ONU DATA (2) and Entity Instance of 0
+ if omci.EntityClass != me.OnuDataClassID {
+ msg := fmt.Sprintf("invalid Entity Class for Get All Alarms Next request: %v",
+ omci.EntityClass)
+ return me.NewProcessingError(msg)
+ }
+ if omci.EntityInstance != 0 {
+ msg := fmt.Sprintf("invalid Entity Instance for Get All Alarms Next request: %v",
+ omci.EntityInstance)
+ return me.NewUnknownInstanceError(msg)
+ }
+ omci.CommandSequenceNumber = binary.BigEndian.Uint16(data[4:6])
+ return nil
+}
+
+func decodeGetAllAlarmsNextRequest(data []byte, p gopacket.PacketBuilder) error {
+ omci := &GetAllAlarmsNextRequest{}
+ omci.MsgLayerType = LayerTypeGetAllAlarmsNextRequest
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Get All Alarms Next Request message
+func (omci *GetAllAlarmsNextRequest) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ entity, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Get All Alarms Next
+ if !me.SupportsMsgType(entity, me.GetAllAlarmsNext) {
+ return me.NewProcessingError("managed entity does not support the Get All Alarms Next Message-Type")
+ }
+ bytes, err := b.AppendBytes(2)
+ if err != nil {
+ return err
+ }
+ binary.BigEndian.PutUint16(bytes, omci.CommandSequenceNumber)
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// GetAllAlarms
+type GetAllAlarmsNextResponse struct {
+ MeBasePacket
+ AlarmEntityClass me.ClassID
+ AlarmEntityInstance uint16
+ AlarmBitMap [28]byte // 224 bits
+}
+
+func (omci *GetAllAlarmsNextResponse) String() string {
+ return fmt.Sprintf("%v, CID: %v, EID: (%d/%#x), Bitmap: %v",
+ omci.MeBasePacket.String(), omci.AlarmEntityClass, omci.AlarmEntityInstance,
+ omci.AlarmEntityInstance, omci.AlarmBitMap)
+}
+
+// DecodeFromBytes decodes the given bytes of a Get All Alarms Next Response into this layer
+func (omci *GetAllAlarmsNextResponse) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Get All Alarms Next
+ if !me.SupportsMsgType(meDefinition, me.GetAllAlarmsNext) {
+ return me.NewProcessingError("managed entity does not support Get All Alarms Next Message-Type")
+ }
+ // Entity Class are always ONU DATA (2) and Entity Instance of 0
+ if omci.EntityClass != me.OnuDataClassID {
+ msg := fmt.Sprintf("invalid Entity Class for Get All Alarms Next response: %v",
+ omci.EntityClass)
+ return me.NewProcessingError(msg)
+ }
+ if omci.EntityInstance != 0 {
+ msg := fmt.Sprintf("invalid Entity Instance for Get All Alarms Next response: %v",
+ omci.EntityInstance)
+ return me.NewUnknownInstanceError(msg)
+ }
+ omci.AlarmEntityClass = me.ClassID(binary.BigEndian.Uint16(data[4:6]))
+ omci.AlarmEntityInstance = binary.BigEndian.Uint16(data[6:8])
+
+ copy(omci.AlarmBitMap[:], data[8:36])
+ return nil
+}
+
+func decodeGetAllAlarmsNextResponse(data []byte, p gopacket.PacketBuilder) error {
+ omci := &GetAllAlarmsNextResponse{}
+ omci.MsgLayerType = LayerTypeGetAllAlarmsNextResponse
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Get All Alarms Next Response message
+func (omci *GetAllAlarmsNextResponse) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ entity, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Get All Alarms Next
+ if !me.SupportsMsgType(entity, me.GetAllAlarmsNext) {
+ return me.NewProcessingError("managed entity does not support the Get All Alarms Next Message-Type")
+ }
+ bytes, err := b.AppendBytes(2 + 2 + 28)
+ if err != nil {
+ return err
+ }
+ binary.BigEndian.PutUint16(bytes[0:], uint16(omci.AlarmEntityClass))
+ binary.BigEndian.PutUint16(bytes[2:], omci.AlarmEntityInstance)
+ copy(bytes[4:], omci.AlarmBitMap[:])
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// MibUploadRequest
+type MibUploadRequest struct {
+ MeBasePacket
+}
+
+func (omci *MibUploadRequest) String() string {
+ return fmt.Sprintf("%v", omci.MeBasePacket.String())
+}
+
+// DecodeFromBytes decodes the given bytes of a MIB Upload Request into this layer
+func (omci *MibUploadRequest) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support MIB Upload
+ if !me.SupportsMsgType(meDefinition, me.MibUpload) {
+ return me.NewProcessingError("managed entity does not support MIB Upload Message-Type")
+ }
+ // Entity Class are always ONU DATA (2) and Entity Instance of 0
+ if omci.EntityClass != me.OnuDataClassID {
+ msg := fmt.Sprintf("invalid Entity Class for MIB Upload request: %v",
+ omci.EntityClass)
+ return me.NewProcessingError(msg)
+ }
+ if omci.EntityInstance != 0 {
+ msg := fmt.Sprintf("invalid Entity Instance for MIB Upload request: %v",
+ omci.EntityInstance)
+ return me.NewUnknownInstanceError(msg)
+ }
+ return nil
+}
+
+func decodeMibUploadRequest(data []byte, p gopacket.PacketBuilder) error {
+ omci := &MibUploadRequest{}
+ omci.MsgLayerType = LayerTypeMibUploadRequest
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an MIB Upload Request message
+func (omci *MibUploadRequest) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Get
+ if !me.SupportsMsgType(meDefinition, me.MibUpload) {
+ return me.NewProcessingError("managed entity does not support the MIB Upload Message-Type")
+ }
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// MibUploadResponse
+type MibUploadResponse struct {
+ MeBasePacket
+ NumberOfCommands uint16
+}
+
+func (omci *MibUploadResponse) String() string {
+ return fmt.Sprintf("%v, NumberOfCommands: %#v",
+ omci.MeBasePacket.String(), omci.NumberOfCommands)
+}
+
+// DecodeFromBytes decodes the given bytes of a MIB Upload Response into this layer
+func (omci *MibUploadResponse) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support MIB Upload
+ if !me.SupportsMsgType(meDefinition, me.MibUpload) {
+ return me.NewProcessingError("managed entity does not support MIB Upload Message-Type")
+ }
+ // Entity Class are always ONU DATA (2) and Entity Instance of 0
+ if omci.EntityClass != me.OnuDataClassID {
+ msg := fmt.Sprintf("invalid Entity Class for MIB Upload response: %v",
+ omci.EntityClass)
+ return me.NewProcessingError(msg)
+ }
+ if omci.EntityInstance != 0 {
+ msg := fmt.Sprintf("invalid Entity Instance for MIB Upload response: %v",
+ omci.EntityInstance)
+ return me.NewUnknownInstanceError(msg)
+ }
+ omci.NumberOfCommands = binary.BigEndian.Uint16(data[4:6])
+ return nil
+}
+
+func decodeMibUploadResponse(data []byte, p gopacket.PacketBuilder) error {
+ omci := &MibUploadResponse{}
+ omci.MsgLayerType = LayerTypeMibUploadResponse
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an MIB Upload Response message
+func (omci *MibUploadResponse) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ entity, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support MIB Upload
+ if !me.SupportsMsgType(entity, me.MibUpload) {
+ return me.NewProcessingError("managed entity does not support the MIB Upload Message-Type")
+ }
+ bytes, err := b.AppendBytes(2)
+ if err != nil {
+ return err
+ }
+ binary.BigEndian.PutUint16(bytes[0:2], omci.NumberOfCommands)
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+//
+type MibUploadNextRequest struct {
+ MeBasePacket
+ CommandSequenceNumber uint16
+}
+
+func (omci *MibUploadNextRequest) String() string {
+ return fmt.Sprintf("%v, SequenceNumberCountOrSize: %v",
+ omci.MeBasePacket.String(), omci.CommandSequenceNumber)
+}
+
+// DecodeFromBytes decodes the given bytes of a MIB Upload Next Request into this layer
+func (omci *MibUploadNextRequest) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Get All Alarms
+ if !me.SupportsMsgType(meDefinition, me.MibUploadNext) {
+ return me.NewProcessingError("managed entity does not support MIB Upload Next Message-Type")
+ }
+ // Entity Class are always ONU DATA (2) and Entity Instance of 0
+ if omci.EntityClass != me.OnuDataClassID {
+ msg := fmt.Sprintf("invalid Entity Class for MIB Upload Next request: %v",
+ omci.EntityClass)
+ return me.NewProcessingError(msg)
+ }
+ if omci.EntityInstance != 0 {
+ msg := fmt.Sprintf("invalid Entity Instance for MIB Upload Next request: %v",
+ omci.EntityInstance)
+ return me.NewUnknownInstanceError(msg)
+ }
+ omci.CommandSequenceNumber = binary.BigEndian.Uint16(data[4:6])
+ return nil
+}
+
+func decodeMibUploadNextRequest(data []byte, p gopacket.PacketBuilder) error {
+ omci := &MibUploadNextRequest{}
+ omci.MsgLayerType = LayerTypeMibUploadNextRequest
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an MIB Upload Next Request message
+func (omci *MibUploadNextRequest) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ entity, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support MIB upload
+ if !me.SupportsMsgType(entity, me.MibUploadNext) {
+ return me.NewProcessingError("managed entity does not support the MIB Upload Next Message-Type")
+ }
+ bytes, err := b.AppendBytes(2)
+ if err != nil {
+ return err
+ }
+ binary.BigEndian.PutUint16(bytes[0:2], omci.CommandSequenceNumber)
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+//
+type MibUploadNextResponse struct {
+ MeBasePacket
+ ReportedME me.ManagedEntity
+}
+
+func (omci *MibUploadNextResponse) String() string {
+ return fmt.Sprintf("%v, ReportedME: [%v]",
+ omci.MeBasePacket.String(), omci.ReportedME.String())
+}
+
+// DecodeFromBytes decodes the given bytes of a MIB Upload Next Response into this layer
+func (omci *MibUploadNextResponse) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support MibUploadNext
+ if !me.SupportsMsgType(meDefinition, me.MibUploadNext) {
+ return me.NewProcessingError("managed entity does not support MIB Upload Next Message-Type")
+ }
+ // Entity Class are always ONU DATA (2) and Entity Instance of 0
+ if omci.EntityClass != me.OnuDataClassID {
+ msg := fmt.Sprintf("invalid Entity Class for MIB Upload Next response: %v",
+ omci.EntityClass)
+ return me.NewProcessingError(msg)
+ }
+ if omci.EntityInstance != 0 {
+ msg := fmt.Sprintf("invalid Entity Instance for MIB Upload Next response: %v",
+ omci.EntityInstance)
+ return me.NewUnknownInstanceError(msg)
+ }
+ // Decode reported ME. If an out-of-range sequence number was sent, this will
+ // contain an ME with class ID and entity ID of zero and you should get an
+ // error of "managed entity definition not found" returned.
+ return omci.ReportedME.DecodeFromBytes(data[4:], p, byte(MibUploadNextResponseType))
+}
+
+func decodeMibUploadNextResponse(data []byte, p gopacket.PacketBuilder) error {
+ omci := &MibUploadNextResponse{}
+ omci.MsgLayerType = LayerTypeMibUploadNextResponse
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an MIB Upload Next Response message
+func (omci *MibUploadNextResponse) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ entity, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support MIB Upload
+ if !me.SupportsMsgType(entity, me.MibUploadNext) {
+ return me.NewProcessingError("managed entity does not support the MIB Upload Next Message-Type")
+ }
+ // TODO: Only Baseline supported at this time
+ bytesAvailable := MaxBaselineLength - 8 - 8
+
+ return omci.ReportedME.SerializeTo(b, byte(MibUploadNextResponseType), bytesAvailable, opts)
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// MibResetRequest
+type MibResetRequest struct {
+ MeBasePacket
+}
+
+func (omci *MibResetRequest) String() string {
+ return fmt.Sprintf("%v", omci.MeBasePacket.String())
+}
+
+// DecodeFromBytes decodes the given bytes of a MIB Reset Request into this layer
+func (omci *MibResetRequest) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support MIB reset
+ if !me.SupportsMsgType(meDefinition, me.MibReset) {
+ return me.NewProcessingError("managed entity does not support MIB Reset Message-Type")
+ }
+ // Entity Class are always ONU DATA (2) and Entity Instance of 0
+ if omci.EntityClass != me.OnuDataClassID {
+ msg := fmt.Sprintf("invalid Entity Class for MIB Reset request: %v",
+ omci.EntityClass)
+ return me.NewProcessingError(msg)
+ }
+ if omci.EntityInstance != 0 {
+ msg := fmt.Sprintf("invalid Entity Instance for MIB Reset request: %v",
+ omci.EntityInstance)
+ return me.NewUnknownInstanceError(msg)
+ }
+ return nil
+}
+
+func decodeMibResetRequest(data []byte, p gopacket.PacketBuilder) error {
+ omci := &MibResetRequest{}
+ omci.MsgLayerType = LayerTypeMibResetRequest
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an MIB Reset Request message
+func (omci *MibResetRequest) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Add class ID and entity ID
+ return omci.MeBasePacket.SerializeTo(b)
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// MibResetResponse
+type MibResetResponse struct {
+ MeBasePacket
+ Result me.Results
+}
+
+func (omci *MibResetResponse) String() string {
+ return fmt.Sprintf("%v, Result: %d (%v)",
+ omci.MeBasePacket.String(), omci.Result, omci.Result)
+}
+
+// DecodeFromBytes decodes the given bytes of a MIB Reset Response into this layer
+func (omci *MibResetResponse) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support MIB reset
+ if !me.SupportsMsgType(meDefinition, me.MibReset) {
+ return me.NewProcessingError("managed entity does not support MIB Reset Message-Type")
+ }
+ // MIB Reset Response Entity Class always ONU DATA (2) and
+ // Entity Instance of 0
+ if omci.EntityClass != me.OnuDataClassID {
+ return me.NewProcessingError("invalid Entity Class for MIB Reset Response")
+ }
+ if omci.EntityInstance != 0 {
+ return me.NewUnknownInstanceError("invalid Entity Instance for MIB Reset Response")
+ }
+ omci.Result = me.Results(data[4])
+ if omci.Result > me.DeviceBusy {
+ msg := fmt.Sprintf("invalid results code: %v, must be 0..8", omci.Result)
+ return errors.New(msg)
+ }
+ return nil
+}
+
+func decodeMibResetResponse(data []byte, p gopacket.PacketBuilder) error {
+ omci := &MibResetResponse{}
+ omci.MsgLayerType = LayerTypeMibResetResponse
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an MIB Reset Response message
+func (omci *MibResetResponse) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ entity, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Set
+ if !me.SupportsMsgType(entity, me.MibReset) {
+ return me.NewProcessingError("managed entity does not support the MIB Reset Message-Type")
+ }
+ bytes, err := b.AppendBytes(1)
+ if err != nil {
+ return err
+ }
+ bytes[0] = byte(omci.Result)
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// AlarmNotificationMsg
+const AlarmBitmapSize = 224
+
+type AlarmNotificationMsg struct {
+ MeBasePacket
+ AlarmBitmap [AlarmBitmapSize / 8]byte
+ zeroPadding [3]byte
+ AlarmSequenceNumber byte
+}
+
+func (omci *AlarmNotificationMsg) String() string {
+ return fmt.Sprintf("%v, Sequence Number: %d, Alarm Bitmap: %v",
+ omci.MeBasePacket.String(), omci.AlarmSequenceNumber, omci.AlarmBitmap)
+}
+
+func (omci *AlarmNotificationMsg) IsAlarmActive(alarmNumber uint8) (bool, error) {
+ if alarmNumber >= AlarmBitmapSize {
+ msg := fmt.Sprintf("invalid alarm number: %v, must be 0..224", alarmNumber)
+ return false, errors.New(msg)
+ }
+ octet := alarmNumber / 8
+ bit := 7 - (alarmNumber % 8)
+ return omci.AlarmBitmap[octet]>>bit == 1, nil
+}
+
+func (omci *AlarmNotificationMsg) IsAlarmClear(alarmNumber uint8) (bool, error) {
+ if alarmNumber >= AlarmBitmapSize {
+ msg := fmt.Sprintf("invalid alarm number: %v, must be 0..224", alarmNumber)
+ return false, errors.New(msg)
+ }
+ octet := alarmNumber / 8
+ bit := 7 - (alarmNumber % 8)
+ return omci.AlarmBitmap[octet]>>bit == 0, nil
+}
+
+func (omci *AlarmNotificationMsg) ActivateAlarm(alarmNumber uint8) error {
+ if alarmNumber >= AlarmBitmapSize {
+ msg := fmt.Sprintf("invalid alarm number: %v, must be 0..224", alarmNumber)
+ return errors.New(msg)
+ }
+ octet := alarmNumber / 8
+ bit := 7 - (alarmNumber % 8)
+ omci.AlarmBitmap[octet] |= 1 << bit
+ return nil
+}
+
+func (omci *AlarmNotificationMsg) ClearAlarm(alarmNumber uint8) error {
+ if alarmNumber >= AlarmBitmapSize {
+ msg := fmt.Sprintf("invalid alarm number: %v, must be 0..224", alarmNumber)
+ return errors.New(msg)
+ }
+ octet := alarmNumber / 8
+ bit := 7 - (alarmNumber % 8)
+ omci.AlarmBitmap[octet] &= ^(1 << bit)
+ return nil
+}
+
+// DecodeFromBytes decodes the given bytes of an Alarm Notification into this layer
+func (omci *AlarmNotificationMsg) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ //var meDefinition me.IManagedEntityDefinition
+ //meDefinition, err = me.LoadManagedEntityDefinition(omci.EntityClass,
+ // me.ParamData{EntityID: omci.EntityInstance})
+ //if err != nil {
+ // return err
+ //}
+ // ME needs to support Alarms
+ // TODO: Add attribute to ME to specify that alarm is allowed
+ //if !me.SupportsMsgType(meDefinition, me.MibReset) {
+ // return me.NewProcesssingError("managed entity does not support MIB Reset Message-Type")
+ //}
+ for index, octet := range data[4 : (AlarmBitmapSize/8)-4] {
+ omci.AlarmBitmap[index] = octet
+ }
+ padOffset := 4 + (AlarmBitmapSize / 8)
+ omci.zeroPadding[0] = data[padOffset]
+ omci.zeroPadding[1] = data[padOffset+1]
+ omci.zeroPadding[2] = data[padOffset+2]
+
+ omci.AlarmSequenceNumber = data[padOffset+3]
+ return nil
+}
+
+func decodeAlarmNotification(data []byte, p gopacket.PacketBuilder) error {
+ omci := &AlarmNotificationMsg{}
+ omci.MsgLayerType = LayerTypeAlarmNotification
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Alarm Notification message
+func (omci *AlarmNotificationMsg) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ //var meDefinition me.IManagedEntityDefinition
+ //meDefinition, err = me.LoadManagedEntityDefinition(omci.EntityClass,
+ // me.ParamData{EntityID: omci.EntityInstance})
+ //if err != nil {
+ // return err
+ //}
+ // ME needs to support Alarms
+ // TODO: Add attribute to ME to specify that alarm is allowed
+ //if !me.SupportsMsgType(meDefinition, me.MibReset) {
+ // return me.NewProcessingError("managed entity does not support MIB Reset Message-Type")
+ //}
+ bytes, err := b.AppendBytes((AlarmBitmapSize / 8) + 3 + 1)
+ if err != nil {
+ return err
+ }
+ for index, octet := range omci.AlarmBitmap {
+ bytes[index] = octet
+ }
+ padOffset := AlarmBitmapSize / 8
+ bytes[padOffset] = 0
+ bytes[padOffset+1] = 0
+ bytes[padOffset+2] = 0
+ bytes[padOffset+3] = omci.AlarmSequenceNumber
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// AttributeValueChangeMsg
+type AttributeValueChangeMsg struct {
+ MeBasePacket
+ AttributeMask uint16
+ Attributes me.AttributeValueMap
+}
+
+func (omci *AttributeValueChangeMsg) String() string {
+ return fmt.Sprintf("%v, Mask: %#x, attributes: %v",
+ omci.MeBasePacket.String(), omci.AttributeMask, omci.Attributes)
+}
+
+// DecodeFromBytes decodes the given bytes of an Attribute Value Change notification into this layer
+func (omci *AttributeValueChangeMsg) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ omci.AttributeMask = binary.BigEndian.Uint16(data[4:6])
+ // Attribute decode
+ omci.Attributes, err = meDefinition.DecodeAttributes(omci.AttributeMask, data[6:40], p, byte(AttributeValueChangeType))
+ // TODO: Add support for attributes that can have an AVC associated with them and then add a check here
+ // Validate all attributes support AVC
+ //for attrName := range omci.attributes {
+ // attr, err := me.GetAttributeDefinitionByName(meDefinition.GetAttributeDefinitions(), attrName)
+ // if err != nil {
+ // return err
+ // }
+ // if attr.Index != 0 && !me.SupportsAttributeAVC(attr) {
+ // msg := fmt.Sprintf("attribute '%v' does not support AVC notifications", attrName)
+ // return me.NewProcessingError(msg)
+ // }
+ //}
+ return err
+}
+
+func decodeAttributeValueChange(data []byte, p gopacket.PacketBuilder) error {
+ omci := &AttributeValueChangeMsg{}
+ omci.MsgLayerType = LayerTypeAttributeValueChange
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Attribute Value Change Notification message
+func (omci *AttributeValueChangeMsg) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // TODO: Add support for attributes that can have an AVC associated with them and then add a check here
+ // Validate all attributes support AVC
+ //for attrName := range omci.attributes {
+ // attr, err := me.GetAttributeDefinitionByName(meDefinition.GetAttributeDefinitions(), attrName)
+ // if err != nil {
+ // return err
+ // }
+ // if attr.Index != 0 && !me.SupportsAttributeAVC(attr) {
+ // msg := fmt.Sprintf("attribute '%v' does not support AVC notifications", attrName)
+ // return me.NewProcessingError(msg)
+ // }
+ //}
+ bytes, err := b.AppendBytes(2)
+ if err != nil {
+ return err
+ }
+ binary.BigEndian.PutUint16(bytes, omci.AttributeMask)
+
+ // Attribute serialization
+ // TODO: Only Baseline supported at this time
+ bytesAvailable := MaxBaselineLength - 10 - 8
+
+ err, _ = meDefinition.SerializeAttributes(omci.Attributes, omci.AttributeMask, b,
+ byte(AttributeValueChangeType), bytesAvailable, false)
+ return err
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// TestRequest: TODO: Not yet implemented
+type TestRequest struct {
+ MeBasePacket
+}
+
+func (omci *TestRequest) String() string {
+ return fmt.Sprintf("%v", omci.MeBasePacket.String())
+}
+
+// DecodeFromBytes decodes the given bytes of a Test Request into this layer
+func (omci *TestRequest) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ return errors.New("need to implement") // TODO: Fix me) // return nil
+}
+
+func decodeTestRequest(data []byte, p gopacket.PacketBuilder) error {
+ omci := &TestRequest{}
+ omci.MsgLayerType = LayerTypeTestRequest
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Test Request message
+func (omci *TestRequest) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ return errors.New("need to implement") // TODO: Fix me) // omci.cachedME.SerializeTo(mask, b)
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// TestResponse: TODO: Not yet implemented
+type TestResponse struct {
+ MeBasePacket
+}
+
+func (omci *TestResponse) String() string {
+ return fmt.Sprintf("%v", omci.MeBasePacket.String())
+}
+
+// DecodeFromBytes decodes the given bytes of a Test Response into this layer
+func (omci *TestResponse) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ return errors.New("need to implement") // TODO: Fix me) // return nil
+}
+
+func decodeTestResponse(data []byte, p gopacket.PacketBuilder) error {
+ omci := &TestResponse{}
+ omci.MsgLayerType = LayerTypeTestResponse
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Test Response message
+func (omci *TestResponse) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ return errors.New("need to implement") // TODO: Fix me) // omci.cachedME.SerializeTo(mask, b)
+}
+
+/////////////////////////////////////////////////////////////////////////////
+//
+type StartSoftwareDownloadRequest struct {
+ MeBasePacket // Note: EntityInstance for software download is two specific values
+ WindowSize byte // Window Size -1
+ ImageSize uint32 // Octets
+ NumberOfCircuitPacks byte
+ CircuitPacks []uint16 // MSB & LSB of software image instance
+}
+
+func (omci *StartSoftwareDownloadRequest) String() string {
+ return fmt.Sprintf("%v, Window Size: %v, Image Size: %v, # Circuit Packs: %v",
+ omci.MeBasePacket.String(), omci.WindowSize, omci.ImageSize, omci.NumberOfCircuitPacks)
+}
+
+// DecodeFromBytes decodes the given bytes of a Start Software Download Request into this layer
+func (omci *StartSoftwareDownloadRequest) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Start Software Download
+ if !me.SupportsMsgType(meDefinition, me.StartSoftwareDownload) {
+ return me.NewProcessingError("managed entity does not support Start Software Download Message-Type")
+ }
+ // Software Image Entity Class are always use the Software Image
+ if omci.EntityClass != me.SoftwareImageClassID {
+ return me.NewProcessingError("invalid Entity Class for Start Software Download request")
+ }
+ omci.WindowSize = data[4]
+ omci.ImageSize = binary.BigEndian.Uint32(data[5:9])
+ omci.NumberOfCircuitPacks = data[9]
+ if omci.NumberOfCircuitPacks < 1 || omci.NumberOfCircuitPacks > 9 {
+ return me.NewProcessingError(fmt.Sprintf("invalid number of Circuit Packs: %v, must be 1..9",
+ omci.NumberOfCircuitPacks))
+ }
+ omci.CircuitPacks = make([]uint16, omci.NumberOfCircuitPacks)
+ for index := 0; index < int(omci.NumberOfCircuitPacks); index++ {
+ omci.CircuitPacks[index] = binary.BigEndian.Uint16(data[10+(index*2):])
+ }
+ return nil
+}
+
+func decodeStartSoftwareDownloadRequest(data []byte, p gopacket.PacketBuilder) error {
+ omci := &StartSoftwareDownloadRequest{}
+ omci.MsgLayerType = LayerTypeStartSoftwareDownloadRequest
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Start Software Download Request message
+func (omci *StartSoftwareDownloadRequest) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ entity, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Start Software Download
+ if !me.SupportsMsgType(entity, me.StartSoftwareDownload) {
+ return me.NewProcessingError("managed entity does not support the SStart Software Download Message-Type")
+ }
+ // Software Image Entity Class are always use the Software Image
+ if omci.EntityClass != me.SoftwareImageClassID {
+ return me.NewProcessingError("invalid Entity Class for Start Software Download request")
+ }
+ if omci.NumberOfCircuitPacks < 1 || omci.NumberOfCircuitPacks > 9 {
+ return me.NewProcessingError(fmt.Sprintf("invalid number of Circuit Packs: %v, must be 1..9",
+ omci.NumberOfCircuitPacks))
+ }
+ bytes, err := b.AppendBytes(6 + (2 * int(omci.NumberOfCircuitPacks)))
+ if err != nil {
+ return err
+ }
+ bytes[0] = omci.WindowSize
+ binary.BigEndian.PutUint32(bytes[1:], omci.ImageSize)
+ bytes[5] = omci.NumberOfCircuitPacks
+ for index := 0; index < int(omci.NumberOfCircuitPacks); index++ {
+ binary.BigEndian.PutUint16(bytes[6+(index*2):], omci.CircuitPacks[index])
+ }
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+//
+type downloadResults struct {
+ ManagedEntityID uint16 // ME ID of software image entity instance (slot number plus instance 0..1 or 2..254 vendor-specific)
+ Result me.Results
+}
+
+func (dr *downloadResults) String() string {
+ return fmt.Sprintf("ME: %v (%#x), Results: %d (%v)", dr.ManagedEntityID, dr.ManagedEntityID,
+ dr.Result, dr.Result)
+}
+
+type StartSoftwareDownloadResponse struct {
+ MeBasePacket // Note: EntityInstance for software download is two specific values
+ Result me.Results
+ WindowSize byte // Window Size -1
+ NumberOfInstances byte
+ MeResults []downloadResults
+}
+
+func (omci *StartSoftwareDownloadResponse) String() string {
+ return fmt.Sprintf("%v, Results: %v, Window Size: %v, # of Instances: %v, ME Results: %v",
+ omci.MeBasePacket.String(), omci.Result, omci.WindowSize, omci.NumberOfInstances, omci.MeResults)
+}
+
+// DecodeFromBytes decodes the given bytes of a Start Software Download Response into this layer
+func (omci *StartSoftwareDownloadResponse) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Start Software Download
+ if !me.SupportsMsgType(meDefinition, me.StartSoftwareDownload) {
+ return me.NewProcessingError("managed entity does not support Start Software Download Message-Type")
+ }
+ // Software Image Entity Class are always use the Software Image
+ if omci.EntityClass != me.SoftwareImageClassID {
+ return me.NewProcessingError("invalid Entity Class for Start Software Download response")
+ }
+ omci.Result = me.Results(data[4])
+ if omci.Result > me.DeviceBusy {
+ msg := fmt.Sprintf("invalid results for Start Software Download response: %v, must be 0..6",
+ omci.Result)
+ return errors.New(msg)
+ }
+ omci.WindowSize = data[5]
+ omci.NumberOfInstances = data[6]
+
+ if omci.NumberOfInstances > 9 {
+ msg := fmt.Sprintf("invalid number of Circuit Packs: %v, must be 0..9",
+ omci.NumberOfInstances)
+ return errors.New(msg)
+ }
+ if omci.NumberOfInstances > 0 {
+ omci.MeResults = make([]downloadResults, omci.NumberOfInstances)
+
+ for index := 0; index < int(omci.NumberOfInstances); index++ {
+ omci.MeResults[index].ManagedEntityID = binary.BigEndian.Uint16(data[7+(index*3):])
+ omci.MeResults[index].Result = me.Results(data[9+(index*3)])
+ if omci.MeResults[index].Result > me.DeviceBusy {
+ msg := fmt.Sprintf("invalid results for Start Software Download instance %v response: %v, must be 0..6",
+ index, omci.MeResults[index])
+ return errors.New(msg)
+ }
+ }
+ }
+ return nil
+}
+
+func decodeStartSoftwareDownloadResponse(data []byte, p gopacket.PacketBuilder) error {
+ omci := &StartSoftwareDownloadResponse{}
+ omci.MsgLayerType = LayerTypeStartSoftwareDownloadResponse
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Start Software Download Response message
+func (omci *StartSoftwareDownloadResponse) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Start Software Download
+ if !me.SupportsMsgType(meDefinition, me.StartSoftwareDownload) {
+ return me.NewProcessingError("managed entity does not support Start Software Download Message-Type")
+ }
+ // Software Image Entity Class are always use the Software Image
+ if omci.EntityClass != me.SoftwareImageClassID {
+ return me.NewProcessingError("invalid Entity Class for Start Software Download response")
+ }
+ bytes, err := b.AppendBytes(3 + (3 * int(omci.NumberOfInstances)))
+ if err != nil {
+ return err
+ }
+ if omci.Result > me.DeviceBusy {
+ msg := fmt.Sprintf("invalid results for Start Software Download response: %v, must be 0..6",
+ omci.Result)
+ return errors.New(msg)
+ }
+ bytes[0] = byte(omci.Result)
+ bytes[1] = omci.WindowSize
+ bytes[2] = omci.NumberOfInstances
+
+ if omci.NumberOfInstances > 9 {
+ msg := fmt.Sprintf("invalid number of Circuit Packs: %v, must be 0..9",
+ omci.NumberOfInstances)
+ return errors.New(msg)
+ }
+ if omci.NumberOfInstances > 0 {
+ for index := 0; index < int(omci.NumberOfInstances); index++ {
+ binary.BigEndian.PutUint16(bytes[3+(3*index):], omci.MeResults[index].ManagedEntityID)
+
+ if omci.MeResults[index].Result > me.DeviceBusy {
+ msg := fmt.Sprintf("invalid results for Start Software Download instance %v response: %v, must be 0..6",
+ index, omci.MeResults[index])
+ return errors.New(msg)
+ }
+ bytes[5+(3*index)] = byte(omci.MeResults[index].Result)
+ }
+ }
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+//
+type DownloadSectionRequest struct {
+ MeBasePacket // Note: EntityInstance for software download is two specific values
+ SectionNumber byte
+ SectionData [29]byte // 0 padding if final transfer requires only a partial block
+}
+
+func (omci *DownloadSectionRequest) String() string {
+ return fmt.Sprintf("%v, Section #: %v",
+ omci.MeBasePacket.String(), omci.SectionNumber)
+}
+
+// DecodeFromBytes decodes the given bytes of a Download Section Request into this layer
+func (omci *DownloadSectionRequest) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Download section
+ if !me.SupportsMsgType(meDefinition, me.DownloadSection) {
+ return me.NewProcessingError("managed entity does not support Download Section Message-Type")
+ }
+ // Software Image Entity Class are always use the Software Image
+ if omci.EntityClass != me.SoftwareImageClassID {
+ return me.NewProcessingError("invalid Entity Class for Download Section request")
+ }
+ omci.SectionNumber = data[4]
+ copy(omci.SectionData[0:], data[5:])
+ return nil
+}
+
+func decodeDownloadSectionRequest(data []byte, p gopacket.PacketBuilder) error {
+ omci := &DownloadSectionRequest{}
+ omci.MsgLayerType = LayerTypeDownloadSectionRequest
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Download Section Request message
+func (omci *DownloadSectionRequest) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Download section
+ if !me.SupportsMsgType(meDefinition, me.DownloadSection) {
+ return me.NewProcessingError("managed entity does not support Download Section Message-Type")
+ }
+ // Software Image Entity Class are always use the Software Image
+ if omci.EntityClass != me.SoftwareImageClassID {
+ return me.NewProcessingError("invalid Entity Class for Download Section response")
+ }
+ bytes, err := b.AppendBytes(1 + 29)
+ if err != nil {
+ return err
+ }
+ bytes[0] = omci.SectionNumber
+ copy(bytes[1:], omci.SectionData[0:])
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+//
+type DownloadSectionResponse struct {
+ MeBasePacket // Note: EntityInstance for software download is two specific values
+ Result me.Results
+ SectionNumber byte
+}
+
+func (omci *DownloadSectionResponse) String() string {
+ return fmt.Sprintf("%v, Result: %d (%v), Section #: %v",
+ omci.MeBasePacket.String(), omci.Result, omci.Result, omci.SectionNumber)
+}
+
+// DecodeFromBytes decodes the given bytes of a Download Section Response into this layer
+func (omci *DownloadSectionResponse) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Download section
+ if !me.SupportsMsgType(meDefinition, me.DownloadSection) {
+ return me.NewProcessingError("managed entity does not support Download Section Message-Type")
+ }
+ // Software Image Entity Class are always use the Software Image
+ if omci.EntityClass != me.SoftwareImageClassID {
+ return me.NewProcessingError("invalid Entity Class for Download Section response")
+ }
+ omci.Result = me.Results(data[4])
+ if omci.Result > me.DeviceBusy {
+ msg := fmt.Sprintf("invalid results for Download Section response: %v, must be 0..6",
+ omci.Result)
+ return errors.New(msg)
+ }
+ omci.SectionNumber = data[5]
+ return nil
+}
+
+func decodeDownloadSectionResponse(data []byte, p gopacket.PacketBuilder) error {
+ omci := &DownloadSectionResponse{}
+ omci.MsgLayerType = LayerTypeDownloadSectionResponse
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Download Section Response message
+func (omci *DownloadSectionResponse) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Download section
+ if !me.SupportsMsgType(meDefinition, me.DownloadSection) {
+ return me.NewProcessingError("managed entity does not support Download Section Message-Type")
+ }
+ // Software Image Entity Class are always use the Software Image
+ if omci.EntityClass != me.SoftwareImageClassID {
+ return me.NewProcessingError("invalid Entity Class for Download Section response")
+ }
+ bytes, err := b.AppendBytes(2)
+ if err != nil {
+ return err
+ }
+ bytes[0] = omci.SectionNumber
+ if omci.Result > me.DeviceBusy {
+ msg := fmt.Sprintf("invalid results for Download Section response: %v, must be 0..6",
+ omci.Result)
+ return errors.New(msg)
+ }
+ bytes[1] = byte(omci.Result)
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+//
+type EndSoftwareDownloadRequest struct {
+ MeBasePacket // Note: EntityInstance for software download is two specific values
+ CRC32 uint32
+ ImageSize uint32
+ NumberOfInstances byte
+ ImageInstances []uint16
+}
+
+func (omci *EndSoftwareDownloadRequest) String() string {
+ return fmt.Sprintf("%v, CRC: %#x, Image Size: %v, Number of Instances: %v, Instances: %v",
+ omci.MeBasePacket.String(), omci.CRC32, omci.ImageSize, omci.NumberOfInstances, omci.ImageInstances)
+}
+
+// DecodeFromBytes decodes the given bytes of an End Software Download Request into this layer
+func (omci *EndSoftwareDownloadRequest) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support End Software Download
+ if !me.SupportsMsgType(meDefinition, me.EndSoftwareDownload) {
+ return me.NewProcessingError("managed entity does not support End Software Download Message-Type")
+ }
+ // Software Image Entity Class are always use the Software Image
+ if omci.EntityClass != me.SoftwareImageClassID {
+ return me.NewProcessingError("invalid Entity Class for End Software Download request")
+ }
+ omci.CRC32 = binary.BigEndian.Uint32(data[4:8])
+ omci.ImageSize = binary.BigEndian.Uint32(data[8:12])
+ omci.NumberOfInstances = data[13]
+
+ if omci.NumberOfInstances < 1 || omci.NumberOfInstances > 9 {
+ return me.NewProcessingError(fmt.Sprintf("invalid number of Instances: %v, must be 1..9",
+ omci.NumberOfInstances))
+ }
+ omci.ImageInstances = make([]uint16, omci.NumberOfInstances)
+
+ for index := 0; index < int(omci.NumberOfInstances); index++ {
+ omci.ImageInstances[index] = binary.BigEndian.Uint16(data[14+(index*2):])
+ }
+ return nil
+}
+
+func decodeEndSoftwareDownloadRequest(data []byte, p gopacket.PacketBuilder) error {
+ omci := &EndSoftwareDownloadRequest{}
+ omci.MsgLayerType = LayerTypeEndSoftwareDownloadRequest
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an End Software Download Request message
+func (omci *EndSoftwareDownloadRequest) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support End Software Download
+ if !me.SupportsMsgType(meDefinition, me.EndSoftwareDownload) {
+ return me.NewProcessingError("managed entity does not support Start End Download Message-Type")
+ }
+ // Software Image Entity Class are always use the Software Image
+ if omci.EntityClass != me.SoftwareImageClassID {
+ return me.NewProcessingError("invalid Entity Class for End Software Download response")
+ }
+ if omci.NumberOfInstances < 1 || omci.NumberOfInstances > 9 {
+ return me.NewProcessingError(fmt.Sprintf("invalid number of Instances: %v, must be 1..9",
+ omci.NumberOfInstances))
+ }
+ bytes, err := b.AppendBytes(9 + (2 * int(omci.NumberOfInstances)))
+ if err != nil {
+ return err
+ }
+ binary.BigEndian.PutUint32(bytes[4:8], omci.CRC32)
+ binary.BigEndian.PutUint32(bytes[8:12], omci.ImageSize)
+ bytes[13] = omci.NumberOfInstances
+ for index := 0; index < int(omci.NumberOfInstances); index++ {
+ binary.BigEndian.PutUint16(bytes[14+(index*2):], omci.ImageInstances[index])
+ }
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+//
+type EndSoftwareDownloadResponse struct {
+ MeBasePacket // Note: EntityInstance for software download is two specific values
+ Result me.Results
+ NumberOfInstances byte
+ MeResults []downloadResults
+}
+
+func (omci *EndSoftwareDownloadResponse) String() string {
+ return fmt.Sprintf("%v, Result: %d (%v), Number of Instances: %v, ME Results: %v",
+ omci.MeBasePacket.String(), omci.Result, omci.Result, omci.NumberOfInstances, omci.MeResults)
+}
+
+// DecodeFromBytes decodes the given bytes of an End Software Download Response into this layer
+func (omci *EndSoftwareDownloadResponse) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support End Software Download
+ if !me.SupportsMsgType(meDefinition, me.EndSoftwareDownload) {
+ return me.NewProcessingError("managed entity does not support End Software Download Message-Type")
+ }
+ // Software Image Entity Class are always use the Software Image
+ if omci.EntityClass != me.SoftwareImageClassID {
+ return me.NewProcessingError("invalid Entity Class for End Software Download response")
+ }
+ omci.Result = me.Results(data[4])
+ if omci.Result > me.DeviceBusy {
+ msg := fmt.Sprintf("invalid results for End Software Download response: %v, must be 0..6",
+ omci.Result)
+ return errors.New(msg)
+ }
+ omci.NumberOfInstances = data[5]
+
+ if omci.NumberOfInstances > 9 {
+ msg := fmt.Sprintf("invalid number of Instances: %v, must be 0..9",
+ omci.NumberOfInstances)
+ return errors.New(msg)
+ }
+ if omci.NumberOfInstances > 0 {
+ omci.MeResults = make([]downloadResults, omci.NumberOfInstances)
+
+ for index := 0; index < int(omci.NumberOfInstances); index++ {
+ omci.MeResults[index].ManagedEntityID = binary.BigEndian.Uint16(data[6+(index*3):])
+ omci.MeResults[index].Result = me.Results(data[8+(index*3)])
+ if omci.MeResults[index].Result > me.DeviceBusy {
+ msg := fmt.Sprintf("invalid results for End Software Download instance %v response: %v, must be 0..6",
+ index, omci.MeResults[index])
+ return errors.New(msg)
+ }
+ }
+ }
+ return nil
+}
+
+func decodeEndSoftwareDownloadResponse(data []byte, p gopacket.PacketBuilder) error {
+ omci := &EndSoftwareDownloadResponse{}
+ omci.MsgLayerType = LayerTypeEndSoftwareDownloadResponse
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an End Software Download Response message
+func (omci *EndSoftwareDownloadResponse) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support End Software Download
+ if !me.SupportsMsgType(meDefinition, me.EndSoftwareDownload) {
+ return me.NewProcessingError("managed entity does not support End End Download Message-Type")
+ }
+ // Software Image Entity Class are always use the Software Image
+ if omci.EntityClass != me.SoftwareImageClassID {
+ return me.NewProcessingError("invalid Entity Class for End Download response")
+ }
+ bytes, err := b.AppendBytes(3 + (3 * int(omci.NumberOfInstances)))
+ if err != nil {
+ return err
+ }
+ if omci.Result > me.DeviceBusy {
+ msg := fmt.Sprintf("invalid results for End Software Download response: %v, must be 0..6",
+ omci.Result)
+ return errors.New(msg)
+ }
+ bytes[0] = byte(omci.Result)
+ bytes[1] = omci.NumberOfInstances
+
+ if omci.NumberOfInstances > 9 {
+ msg := fmt.Sprintf("invalid number of Instances: %v, must be 0..9",
+ omci.NumberOfInstances)
+ return errors.New(msg)
+ }
+ if omci.NumberOfInstances > 0 {
+ for index := 0; index < int(omci.NumberOfInstances); index++ {
+ binary.BigEndian.PutUint16(bytes[2+(3*index):], omci.MeResults[index].ManagedEntityID)
+
+ if omci.MeResults[index].Result > me.DeviceBusy {
+ msg := fmt.Sprintf("invalid results for End Software Download instance %v response: %v, must be 0..6",
+ index, omci.MeResults[index])
+ return errors.New(msg)
+ }
+ bytes[4+(3*index)] = byte(omci.MeResults[index].Result)
+ }
+ }
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+//
+type ActivateSoftwareRequest struct {
+ MeBasePacket // Note: EntityInstance for software download is two specific values
+ ActivateFlags byte
+}
+
+func (omci *ActivateSoftwareRequest) String() string {
+ return fmt.Sprintf("%v, Flags: %#x",
+ omci.MeBasePacket.String(), omci.ActivateFlags)
+}
+
+// DecodeFromBytes decodes the given bytes of an Activate Software Request into this layer
+func (omci *ActivateSoftwareRequest) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support End Software Download
+ if !me.SupportsMsgType(meDefinition, me.ActivateSoftware) {
+ return me.NewProcessingError("managed entity does not support Activate Software Message-Type")
+ }
+ // Software Image Entity Class are always use the Software Image
+ if omci.EntityClass != me.SoftwareImageClassID {
+ return me.NewProcessingError("invalid Entity Class for Activate Software request")
+ }
+ omci.ActivateFlags = data[4]
+ if omci.ActivateFlags > 2 {
+ return me.NewProcessingError(fmt.Sprintf("invalid number of Activation flangs: %v, must be 0..2",
+ omci.ActivateFlags))
+ }
+ return nil
+}
+
+func decodeActivateSoftwareRequest(data []byte, p gopacket.PacketBuilder) error {
+ omci := &ActivateSoftwareRequest{}
+ omci.MsgLayerType = LayerTypeActivateSoftwareRequest
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Activate Software message
+func (omci *ActivateSoftwareRequest) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support End Software Download
+ if !me.SupportsMsgType(meDefinition, me.ActivateSoftware) {
+ return me.NewProcessingError("managed entity does not support Activate Message-Type")
+ }
+ // Software Image Entity Class are always use the Software Image
+ if omci.EntityClass != me.SoftwareImageClassID {
+ return me.NewProcessingError("invalid Entity Class for Activate Software request")
+ }
+ bytes, err := b.AppendBytes(1)
+ if err != nil {
+ return err
+ }
+ bytes[0] = omci.ActivateFlags
+ if omci.ActivateFlags > 2 {
+ msg := fmt.Sprintf("invalid results for Activate Software request: %v, must be 0..2",
+ omci.ActivateFlags)
+ return errors.New(msg)
+ }
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+//
+type ActivateSoftwareResponse struct {
+ MeBasePacket
+ Result me.Results
+}
+
+func (omci *ActivateSoftwareResponse) String() string {
+ return fmt.Sprintf("%v, Result: %d (%v)",
+ omci.MeBasePacket.String(), omci.Result, omci.Result)
+}
+
+// DecodeFromBytes decodes the given bytes of an Activate Softwre Response into this layer
+func (omci *ActivateSoftwareResponse) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support End Software Download
+ if !me.SupportsMsgType(meDefinition, me.ActivateSoftware) {
+ return me.NewProcessingError("managed entity does not support Activate Software Message-Type")
+ }
+ // Software Image Entity Class are always use the Software Image
+ if omci.EntityClass != me.SoftwareImageClassID {
+ return me.NewProcessingError("invalid Entity Class for Activate Software response")
+ }
+ omci.Result = me.Results(data[4])
+ if omci.Result > me.Results(6) {
+ msg := fmt.Sprintf("invalid results for Activate Software response: %v, must be 0..6",
+ omci.Result)
+ return errors.New(msg)
+ }
+ return nil
+}
+
+func decodeActivateSoftwareResponse(data []byte, p gopacket.PacketBuilder) error {
+ omci := &ActivateSoftwareResponse{}
+ omci.MsgLayerType = LayerTypeActivateSoftwareResponse
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Activate Software Response message
+func (omci *ActivateSoftwareResponse) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support End Software Download
+ if !me.SupportsMsgType(meDefinition, me.ActivateSoftware) {
+ return me.NewProcessingError("managed entity does not support Activate Message-Type")
+ }
+ // Software Image Entity Class are always use the Software Image
+ if omci.EntityClass != me.SoftwareImageClassID {
+ return me.NewProcessingError("invalid Entity Class for Activate Software response")
+ }
+ bytes, err := b.AppendBytes(1)
+ if err != nil {
+ return err
+ }
+ bytes[0] = byte(omci.Result)
+ if omci.Result > me.Results(6) {
+ msg := fmt.Sprintf("invalid results for Activate Software response: %v, must be 0..6",
+ omci.Result)
+ return errors.New(msg)
+ }
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+//
+type CommitSoftwareRequest struct {
+ MeBasePacket
+}
+
+func (omci *CommitSoftwareRequest) String() string {
+ return fmt.Sprintf("%v", omci.MeBasePacket.String())
+}
+
+// DecodeFromBytes decodes the given bytes of a Commit Software Request into this layer
+func (omci *CommitSoftwareRequest) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support End Software Download
+ if !me.SupportsMsgType(meDefinition, me.CommitSoftware) {
+ return me.NewProcessingError("managed entity does not support Commit Software Message-Type")
+ }
+ // Software Image Entity Class are always use the Software Image
+ if omci.EntityClass != me.SoftwareImageClassID {
+ return me.NewProcessingError("invalid Entity Class for Commit Software request")
+ }
+ return nil
+}
+
+func decodeCommitSoftwareRequest(data []byte, p gopacket.PacketBuilder) error {
+ omci := &CommitSoftwareRequest{}
+ omci.MsgLayerType = LayerTypeCommitSoftwareRequest
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Commit Software Request message
+func (omci *CommitSoftwareRequest) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support End Software Download
+ if !me.SupportsMsgType(meDefinition, me.CommitSoftware) {
+ return me.NewProcessingError("managed entity does not support Commit Message-Type")
+ }
+ // Software Image Entity Class are always use the Software Image
+ if omci.EntityClass != me.SoftwareImageClassID {
+ return me.NewProcessingError("invalid Entity Class for Commit Software request")
+ }
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+//
+type CommitSoftwareResponse struct {
+ MeBasePacket
+}
+
+func (omci *CommitSoftwareResponse) String() string {
+ return fmt.Sprintf("%v", omci.MeBasePacket.String())
+}
+
+// DecodeFromBytes decodes the given bytes of a Commit Softwar Response into this layer
+func (omci *CommitSoftwareResponse) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support End Software Download
+ if !me.SupportsMsgType(meDefinition, me.CommitSoftware) {
+ return me.NewProcessingError("managed entity does not support Commit Software Message-Type")
+ }
+ // Software Image Entity Class are always use the Software Image
+ if omci.EntityClass != me.SoftwareImageClassID {
+ return me.NewProcessingError("invalid Entity Class for Commit Software response")
+ }
+ return nil
+}
+
+func decodeCommitSoftwareResponse(data []byte, p gopacket.PacketBuilder) error {
+ omci := &CommitSoftwareResponse{}
+ omci.MsgLayerType = LayerTypeCommitSoftwareResponse
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Commit Software Response message
+func (omci *CommitSoftwareResponse) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support End Software Download
+ if !me.SupportsMsgType(meDefinition, me.CommitSoftware) {
+ return me.NewProcessingError("managed entity does not support Commit Message-Type")
+ }
+ // Software Image Entity Class are always use the Software Image
+ if omci.EntityClass != me.SoftwareImageClassID {
+ return me.NewProcessingError("invalid Entity Class for Commit Software response")
+ }
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+//
+type SynchronizeTimeRequest struct {
+ MeBasePacket
+ Year uint16
+ Month uint8
+ Day uint8
+ Hour uint8
+ Minute uint8
+ Second uint8
+}
+
+func (omci *SynchronizeTimeRequest) String() string {
+ return fmt.Sprintf("%v, Date-Time: %d/%d/%d-%02d:%02d:%02d",
+ omci.MeBasePacket.String(), omci.Year, omci.Month, omci.Day, omci.Hour, omci.Minute, omci.Second)
+}
+
+// DecodeFromBytes decodes the given bytes of a Synchronize Time Request into this layer
+func (omci *SynchronizeTimeRequest) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Synchronize Time
+ if !me.SupportsMsgType(meDefinition, me.SynchronizeTime) {
+ return me.NewProcessingError("managed entity does not support Synchronize Time Message-Type")
+ }
+ // Synchronize Time Entity Class are always ONU-G (256) and Entity Instance of 0
+ if omci.EntityClass != me.OnuGClassID {
+ return me.NewProcessingError("invalid Entity Class for Synchronize Time request")
+ }
+ if omci.EntityInstance != 0 {
+ return me.NewUnknownInstanceError("invalid Entity Instance for Synchronize Time request")
+ }
+ omci.Year = binary.BigEndian.Uint16(data[4:6])
+ omci.Month = data[6]
+ omci.Day = data[7]
+ omci.Hour = data[8]
+ omci.Minute = data[9]
+ omci.Second = data[10]
+ return nil
+}
+
+func decodeSynchronizeTimeRequest(data []byte, p gopacket.PacketBuilder) error {
+ omci := &SynchronizeTimeRequest{}
+ omci.MsgLayerType = LayerTypeSynchronizeTimeRequest
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Synchronize Time Request message
+func (omci *SynchronizeTimeRequest) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ entity, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Synchronize Time
+ if !me.SupportsMsgType(entity, me.SynchronizeTime) {
+ return me.NewProcessingError("managed entity does not support the Synchronize Time Message-Type")
+ }
+ bytes, err := b.AppendBytes(7)
+ if err != nil {
+ return err
+ }
+ binary.BigEndian.PutUint16(bytes[0:2], omci.Year)
+ bytes[2] = omci.Month
+ bytes[3] = omci.Day
+ bytes[4] = omci.Hour
+ bytes[5] = omci.Minute
+ bytes[6] = omci.Second
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+//
+type SynchronizeTimeResponse struct {
+ MeBasePacket
+ Result me.Results
+ SuccessResults uint8 // Only if 'Result' is 0 -> success
+}
+
+func (omci *SynchronizeTimeResponse) String() string {
+ return fmt.Sprintf("%v, Results: %d (%v), Success: %d",
+ omci.MeBasePacket.String(), omci.Result, omci.Result, omci.SuccessResults)
+}
+
+// DecodeFromBytes decodes the given bytes of a Synchronize Time Response into this layer
+func (omci *SynchronizeTimeResponse) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Synchronize Time
+ if !me.SupportsMsgType(meDefinition, me.SynchronizeTime) {
+ return me.NewProcessingError("managed entity does not support Synchronize Time Message-Type")
+ }
+ // Synchronize Time Entity Class are always ONU-G (256) and Entity Instance of 0
+ if omci.EntityClass != me.OnuGClassID {
+ return me.NewProcessingError("invalid Entity Class for Synchronize Time response")
+ }
+ if omci.EntityInstance != 0 {
+ return me.NewUnknownInstanceError("invalid Entity Instance for Synchronize Time response")
+ }
+ omci.Result = me.Results(data[4])
+ if omci.Result > me.DeviceBusy {
+ msg := fmt.Sprintf("invalid results code: %v, must be 0..8", omci.Result)
+ return errors.New(msg)
+ }
+ omci.SuccessResults = data[5]
+ return nil
+}
+
+func decodeSynchronizeTimeResponse(data []byte, p gopacket.PacketBuilder) error {
+ omci := &SynchronizeTimeResponse{}
+ omci.MsgLayerType = LayerTypeSynchronizeTimeResponse
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Synchronize Time Response message
+func (omci *SynchronizeTimeResponse) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ entity, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // Synchronize Time Entity Class are always ONU DATA (2) and Entity Instance of 0
+ if omci.EntityClass != me.OnuGClassID {
+ return me.NewProcessingError("invalid Entity Class for Synchronize Time response")
+ }
+ if omci.EntityInstance != 0 {
+ return me.NewUnknownInstanceError("invalid Entity Instance for Synchronize Time response")
+ }
+ // ME needs to support Synchronize Time
+ if !me.SupportsMsgType(entity, me.SynchronizeTime) {
+ return me.NewProcessingError("managed entity does not support the Synchronize Time Message-Type")
+ }
+ numBytes := 2
+ if omci.Result != me.Success {
+ numBytes = 1
+ }
+ bytes, err := b.AppendBytes(numBytes)
+ if err != nil {
+ return err
+ }
+ bytes[0] = uint8(omci.Result)
+ if omci.Result == me.Success {
+ bytes[1] = omci.SuccessResults
+ }
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+//
+type RebootRequest struct {
+ MeBasePacket
+ RebootCondition byte
+}
+
+func (omci *RebootRequest) String() string {
+ return fmt.Sprintf("%v, Reboot Condition: %v",
+ omci.MeBasePacket.String(), omci.RebootCondition)
+}
+
+// DecodeFromBytes decodes the given bytes of a Reboot Request into this layer
+func (omci *RebootRequest) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Reboot
+ if !me.SupportsMsgType(meDefinition, me.Reboot) {
+ return me.NewProcessingError("managed entity does not support Reboot Message-Type")
+ }
+ omci.RebootCondition = data[4]
+ if omci.RebootCondition > 3 {
+ msg := fmt.Sprintf("invalid reboot condition code: %v, must be 0..3", omci.RebootCondition)
+ return errors.New(msg)
+ }
+ return nil
+}
+
+func decodeRebootRequest(data []byte, p gopacket.PacketBuilder) error {
+ omci := &RebootRequest{}
+ omci.MsgLayerType = LayerTypeRebootRequest
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Reboot Request message
+func (omci *RebootRequest) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ entity, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Reboot
+ if !me.SupportsMsgType(entity, me.Reboot) {
+ return me.NewProcessingError("managed entity does not support the Synchronize Time Message-Type")
+ }
+ bytes, err := b.AppendBytes(1)
+ if err != nil {
+ return err
+ }
+ if omci.RebootCondition > 3 {
+ return me.NewProcessingError(fmt.Sprintf("invalid reboot condition code: %v, must be 0..3",
+ omci.RebootCondition))
+ }
+ bytes[0] = omci.RebootCondition
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+//
+type RebootResponse struct {
+ MeBasePacket
+ Result me.Results
+}
+
+// DecodeFromBytes decodes the given bytes of a Reboot Response into this layer
+func (omci *RebootResponse) String() string {
+ return fmt.Sprintf("%v, Result: %d (%v)",
+ omci.MeBasePacket.String(), omci.Result, omci.Result)
+}
+
+// DecodeFromBytes decodes the given bytes of a Reboot Response into this layer
+func (omci *RebootResponse) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Reboot
+ if !me.SupportsMsgType(meDefinition, me.Reboot) {
+ return me.NewProcessingError("managed entity does not support Reboot Message-Type")
+ }
+ if omci.Result > 6 {
+ msg := fmt.Sprintf("invalid reboot results code: %v, must be 0..6", omci.Result)
+ return errors.New(msg)
+ }
+ omci.Result = me.Results(data[4])
+ return nil
+}
+
+func decodeRebootResponse(data []byte, p gopacket.PacketBuilder) error {
+ omci := &RebootResponse{}
+ omci.MsgLayerType = LayerTypeRebootResponse
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Reboot Response message
+func (omci *RebootResponse) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ entity, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Reboot
+ if !me.SupportsMsgType(entity, me.Reboot) {
+ return me.NewProcessingError("managed entity does not support the Synchronize Time Message-Type")
+ }
+ bytes, err := b.AppendBytes(1)
+ if err != nil {
+ return err
+ }
+ if omci.Result > 6 {
+ msg := fmt.Sprintf("invalid reboot results code: %v, must be 0..6", omci.Result)
+ return errors.New(msg)
+ }
+ bytes[0] = byte(omci.Result)
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+//
+type GetNextRequest struct {
+ MeBasePacket
+ AttributeMask uint16
+ SequenceNumber uint16
+}
+
+func (omci *GetNextRequest) String() string {
+ return fmt.Sprintf("%v, Attribute Mask: %#x, Sequence Number: %v",
+ omci.MeBasePacket.String(), omci.AttributeMask, omci.SequenceNumber)
+}
+
+// DecodeFromBytes decodes the given bytes of a Get Next Request into this layer
+func (omci *GetNextRequest) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support GetNext
+ if !me.SupportsMsgType(meDefinition, me.GetNext) {
+ return me.NewProcessingError("managed entity does not support Get Next Message-Type")
+ }
+ // Note: G.988 specifies that an error code of (3) should result if more
+ // than one attribute is requested
+ // TODO: Return error. Have flag to optionally allow it to be encoded
+ // TODO: Check that the attribute is a table attirbute. Issue warning or return error
+ omci.AttributeMask = binary.BigEndian.Uint16(data[4:6])
+ omci.SequenceNumber = binary.BigEndian.Uint16(data[6:8])
+ return nil
+}
+
+func decodeGetNextRequest(data []byte, p gopacket.PacketBuilder) error {
+ omci := &GetNextRequest{}
+ omci.MsgLayerType = LayerTypeGetNextRequest
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Get Next Message Type Request
+func (omci *GetNextRequest) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support GetNext
+ if !me.SupportsMsgType(meDefinition, me.GetNext) {
+ return me.NewProcessingError("managed entity does not support Get Next Message-Type")
+ }
+ bytes, err := b.AppendBytes(4)
+ if err != nil {
+ return err
+ }
+ binary.BigEndian.PutUint16(bytes, omci.AttributeMask)
+ binary.BigEndian.PutUint16(bytes[2:], omci.SequenceNumber)
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+//
+type GetNextResponse struct {
+ MeBasePacket
+ Result me.Results
+ AttributeMask uint16
+ Attributes me.AttributeValueMap
+}
+
+// SerializeTo provides serialization of an Get Next Message Type Response
+func (omci *GetNextResponse) String() string {
+ return fmt.Sprintf("%v, Result: %v, Attribute Mask: %#x, Attributes: %v",
+ omci.MeBasePacket.String(), omci.Result, omci.AttributeMask, omci.Attributes)
+}
+
+// DecodeFromBytes decodes the given bytes of a Get Next Response into this layer
+func (omci *GetNextResponse) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Set
+ if !me.SupportsMsgType(meDefinition, me.GetNext) {
+ return me.NewProcessingError("managed entity does not support Get Next Message-Type")
+ }
+ omci.Result = me.Results(data[4])
+ if omci.Result > 6 {
+ msg := fmt.Sprintf("invalid get next results code: %v, must be 0..6", omci.Result)
+ return errors.New(msg)
+ }
+ omci.AttributeMask = binary.BigEndian.Uint16(data[5:7])
+
+ // Attribute decode
+ omci.Attributes, err = meDefinition.DecodeAttributes(omci.AttributeMask, data[7:], p, byte(GetNextResponseType))
+ if err != nil {
+ return err
+ }
+ // Validate all attributes support read
+ for attrName := range omci.Attributes {
+ attr, err := me.GetAttributeDefinitionByName(meDefinition.GetAttributeDefinitions(), attrName)
+ if err != nil {
+ return err
+ }
+ if attr.Index != 0 && !me.SupportsAttributeAccess(*attr, me.Read) {
+ msg := fmt.Sprintf("attribute '%v' does not support read access", attrName)
+ return me.NewProcessingError(msg)
+ }
+ }
+ if eidDef, eidDefOK := meDefinition.GetAttributeDefinitions()[0]; eidDefOK {
+ omci.Attributes[eidDef.GetName()] = omci.EntityInstance
+ return nil
+ }
+ panic("All Managed Entities have an EntityID attribute")
+}
+
+func decodeGetNextResponse(data []byte, p gopacket.PacketBuilder) error {
+ omci := &GetNextResponse{}
+ omci.MsgLayerType = LayerTypeGetNextResponse
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Get Next Message Type Response
+func (omci *GetNextResponse) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Get
+ if !me.SupportsMsgType(meDefinition, me.GetNext) {
+ return me.NewProcessingError("managed entity does not support the Get Next Message-Type")
+ }
+ bytes, err := b.AppendBytes(3)
+ if err != nil {
+ return err
+ }
+ bytes[0] = byte(omci.Result)
+ if omci.Result > 6 {
+ msg := fmt.Sprintf("invalid get next results code: %v, must be 0..6", omci.Result)
+ return errors.New(msg)
+ }
+ binary.BigEndian.PutUint16(bytes[1:3], omci.AttributeMask)
+
+ // Validate all attributes support read
+ for attrName := range omci.Attributes {
+ attr, err := me.GetAttributeDefinitionByName(meDefinition.GetAttributeDefinitions(), attrName)
+ if err != nil {
+ return err
+ }
+ if attr.Index != 0 && !me.SupportsAttributeAccess(*attr, me.Read) {
+ msg := fmt.Sprintf("attribute '%v' does not support read access", attrName)
+ return me.NewProcessingError(msg)
+ }
+ }
+ // Attribute serialization
+ switch omci.Result {
+ default:
+ break
+
+ case me.Success:
+ // TODO: Only Baseline supported at this time
+ bytesAvailable := MaxBaselineLength - 11 - 8
+
+ err, _ = meDefinition.SerializeAttributes(omci.Attributes, omci.AttributeMask, b,
+ byte(GetNextResponseType), bytesAvailable, false)
+ if err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+//
+type TestResultMsg struct {
+ MeBasePacket
+}
+
+func (omci *TestResultMsg) String() string {
+ return fmt.Sprintf("%v", omci.MeBasePacket.String())
+}
+
+// DecodeFromBytes decodes the given bytes of a Test Result Notification into this layer
+func (omci *TestResultMsg) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ return errors.New("need to implement") // TODO: Fix me) // return nil
+}
+
+func decodeTestResult(data []byte, p gopacket.PacketBuilder) error {
+ omci := &TestResultMsg{}
+ omci.MsgLayerType = LayerTypeTestResult
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Test Result notification message
+func (omci *TestResultMsg) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ return errors.New("need to implement") // TODO: Fix me) // omci.cachedME.SerializeTo(mask, b)
+}
+
+/////////////////////////////////////////////////////////////////////////////
+//
+type GetCurrentDataRequest struct {
+ MeBasePacket
+ AttributeMask uint16
+}
+
+func (omci *GetCurrentDataRequest) String() string {
+ return fmt.Sprintf("%v, Attribute Mask: %#x",
+ omci.MeBasePacket.String(), omci.AttributeMask)
+}
+
+// DecodeFromBytes decodes the given bytes of a Get Current Data Request into this layer
+func (omci *GetCurrentDataRequest) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support GetNext
+ if !me.SupportsMsgType(meDefinition, me.GetCurrentData) {
+ return me.NewProcessingError("managed entity does not support Get Current Data Message-Type")
+ }
+ // Note: G.988 specifies that an error code of (3) should result if more
+ // than one attribute is requested
+ omci.AttributeMask = binary.BigEndian.Uint16(data[4:6])
+ return nil
+}
+
+func decodeGetCurrentDataRequest(data []byte, p gopacket.PacketBuilder) error {
+ omci := &GetCurrentDataRequest{}
+ omci.MsgLayerType = LayerTypeGetCurrentDataRequest
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Get Current Data Request message
+func (omci *GetCurrentDataRequest) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support GetNext
+ if !me.SupportsMsgType(meDefinition, me.GetCurrentData) {
+ return me.NewProcessingError("managed entity does not support Get Current Data Message-Type")
+ }
+ bytes, err := b.AppendBytes(2)
+ if err != nil {
+ return err
+ }
+ binary.BigEndian.PutUint16(bytes, omci.AttributeMask)
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+//
+type GetCurrentDataResponse struct {
+ MeBasePacket
+ Result me.Results
+ AttributeMask uint16
+ Attributes me.AttributeValueMap
+}
+
+func (omci *GetCurrentDataResponse) String() string {
+ return fmt.Sprintf("%v, Result: %d (%v), Attribute Mask: %#x, Attributes: %v",
+ omci.MeBasePacket.String(), omci.Result, omci.Result, omci.AttributeMask, omci.Attributes)
+}
+
+// DecodeFromBytes decodes the given bytes of a Get Current Data Respnse into this layer
+func (omci *GetCurrentDataResponse) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Set
+ if !me.SupportsMsgType(meDefinition, me.GetCurrentData) {
+ return me.NewProcessingError("managed entity does not support Get Current Data Message-Type")
+ }
+ omci.AttributeMask = binary.BigEndian.Uint16(data[4:6])
+
+ // Attribute decode
+ omci.Attributes, err = meDefinition.DecodeAttributes(omci.AttributeMask, data[6:], p, byte(GetCurrentDataResponseType))
+ if err != nil {
+ return err
+ }
+ return nil
+}
+
+func decodeGetCurrentDataResponse(data []byte, p gopacket.PacketBuilder) error {
+ omci := &GetCurrentDataResponse{}
+ omci.MsgLayerType = LayerTypeGetCurrentDataResponse
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Get Current Data Message Type Response
+func (omci *GetCurrentDataResponse) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ meDefinition, omciErr := me.LoadManagedEntityDefinition(omci.EntityClass,
+ me.ParamData{EntityID: omci.EntityInstance})
+ if omciErr.StatusCode() != me.Success {
+ return omciErr.GetError()
+ }
+ // ME needs to support Get
+ if !me.SupportsMsgType(meDefinition, me.GetCurrentData) {
+ return me.NewProcessingError("managed entity does not support the Get Current Data Message-Type")
+ }
+ bytes, err := b.AppendBytes(2)
+ if err != nil {
+ return err
+ }
+ binary.BigEndian.PutUint16(bytes[0:2], omci.AttributeMask)
+
+ // Attribute serialization
+ // TODO: Only Baseline supported at this time
+ bytesAvailable := MaxBaselineLength - 9 - 8
+ var failedMask uint16
+
+ err, failedMask = meDefinition.SerializeAttributes(omci.Attributes, omci.AttributeMask, b,
+ byte(GetCurrentDataResponseType), bytesAvailable, opts.FixLengths)
+
+ if failedMask != 0 {
+ // TODO: See GetResponse serialization above for the steps here
+ return me.NewMessageTruncatedError("getCurrentData attribute truncation not yet supported")
+ }
+ if err != nil {
+ return err
+ }
+ return nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+//
+type SetTableRequest struct {
+ MeBasePacket
+ // TODO: Fix me when extended messages supported)
+}
+
+func (omci *SetTableRequest) String() string {
+ return fmt.Sprintf("%v", omci.MeBasePacket.String())
+}
+
+// DecodeFromBytes decodes the given bytes of a Set Table Request into this layer
+func (omci *SetTableRequest) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ return errors.New("need to implement") // TODO: Fix me when extended messages supported)
+}
+
+func decodeSetTableRequest(data []byte, p gopacket.PacketBuilder) error {
+ omci := &SetTableRequest{}
+ omci.MsgLayerType = LayerTypeSetTableRequest
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Set Table Message Type Request
+func (omci *SetTableRequest) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ return errors.New("need to implement") /// TODO: Fix me when extended messages supported)
+}
+
+/////////////////////////////////////////////////////////////////////////////
+//
+type SetTableResponse struct {
+ MeBasePacket
+ // TODO: Fix me when extended messages supported)
+}
+
+func (omci *SetTableResponse) String() string {
+ return fmt.Sprintf("%v", omci.MeBasePacket.String())
+}
+
+// DecodeFromBytes decodes the given bytes of a Set Table Response into this layer
+func (omci *SetTableResponse) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ // Common ClassID/EntityID decode in msgBase
+ err := omci.MeBasePacket.DecodeFromBytes(data, p)
+ if err != nil {
+ return err
+ }
+ return errors.New("need to implement") // TODO: Fix me when extended messages supported)
+}
+
+func decodeSetTableResponse(data []byte, p gopacket.PacketBuilder) error {
+ omci := &SetTableResponse{}
+ omci.MsgLayerType = LayerTypeSetTableResponse
+ return decodingLayerDecoder(omci, data, p)
+}
+
+// SerializeTo provides serialization of an Set Table Message Type Response
+func (omci *SetTableResponse) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ return errors.New("need to implement") // TODO: Fix me when extended messages supported)
+}
+
+/////////////////////////////////////////////////////////////////////////////
+//
+type UnsupportedMessageTypeResponse struct {
+ MeBasePacket
+ Result me.Results
+}
+
+// DecodeFromBytes decodes the given bytes of an Unsupported Message Type Response into this layer
+func (omci *UnsupportedMessageTypeResponse) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ return errors.New("you should never really decode this")
+}
+
+// SerializeTo provides serialization of an Unsupported Message Type Response
+func (omci *UnsupportedMessageTypeResponse) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // Basic (common) OMCI Header is 8 octets, 10
+ err := omci.MeBasePacket.SerializeTo(b)
+ if err != nil {
+ return err
+ }
+ bytes, err := b.AppendBytes(1)
+ if err != nil {
+ return err
+ }
+ bytes[0] = byte(omci.Result)
+ return nil
+}
diff --git a/vendor/github.com/opencord/omci-lib-go/omci.go b/vendor/github.com/opencord/omci-lib-go/omci.go
new file mode 100644
index 0000000..7a162d6
--- /dev/null
+++ b/vendor/github.com/opencord/omci-lib-go/omci.go
@@ -0,0 +1,331 @@
+/*
+ * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * 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.
+ */
+
+// Package omci provides a library of routines to create, manipulate, serialize, and
+// decode ITU-T G.988 OMCI messages/packets
+package omci
+
+import (
+ "encoding/binary"
+ "errors"
+ "fmt"
+ "github.com/aead/cmac/aes"
+ me "github.com/opencord/omci-lib-go/generated"
+ "github.com/google/gopacket"
+ "github.com/google/gopacket/layers"
+)
+
+// DeviceIdent identifies the OMCI message format. Currently either baseline or extended.
+type DeviceIdent byte
+
+// LayerTypeOmci provide a gopacket LayerType for OMCI messages
+var (
+ LayerTypeOMCI gopacket.LayerType
+)
+
+func init() {
+ LayerTypeOMCI = gopacket.RegisterLayerType(1000,
+ gopacket.LayerTypeMetadata{
+ Name: "OMCI",
+ Decoder: gopacket.DecodeFunc(decodeOMCI),
+ })
+}
+
+const (
+ // Device Identifiers
+ _ = iota
+ // BaselineIdent message are composed of a fixed 40 octet packet + 8-octet trailer. All
+ // G-PON OLTs and ONUs support the baseline message set
+ BaselineIdent DeviceIdent = 0x0A
+
+ // ExtendedIdent messager are up to 1920 octets but may not be supported by all ONUs or OLTs.
+ ExtendedIdent DeviceIdent = 0x0B
+)
+
+var omciIK = []byte{0x18, 0x4b, 0x8a, 0xd4, 0xd1, 0xac, 0x4a, 0xf4,
+ 0xdd, 0x4b, 0x33, 0x9e, 0xcc, 0x0d, 0x33, 0x70}
+
+func (di DeviceIdent) String() string {
+ switch di {
+ default:
+ return "Unknown"
+
+ case BaselineIdent:
+ return "Baseline"
+
+ case ExtendedIdent:
+ return "Extended"
+ }
+}
+
+// MaxBaselineLength is the maximum number of octets allowed in an OMCI Baseline
+// message. Depending on the adapter, it may or may not include the
+const MaxBaselineLength = 48
+
+// MaxExtendedLength is the maximum number of octets allowed in an OMCI Extended
+// message (including header).
+const MaxExtendedLength = 1980
+
+// MaxAttributeMibUploadNextBaselineLength is the maximum payload size for attributes for
+// a Baseline MIB Upload Next message.29
+const MaxAttributeMibUploadNextBaselineLength = MaxBaselineLength - 14 - 8
+
+// MaxAttributeGetNextBaselineLength is the maximum payload size for attributes for
+// a Baseline MIB Get Next message. This is just the attribute portion of the
+// message contents and does not include the Result Code & Attribute Mask.
+const MaxAttributeGetNextBaselineLength = MaxBaselineLength - 11 - 8
+
+// MaxManagedEntityMibUploadNextExtendedLength is the maximum payload size for ME
+// entries for an Extended MIB Upload Next message. Extended messages differ from
+// the baseline as multiple MEs can be reported in a single frame, just not multiple
+// attributes.
+const MaxManagedEntityMibUploadNextExtendedLength = MaxExtendedLength - 10 - 4
+
+// MaxAttributeGetNextExtendedLength is the maximum payload size for attributes for
+// a Extended MIB Get Next message. This is just the attribute portion of the
+// message contents and does not include the Result Code & Attribute Mask.
+const MaxAttributeGetNextExtendedLength = MaxExtendedLength - 13 - 4
+
+// NullEntityID is often used as the Null/void Managed Entity ID for attributes
+// that are used to refer to other Managed Entities but are currently not provisioned.
+const NullEntityID = uint16(0xffff)
+
+// OMCI defines the common protocol. Extended will be added once
+// I can get basic working (and layered properly). See ITU-T G.988 11/2017 section
+// A.3 for more information
+type OMCI struct {
+ layers.BaseLayer
+ TransactionID uint16
+ MessageType MessageType
+ DeviceIdentifier DeviceIdent
+ Payload []byte
+ padding []byte
+ Length uint16
+ MIC uint32
+}
+
+func (omci *OMCI) String() string {
+ //msgType := me.MsgType(byte(omci.MessageType) & me.MsgTypeMask)
+ //if me.IsAutonomousNotification(msgType) {
+ // return fmt.Sprintf("OMCI: Type: %v:", msgType)
+ //} else if byte(omci.MessageType)&me.AK == me.AK {
+ // return fmt.Sprintf("OMCI: Type: %v Response", msgType)
+ //}
+ return fmt.Sprintf("Type: %v, TID: %d (%#x), Ident: %v",
+ omci.MessageType, omci.TransactionID, omci.TransactionID, omci.DeviceIdentifier)
+}
+
+// LayerType returns LayerTypeOMCI
+func (omci *OMCI) LayerType() gopacket.LayerType {
+ return LayerTypeOMCI
+}
+
+// LayerContents returns the OMCI specific layer information
+func (omci *OMCI) LayerContents() []byte {
+ b := make([]byte, 8)
+ binary.BigEndian.PutUint16(b, omci.TransactionID)
+ b[2] = byte(omci.MessageType)
+ b[3] = byte(omci.DeviceIdentifier)
+ return b
+}
+
+// CanDecode returns the layers that this class can decode
+func (omci *OMCI) CanDecode() gopacket.LayerClass {
+ return LayerTypeOMCI
+}
+
+// NextLayerType returns the layer type contained by this DecodingLayer.
+func (omci *OMCI) NextLayerType() gopacket.LayerType {
+ return gopacket.LayerTypeZero
+}
+
+func decodeOMCI(data []byte, p gopacket.PacketBuilder) error {
+ // Allow baseline messages without Length & MIC, but no less
+ if len(data) < MaxBaselineLength-8 {
+ return errors.New("frame header too small")
+ }
+ switch DeviceIdent(data[3]) {
+ default:
+ return errors.New("unsupported message type")
+
+ case BaselineIdent:
+ //omci := &BaselineMessage{}
+ omci := &OMCI{}
+ return omci.DecodeFromBytes(data, p)
+
+ case ExtendedIdent:
+ //omci := &ExtendedMessage{}
+ omci := &OMCI{}
+ return omci.DecodeFromBytes(data, p)
+ }
+}
+
+func calculateMicAes128(data []byte) (uint32, error) {
+ // See if upstream or downstream
+ var downstreamCDir = [...]byte{0x01}
+ var upstreamCDir = [...]byte{0x02}
+
+ tid := binary.BigEndian.Uint16(data[0:2])
+ var sum []byte
+ var err error
+
+ if (data[2]&me.AK) == me.AK || tid == 0 {
+ sum, err = aes.Sum(append(upstreamCDir[:], data[:44]...), omciIK, 4)
+ } else {
+ sum, err = aes.Sum(append(downstreamCDir[:], data[:44]...), omciIK, 4)
+ }
+ if err != nil {
+ return 0, err
+ }
+ return binary.BigEndian.Uint32(sum), nil
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// Baseline Message encode / decode
+
+// DecodeFromBytes will decode the OMCI layer of a packet/message
+func (omci *OMCI) DecodeFromBytes(data []byte, p gopacket.PacketBuilder) error {
+ if len(data) < 10 {
+ p.SetTruncated()
+ return errors.New("frame too small")
+ }
+ omci.TransactionID = binary.BigEndian.Uint16(data[0:])
+ omci.MessageType = MessageType(data[2])
+ omci.DeviceIdentifier = DeviceIdent(data[3])
+
+ isNotification := (int(omci.MessageType) & ^me.MsgTypeMask) == 0
+ if omci.TransactionID == 0 && !isNotification {
+ return errors.New("omci Transaction ID is zero for non-Notification type message")
+ }
+ // Decode length
+ var payloadOffset int
+ var micOffset int
+ if omci.DeviceIdentifier == BaselineIdent {
+ omci.Length = MaxBaselineLength - 8
+ payloadOffset = 8
+ micOffset = MaxBaselineLength - 4
+
+ if len(data) >= micOffset {
+ length := binary.BigEndian.Uint32(data[micOffset-4:])
+ if uint16(length) != omci.Length {
+ return me.NewProcessingError("invalid baseline message length")
+ }
+ }
+ } else {
+ payloadOffset = 10
+ omci.Length = binary.BigEndian.Uint16(data[8:10])
+ micOffset = int(omci.Length) + payloadOffset
+
+ if omci.Length > MaxExtendedLength {
+ return me.NewProcessingError("extended frame exceeds maximum allowed")
+ }
+ if int(omci.Length) != micOffset {
+ if int(omci.Length) < micOffset {
+ p.SetTruncated()
+ }
+ return me.NewProcessingError("extended frame too small")
+ }
+ }
+ // Extract MIC if present in the data
+ if len(data) >= micOffset+4 {
+ omci.MIC = binary.BigEndian.Uint32(data[micOffset:])
+ actual, _ := calculateMicAes128(data[:micOffset])
+ if omci.MIC != actual {
+ _ = fmt.Sprintf("invalid MIC, expected %#x, got %#x",
+ omci.MIC, actual)
+ //return errors.New(msg)
+ }
+ }
+ omci.BaseLayer = layers.BaseLayer{data[:4], data[4:]}
+ p.AddLayer(omci)
+ nextLayer, err := MsgTypeToNextLayer(omci.MessageType)
+ if err != nil {
+ return err
+ }
+ return p.NextDecoder(nextLayer)
+}
+
+// SerializeTo writes the serialized form of this layer into the
+// SerializationBuffer, implementing gopacket.SerializableLayer.
+// See the docs for gopacket.SerializableLayer for more info.
+func (omci *OMCI) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
+ // TODO: Hardcoded for baseline message format for now. Will eventually need to support
+ // the extended message format.
+ bytes, err := b.PrependBytes(4)
+ if err != nil {
+ return err
+ }
+ // OMCI layer error checks
+ isNotification := (int(omci.MessageType) & ^me.MsgTypeMask) == 0
+ if omci.TransactionID == 0 && !isNotification {
+ return errors.New("omci Transaction ID is zero for non-Notification type message")
+ }
+ if omci.DeviceIdentifier == 0 {
+ omci.DeviceIdentifier = BaselineIdent // Allow uninitialized device identifier
+ }
+ if omci.DeviceIdentifier == BaselineIdent {
+ if omci.Length == 0 {
+ omci.Length = MaxBaselineLength - 8 // Allow uninitialized length
+ } else if omci.Length != MaxBaselineLength-8 {
+ msg := fmt.Sprintf("invalid Baseline message length: %v", omci.Length)
+ return errors.New(msg)
+ }
+ } else if omci.DeviceIdentifier == ExtendedIdent {
+ if omci.Length == 0 {
+ omci.Length = uint16(len(bytes) - 10) // Allow uninitialized length
+ }
+ if omci.Length > MaxExtendedLength {
+ msg := fmt.Sprintf("invalid Baseline message length: %v", omci.Length)
+ return errors.New(msg)
+ }
+ } else {
+ msg := fmt.Sprintf("invalid device identifier: %#x, Baseline or Extended expected",
+ omci.DeviceIdentifier)
+ return errors.New(msg)
+ }
+ binary.BigEndian.PutUint16(bytes, omci.TransactionID)
+ bytes[2] = byte(omci.MessageType)
+ bytes[3] = byte(omci.DeviceIdentifier)
+ b.PushLayer(LayerTypeOMCI)
+
+ bufLen := len(b.Bytes())
+ padSize := int(omci.Length) - bufLen + 4
+ if padSize < 0 {
+ msg := fmt.Sprintf("invalid OMCI Message Type length, exceeded allowed frame size by %d bytes",
+ -padSize)
+ return errors.New(msg)
+ }
+ padding, err := b.AppendBytes(padSize)
+ copy(padding, lotsOfZeros[:])
+
+ if omci.DeviceIdentifier == BaselineIdent {
+ // For baseline, always provide the length
+ binary.BigEndian.PutUint32(b.Bytes()[MaxBaselineLength-8:], 40)
+ }
+ if opts.ComputeChecksums {
+ micBytes, err := b.AppendBytes(4)
+ if err != nil {
+ return err
+ }
+ omci.MIC, _ = calculateMicAes128(bytes[:MaxBaselineLength-4])
+ binary.BigEndian.PutUint32(micBytes, omci.MIC)
+ }
+ return nil
+}
+
+// hacky way to zero out memory... there must be a better way?
+var lotsOfZeros [MaxExtendedLength]byte // Extended OMCI messages may be up to 1980 bytes long, including headers
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif/adapter_proxy_if.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif/adapter_proxy_if.go
new file mode 100644
index 0000000..de5cfc0
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif/adapter_proxy_if.go
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * 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.
+ */
+
+package adapterif
+
+import (
+ "context"
+
+ "github.com/golang/protobuf/proto"
+ ic "github.com/opencord/voltha-protos/v3/go/inter_container"
+)
+
+// AdapterProxy interface for AdapterProxy implementation.
+type AdapterProxy interface {
+ SendInterAdapterMessage(ctx context.Context,
+ msg proto.Message,
+ msgType ic.InterAdapterMessageType_Types,
+ fromAdapter string,
+ toAdapter string,
+ toDeviceID string,
+ proxyDeviceID string,
+ messageID string) error
+}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif/core_proxy_if.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif/core_proxy_if.go
new file mode 100644
index 0000000..dbf3418
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif/core_proxy_if.go
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * 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.
+ */
+
+package adapterif
+
+import (
+ "context"
+
+ "github.com/opencord/voltha-protos/v3/go/voltha"
+)
+
+// CoreProxy interface for voltha-go coreproxy.
+type CoreProxy interface {
+ UpdateCoreReference(deviceID string, coreReference string)
+ DeleteCoreReference(deviceID string)
+ // getCoreTopic(deviceID string) kafka.Topic
+ //GetAdapterTopic(args ...string) kafka.Topic
+ // getAdapterTopic(args ...string) kafka.Topic
+ RegisterAdapter(ctx context.Context, adapter *voltha.Adapter, deviceTypes *voltha.DeviceTypes) error
+ DeviceUpdate(ctx context.Context, device *voltha.Device) error
+ PortCreated(ctx context.Context, deviceID string, port *voltha.Port) error
+ PortsStateUpdate(ctx context.Context, deviceID string, operStatus voltha.OperStatus_Types) error
+ DeleteAllPorts(ctx context.Context, deviceID string) error
+ DeviceStateUpdate(ctx context.Context, deviceID string,
+ connStatus voltha.ConnectStatus_Types, operStatus voltha.OperStatus_Types) error
+
+ DevicePMConfigUpdate(ctx context.Context, pmConfigs *voltha.PmConfigs) error
+ ChildDeviceDetected(ctx context.Context, parentDeviceID string, parentPortNo int,
+ childDeviceType string, channelID int, vendorID string, serialNumber string, onuID int64) (*voltha.Device, error)
+
+ ChildDevicesLost(ctx context.Context, parentDeviceID string) error
+ ChildDevicesDetected(ctx context.Context, parentDeviceID string) error
+ GetDevice(ctx context.Context, parentDeviceID string, deviceID string) (*voltha.Device, error)
+ GetChildDevice(ctx context.Context, parentDeviceID string, kwargs map[string]interface{}) (*voltha.Device, error)
+ GetChildDevices(ctx context.Context, parentDeviceID string) (*voltha.Devices, error)
+ SendPacketIn(ctx context.Context, deviceID string, port uint32, pktPayload []byte) error
+ DeviceReasonUpdate(ctx context.Context, deviceID string, deviceReason string) error
+ PortStateUpdate(ctx context.Context, deviceID string, pType voltha.Port_PortType, portNo uint32,
+ operStatus voltha.OperStatus_Types) error
+}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif/events_proxy_if.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif/events_proxy_if.go
new file mode 100644
index 0000000..c144935
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif/events_proxy_if.go
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * 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.
+ */
+
+package adapterif
+
+import (
+ "github.com/opencord/voltha-protos/v3/go/voltha"
+)
+
+// EventProxy interface for eventproxy
+type EventProxy interface {
+ SendDeviceEvent(deviceEvent *voltha.DeviceEvent, category EventCategory,
+ subCategory EventSubCategory, raisedTs int64) error
+ SendKpiEvent(id string, deviceEvent *voltha.KpiEvent2, category EventCategory,
+ subCategory EventSubCategory, raisedTs int64) error
+}
+
+const (
+ EventTypeVersion = "0.1"
+)
+
+type (
+ EventType = voltha.EventType_Types
+ EventCategory = voltha.EventCategory_Types
+ EventSubCategory = voltha.EventSubCategory_Types
+)
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/adapter_proxy.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/adapter_proxy.go
new file mode 100644
index 0000000..02fa3de
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/adapter_proxy.go
@@ -0,0 +1,97 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * 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.
+ */
+package common
+
+import (
+ "context"
+ "time"
+
+ "github.com/golang/protobuf/proto"
+ "github.com/golang/protobuf/ptypes"
+ "github.com/golang/protobuf/ptypes/any"
+ "github.com/google/uuid"
+ "github.com/opencord/voltha-lib-go/v3/pkg/kafka"
+ "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ ic "github.com/opencord/voltha-protos/v3/go/inter_container"
+)
+
+type AdapterProxy struct {
+ kafkaICProxy kafka.InterContainerProxy
+ adapterTopic string
+ coreTopic string
+}
+
+func NewAdapterProxy(kafkaProxy kafka.InterContainerProxy, adapterTopic string, coreTopic string) *AdapterProxy {
+ var proxy AdapterProxy
+ proxy.kafkaICProxy = kafkaProxy
+ proxy.adapterTopic = adapterTopic
+ proxy.coreTopic = coreTopic
+ logger.Debugw("TOPICS", log.Fields{"core": proxy.coreTopic, "adapter": proxy.adapterTopic})
+ return &proxy
+}
+
+func (ap *AdapterProxy) SendInterAdapterMessage(ctx context.Context,
+ msg proto.Message,
+ msgType ic.InterAdapterMessageType_Types,
+ fromAdapter string,
+ toAdapter string,
+ toDeviceId string,
+ proxyDeviceId string,
+ messageId string) error {
+ logger.Debugw("sending-inter-adapter-message", log.Fields{"type": msgType, "from": fromAdapter,
+ "to": toAdapter, "toDevice": toDeviceId, "proxyDevice": proxyDeviceId})
+
+ //Marshal the message
+ var marshalledMsg *any.Any
+ var err error
+ if marshalledMsg, err = ptypes.MarshalAny(msg); err != nil {
+ logger.Warnw("cannot-marshal-msg", log.Fields{"error": err})
+ return err
+ }
+
+ //Build the inter adapter message
+ header := &ic.InterAdapterHeader{
+ Type: msgType,
+ FromTopic: fromAdapter,
+ ToTopic: toAdapter,
+ ToDeviceId: toDeviceId,
+ ProxyDeviceId: proxyDeviceId,
+ }
+ if messageId != "" {
+ header.Id = messageId
+ } else {
+ header.Id = uuid.New().String()
+ }
+ header.Timestamp = time.Now().Unix()
+ iaMsg := &ic.InterAdapterMessage{
+ Header: header,
+ Body: marshalledMsg,
+ }
+ args := make([]*kafka.KVArg, 1)
+ args[0] = &kafka.KVArg{
+ Key: "msg",
+ Value: iaMsg,
+ }
+
+ // Set up the required rpc arguments
+ topic := kafka.Topic{Name: toAdapter}
+ replyToTopic := kafka.Topic{Name: fromAdapter}
+ rpc := "process_inter_adapter_message"
+
+ success, result := ap.kafkaICProxy.InvokeRPC(ctx, rpc, &topic, &replyToTopic, true, proxyDeviceId, args...)
+ logger.Debugw("inter-adapter-msg-response", log.Fields{"replyTopic": replyToTopic, "success": success})
+ return unPackResponse(rpc, "", success, result)
+}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/common.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/common.go
new file mode 100644
index 0000000..acf818c
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/common.go
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2020-present Open Networking Foundation
+ *
+ * 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.
+ */
+package common
+
+import (
+ "github.com/opencord/voltha-lib-go/v3/pkg/log"
+)
+
+const (
+ logLevel = log.ErrorLevel
+)
+
+var logger log.Logger
+
+func init() {
+ // Setup this package so that it's log level can be modified at run time
+ var err error
+ logger, err = log.AddPackage(log.JSON, logLevel, log.Fields{"pkg": "common"})
+ if err != nil {
+ panic(err)
+ }
+}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/core_proxy.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/core_proxy.go
new file mode 100644
index 0000000..7cb933d
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/core_proxy.go
@@ -0,0 +1,598 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * 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.
+ */
+package common
+
+import (
+ "context"
+ "sync"
+
+ "github.com/golang/protobuf/ptypes"
+ a "github.com/golang/protobuf/ptypes/any"
+ "github.com/opencord/voltha-lib-go/v3/pkg/kafka"
+ "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ ic "github.com/opencord/voltha-protos/v3/go/inter_container"
+ "github.com/opencord/voltha-protos/v3/go/voltha"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/status"
+)
+
+type CoreProxy struct {
+ kafkaICProxy kafka.InterContainerProxy
+ adapterTopic string
+ coreTopic string
+ deviceIdCoreMap map[string]string
+ lockDeviceIdCoreMap sync.RWMutex
+}
+
+func NewCoreProxy(kafkaProxy kafka.InterContainerProxy, adapterTopic string, coreTopic string) *CoreProxy {
+ var proxy CoreProxy
+ proxy.kafkaICProxy = kafkaProxy
+ proxy.adapterTopic = adapterTopic
+ proxy.coreTopic = coreTopic
+ proxy.deviceIdCoreMap = make(map[string]string)
+ proxy.lockDeviceIdCoreMap = sync.RWMutex{}
+ logger.Debugw("TOPICS", log.Fields{"core": proxy.coreTopic, "adapter": proxy.adapterTopic})
+
+ return &proxy
+}
+
+func unPackResponse(rpc string, deviceId string, success bool, response *a.Any) error {
+ if success {
+ return nil
+ } else {
+ unpackResult := &ic.Error{}
+ var err error
+ if err = ptypes.UnmarshalAny(response, unpackResult); err != nil {
+ logger.Warnw("cannot-unmarshal-response", log.Fields{"error": err})
+ }
+ logger.Debugw("response", log.Fields{"rpc": rpc, "deviceId": deviceId, "success": success, "error": err})
+ // TODO: Need to get the real error code
+ return status.Errorf(codes.Canceled, "%s", unpackResult.Reason)
+ }
+}
+
+// UpdateCoreReference adds or update a core reference (really the topic name) for a given device Id
+func (ap *CoreProxy) UpdateCoreReference(deviceId string, coreReference string) {
+ ap.lockDeviceIdCoreMap.Lock()
+ defer ap.lockDeviceIdCoreMap.Unlock()
+ ap.deviceIdCoreMap[deviceId] = coreReference
+}
+
+// DeleteCoreReference removes a core reference (really the topic name) for a given device Id
+func (ap *CoreProxy) DeleteCoreReference(deviceId string) {
+ ap.lockDeviceIdCoreMap.Lock()
+ defer ap.lockDeviceIdCoreMap.Unlock()
+ delete(ap.deviceIdCoreMap, deviceId)
+}
+
+func (ap *CoreProxy) getCoreTopic(deviceId string) kafka.Topic {
+ ap.lockDeviceIdCoreMap.Lock()
+ defer ap.lockDeviceIdCoreMap.Unlock()
+
+ if t, exist := ap.deviceIdCoreMap[deviceId]; exist {
+ return kafka.Topic{Name: t}
+ }
+
+ return kafka.Topic{Name: ap.coreTopic}
+}
+
+func (ap *CoreProxy) getAdapterTopic(args ...string) kafka.Topic {
+ return kafka.Topic{Name: ap.adapterTopic}
+}
+
+func (ap *CoreProxy) RegisterAdapter(ctx context.Context, adapter *voltha.Adapter, deviceTypes *voltha.DeviceTypes) error {
+ logger.Debugw("registering-adapter", log.Fields{"coreTopic": ap.coreTopic, "adapterTopic": ap.adapterTopic})
+ rpc := "Register"
+ topic := kafka.Topic{Name: ap.coreTopic}
+ replyToTopic := ap.getAdapterTopic()
+ args := make([]*kafka.KVArg, 2)
+ args[0] = &kafka.KVArg{
+ Key: "adapter",
+ Value: adapter,
+ }
+ args[1] = &kafka.KVArg{
+ Key: "deviceTypes",
+ Value: deviceTypes,
+ }
+
+ success, result := ap.kafkaICProxy.InvokeRPC(ctx, rpc, &topic, &replyToTopic, true, "", args...)
+ logger.Debugw("Register-Adapter-response", log.Fields{"replyTopic": replyToTopic, "success": success})
+ return unPackResponse(rpc, "", success, result)
+}
+
+func (ap *CoreProxy) DeviceUpdate(ctx context.Context, device *voltha.Device) error {
+ logger.Debugw("DeviceUpdate", log.Fields{"deviceId": device.Id})
+ rpc := "DeviceUpdate"
+ toTopic := ap.getCoreTopic(device.Id)
+ args := make([]*kafka.KVArg, 1)
+ args[0] = &kafka.KVArg{
+ Key: "device",
+ Value: device,
+ }
+ // Use a device specific topic as we are the only adaptercore handling requests for this device
+ replyToTopic := ap.getAdapterTopic()
+ success, result := ap.kafkaICProxy.InvokeRPC(nil, rpc, &toTopic, &replyToTopic, true, device.Id, args...)
+ logger.Debugw("DeviceUpdate-response", log.Fields{"deviceId": device.Id, "success": success})
+ return unPackResponse(rpc, device.Id, success, result)
+}
+
+func (ap *CoreProxy) PortCreated(ctx context.Context, deviceId string, port *voltha.Port) error {
+ logger.Debugw("PortCreated", log.Fields{"portNo": port.PortNo})
+ rpc := "PortCreated"
+ // Use a device specific topic to send the request. The adapter handling the device creates a device
+ // specific topic
+ toTopic := ap.getCoreTopic(deviceId)
+ args := make([]*kafka.KVArg, 2)
+ id := &voltha.ID{Id: deviceId}
+ args[0] = &kafka.KVArg{
+ Key: "device_id",
+ Value: id,
+ }
+ args[1] = &kafka.KVArg{
+ Key: "port",
+ Value: port,
+ }
+
+ // Use a device specific topic as we are the only adaptercore handling requests for this device
+ replyToTopic := ap.getAdapterTopic()
+ success, result := ap.kafkaICProxy.InvokeRPC(nil, rpc, &toTopic, &replyToTopic, true, deviceId, args...)
+ logger.Debugw("PortCreated-response", log.Fields{"deviceId": deviceId, "success": success})
+ return unPackResponse(rpc, deviceId, success, result)
+}
+
+func (ap *CoreProxy) PortsStateUpdate(ctx context.Context, deviceId string, operStatus voltha.OperStatus_Types) error {
+ log.Debugw("PortsStateUpdate", log.Fields{"deviceId": deviceId})
+ rpc := "PortsStateUpdate"
+ // Use a device specific topic to send the request. The adapter handling the device creates a device
+ // specific topic
+ toTopic := ap.getCoreTopic(deviceId)
+ args := make([]*kafka.KVArg, 2)
+ id := &voltha.ID{Id: deviceId}
+ oStatus := &ic.IntType{Val: int64(operStatus)}
+
+ args[0] = &kafka.KVArg{
+ Key: "device_id",
+ Value: id,
+ }
+ args[1] = &kafka.KVArg{
+ Key: "oper_status",
+ Value: oStatus,
+ }
+
+ // Use a device specific topic as we are the only adaptercore handling requests for this device
+ replyToTopic := ap.getAdapterTopic()
+ success, result := ap.kafkaICProxy.InvokeRPC(nil, rpc, &toTopic, &replyToTopic, true, deviceId, args...)
+ logger.Debugw("PortsStateUpdate-response", log.Fields{"deviceId": deviceId, "success": success})
+ return unPackResponse(rpc, deviceId, success, result)
+}
+
+func (ap *CoreProxy) DeleteAllPorts(ctx context.Context, deviceId string) error {
+ logger.Debugw("DeleteAllPorts", log.Fields{"deviceId": deviceId})
+ rpc := "DeleteAllPorts"
+ // Use a device specific topic to send the request. The adapter handling the device creates a device
+ // specific topic
+ toTopic := ap.getCoreTopic(deviceId)
+ args := make([]*kafka.KVArg, 2)
+ id := &voltha.ID{Id: deviceId}
+
+ args[0] = &kafka.KVArg{
+ Key: "device_id",
+ Value: id,
+ }
+
+ // Use a device specific topic as we are the only adaptercore handling requests for this device
+ replyToTopic := ap.getAdapterTopic()
+ success, result := ap.kafkaICProxy.InvokeRPC(nil, rpc, &toTopic, &replyToTopic, true, deviceId, args...)
+ logger.Debugw("DeleteAllPorts-response", log.Fields{"deviceId": deviceId, "success": success})
+ return unPackResponse(rpc, deviceId, success, result)
+}
+
+func (ap *CoreProxy) DeviceStateUpdate(ctx context.Context, deviceId string,
+ connStatus voltha.ConnectStatus_Types, operStatus voltha.OperStatus_Types) error {
+ log.Debugw("DeviceStateUpdate", log.Fields{"deviceId": deviceId})
+ rpc := "DeviceStateUpdate"
+ // Use a device specific topic to send the request. The adapter handling the device creates a device
+ // specific topic
+ toTopic := ap.getCoreTopic(deviceId)
+ args := make([]*kafka.KVArg, 3)
+ id := &voltha.ID{Id: deviceId}
+ oStatus := &ic.IntType{Val: int64(operStatus)}
+ cStatus := &ic.IntType{Val: int64(connStatus)}
+
+ args[0] = &kafka.KVArg{
+ Key: "device_id",
+ Value: id,
+ }
+ args[1] = &kafka.KVArg{
+ Key: "oper_status",
+ Value: oStatus,
+ }
+ args[2] = &kafka.KVArg{
+ Key: "connect_status",
+ Value: cStatus,
+ }
+ // Use a device specific topic as we are the only adaptercore handling requests for this device
+ replyToTopic := ap.getAdapterTopic()
+ success, result := ap.kafkaICProxy.InvokeRPC(nil, rpc, &toTopic, &replyToTopic, true, deviceId, args...)
+ logger.Debugw("DeviceStateUpdate-response", log.Fields{"deviceId": deviceId, "success": success})
+ return unPackResponse(rpc, deviceId, success, result)
+}
+
+func (ap *CoreProxy) ChildDeviceDetected(ctx context.Context, parentDeviceId string, parentPortNo int,
+ childDeviceType string, channelId int, vendorId string, serialNumber string, onuId int64) (*voltha.Device, error) {
+ logger.Debugw("ChildDeviceDetected", log.Fields{"pDeviceId": parentDeviceId, "channelId": channelId})
+ rpc := "ChildDeviceDetected"
+ // Use a device specific topic to send the request. The adapter handling the device creates a device
+ // specific topic
+ toTopic := ap.getCoreTopic(parentDeviceId)
+ replyToTopic := ap.getAdapterTopic()
+
+ args := make([]*kafka.KVArg, 7)
+ id := &voltha.ID{Id: parentDeviceId}
+ args[0] = &kafka.KVArg{
+ Key: "parent_device_id",
+ Value: id,
+ }
+ ppn := &ic.IntType{Val: int64(parentPortNo)}
+ args[1] = &kafka.KVArg{
+ Key: "parent_port_no",
+ Value: ppn,
+ }
+ cdt := &ic.StrType{Val: childDeviceType}
+ args[2] = &kafka.KVArg{
+ Key: "child_device_type",
+ Value: cdt,
+ }
+ channel := &ic.IntType{Val: int64(channelId)}
+ args[3] = &kafka.KVArg{
+ Key: "channel_id",
+ Value: channel,
+ }
+ vId := &ic.StrType{Val: vendorId}
+ args[4] = &kafka.KVArg{
+ Key: "vendor_id",
+ Value: vId,
+ }
+ sNo := &ic.StrType{Val: serialNumber}
+ args[5] = &kafka.KVArg{
+ Key: "serial_number",
+ Value: sNo,
+ }
+ oId := &ic.IntType{Val: int64(onuId)}
+ args[6] = &kafka.KVArg{
+ Key: "onu_id",
+ Value: oId,
+ }
+
+ success, result := ap.kafkaICProxy.InvokeRPC(nil, rpc, &toTopic, &replyToTopic, true, parentDeviceId, args...)
+ logger.Debugw("ChildDeviceDetected-response", log.Fields{"pDeviceId": parentDeviceId, "success": success})
+
+ if success {
+ volthaDevice := &voltha.Device{}
+ if err := ptypes.UnmarshalAny(result, volthaDevice); err != nil {
+ logger.Warnw("cannot-unmarshal-response", log.Fields{"error": err})
+ return nil, status.Error(codes.InvalidArgument, err.Error())
+ }
+ return volthaDevice, nil
+ } else {
+ unpackResult := &ic.Error{}
+ var err error
+ if err = ptypes.UnmarshalAny(result, unpackResult); err != nil {
+ logger.Warnw("cannot-unmarshal-response", log.Fields{"error": err})
+ }
+ logger.Debugw("ChildDeviceDetected-return", log.Fields{"deviceid": parentDeviceId, "success": success, "error": err})
+
+ return nil, status.Error(ICProxyErrorCodeToGrpcErrorCode(unpackResult.Code), unpackResult.Reason)
+ }
+
+}
+
+func (ap *CoreProxy) ChildDevicesLost(ctx context.Context, parentDeviceId string) error {
+ logger.Debugw("ChildDevicesLost", log.Fields{"pDeviceId": parentDeviceId})
+ rpc := "ChildDevicesLost"
+ // Use a device specific topic to send the request. The adapter handling the device creates a device
+ // specific topic
+ toTopic := ap.getCoreTopic(parentDeviceId)
+ replyToTopic := ap.getAdapterTopic()
+
+ args := make([]*kafka.KVArg, 1)
+ id := &voltha.ID{Id: parentDeviceId}
+ args[0] = &kafka.KVArg{
+ Key: "parent_device_id",
+ Value: id,
+ }
+
+ success, result := ap.kafkaICProxy.InvokeRPC(nil, rpc, &toTopic, &replyToTopic, true, parentDeviceId, args...)
+ logger.Debugw("ChildDevicesLost-response", log.Fields{"pDeviceId": parentDeviceId, "success": success})
+ return unPackResponse(rpc, parentDeviceId, success, result)
+}
+
+func (ap *CoreProxy) ChildDevicesDetected(ctx context.Context, parentDeviceId string) error {
+ logger.Debugw("ChildDevicesDetected", log.Fields{"pDeviceId": parentDeviceId})
+ rpc := "ChildDevicesDetected"
+ // Use a device specific topic to send the request. The adapter handling the device creates a device
+ // specific topic
+ toTopic := ap.getCoreTopic(parentDeviceId)
+ replyToTopic := ap.getAdapterTopic()
+
+ args := make([]*kafka.KVArg, 1)
+ id := &voltha.ID{Id: parentDeviceId}
+ args[0] = &kafka.KVArg{
+ Key: "parent_device_id",
+ Value: id,
+ }
+
+ success, result := ap.kafkaICProxy.InvokeRPC(nil, rpc, &toTopic, &replyToTopic, true, parentDeviceId, args...)
+ logger.Debugw("ChildDevicesDetected-response", log.Fields{"pDeviceId": parentDeviceId, "success": success})
+ return unPackResponse(rpc, parentDeviceId, success, result)
+}
+
+func (ap *CoreProxy) GetDevice(ctx context.Context, parentDeviceId string, deviceId string) (*voltha.Device, error) {
+ logger.Debugw("GetDevice", log.Fields{"deviceId": deviceId})
+ rpc := "GetDevice"
+
+ toTopic := ap.getCoreTopic(parentDeviceId)
+ replyToTopic := ap.getAdapterTopic()
+
+ args := make([]*kafka.KVArg, 1)
+ id := &voltha.ID{Id: deviceId}
+ args[0] = &kafka.KVArg{
+ Key: "device_id",
+ Value: id,
+ }
+
+ success, result := ap.kafkaICProxy.InvokeRPC(nil, rpc, &toTopic, &replyToTopic, true, parentDeviceId, args...)
+ logger.Debugw("GetDevice-response", log.Fields{"pDeviceId": parentDeviceId, "success": success})
+
+ if success {
+ volthaDevice := &voltha.Device{}
+ if err := ptypes.UnmarshalAny(result, volthaDevice); err != nil {
+ logger.Warnw("cannot-unmarshal-response", log.Fields{"error": err})
+ return nil, status.Error(codes.InvalidArgument, err.Error())
+ }
+ return volthaDevice, nil
+ } else {
+ unpackResult := &ic.Error{}
+ var err error
+ if err = ptypes.UnmarshalAny(result, unpackResult); err != nil {
+ logger.Warnw("cannot-unmarshal-response", log.Fields{"error": err})
+ }
+ logger.Debugw("GetDevice-return", log.Fields{"deviceid": parentDeviceId, "success": success, "error": err})
+ // TODO: Need to get the real error code
+ return nil, status.Error(ICProxyErrorCodeToGrpcErrorCode(unpackResult.Code), unpackResult.Reason)
+ }
+}
+
+func (ap *CoreProxy) GetChildDevice(ctx context.Context, parentDeviceId string, kwargs map[string]interface{}) (*voltha.Device, error) {
+ logger.Debugw("GetChildDevice", log.Fields{"parentDeviceId": parentDeviceId, "kwargs": kwargs})
+ rpc := "GetChildDevice"
+
+ toTopic := ap.getCoreTopic(parentDeviceId)
+ replyToTopic := ap.getAdapterTopic()
+
+ args := make([]*kafka.KVArg, 4)
+ id := &voltha.ID{Id: parentDeviceId}
+ args[0] = &kafka.KVArg{
+ Key: "device_id",
+ Value: id,
+ }
+
+ var cnt uint8 = 0
+ for k, v := range kwargs {
+ cnt += 1
+ if k == "serial_number" {
+ val := &ic.StrType{Val: v.(string)}
+ args[cnt] = &kafka.KVArg{
+ Key: k,
+ Value: val,
+ }
+ } else if k == "onu_id" {
+ val := &ic.IntType{Val: int64(v.(uint32))}
+ args[cnt] = &kafka.KVArg{
+ Key: k,
+ Value: val,
+ }
+ } else if k == "parent_port_no" {
+ val := &ic.IntType{Val: int64(v.(uint32))}
+ args[cnt] = &kafka.KVArg{
+ Key: k,
+ Value: val,
+ }
+ }
+ }
+
+ success, result := ap.kafkaICProxy.InvokeRPC(nil, rpc, &toTopic, &replyToTopic, true, parentDeviceId, args...)
+ logger.Debugw("GetChildDevice-response", log.Fields{"pDeviceId": parentDeviceId, "success": success})
+
+ if success {
+ volthaDevice := &voltha.Device{}
+ if err := ptypes.UnmarshalAny(result, volthaDevice); err != nil {
+ logger.Warnw("cannot-unmarshal-response", log.Fields{"error": err})
+ return nil, status.Error(codes.InvalidArgument, err.Error())
+ }
+ return volthaDevice, nil
+ } else {
+ unpackResult := &ic.Error{}
+ var err error
+ if err = ptypes.UnmarshalAny(result, unpackResult); err != nil {
+ logger.Warnw("cannot-unmarshal-response", log.Fields{"error": err})
+ }
+ logger.Debugw("GetChildDevice-return", log.Fields{"deviceid": parentDeviceId, "success": success, "error": err})
+
+ return nil, status.Error(ICProxyErrorCodeToGrpcErrorCode(unpackResult.Code), unpackResult.Reason)
+ }
+}
+
+func (ap *CoreProxy) GetChildDevices(ctx context.Context, parentDeviceId string) (*voltha.Devices, error) {
+ logger.Debugw("GetChildDevices", log.Fields{"parentDeviceId": parentDeviceId})
+ rpc := "GetChildDevices"
+
+ toTopic := ap.getCoreTopic(parentDeviceId)
+ replyToTopic := ap.getAdapterTopic()
+
+ args := make([]*kafka.KVArg, 1)
+ id := &voltha.ID{Id: parentDeviceId}
+ args[0] = &kafka.KVArg{
+ Key: "device_id",
+ Value: id,
+ }
+
+ success, result := ap.kafkaICProxy.InvokeRPC(nil, rpc, &toTopic, &replyToTopic, true, parentDeviceId, args...)
+ logger.Debugw("GetChildDevices-response", log.Fields{"pDeviceId": parentDeviceId, "success": success})
+
+ if success {
+ volthaDevices := &voltha.Devices{}
+ if err := ptypes.UnmarshalAny(result, volthaDevices); err != nil {
+ logger.Warnw("cannot-unmarshal-response", log.Fields{"error": err})
+ return nil, status.Error(codes.InvalidArgument, err.Error())
+ }
+ return volthaDevices, nil
+ } else {
+ unpackResult := &ic.Error{}
+ var err error
+ if err = ptypes.UnmarshalAny(result, unpackResult); err != nil {
+ logger.Warnw("cannot-unmarshal-response", log.Fields{"error": err})
+ }
+ logger.Debugw("GetChildDevices-return", log.Fields{"deviceid": parentDeviceId, "success": success, "error": err})
+
+ return nil, status.Error(ICProxyErrorCodeToGrpcErrorCode(unpackResult.Code), unpackResult.Reason)
+ }
+}
+
+func (ap *CoreProxy) SendPacketIn(ctx context.Context, deviceId string, port uint32, pktPayload []byte) error {
+ logger.Debugw("SendPacketIn", log.Fields{"deviceId": deviceId, "port": port, "pktPayload": pktPayload})
+ rpc := "PacketIn"
+ // Use a device specific topic to send the request. The adapter handling the device creates a device
+ // specific topic
+ toTopic := ap.getCoreTopic(deviceId)
+ replyToTopic := ap.getAdapterTopic()
+
+ args := make([]*kafka.KVArg, 3)
+ id := &voltha.ID{Id: deviceId}
+ args[0] = &kafka.KVArg{
+ Key: "device_id",
+ Value: id,
+ }
+ portNo := &ic.IntType{Val: int64(port)}
+ args[1] = &kafka.KVArg{
+ Key: "port",
+ Value: portNo,
+ }
+ pkt := &ic.Packet{Payload: pktPayload}
+ args[2] = &kafka.KVArg{
+ Key: "packet",
+ Value: pkt,
+ }
+ success, result := ap.kafkaICProxy.InvokeRPC(nil, rpc, &toTopic, &replyToTopic, true, deviceId, args...)
+ logger.Debugw("SendPacketIn-response", log.Fields{"pDeviceId": deviceId, "success": success})
+ return unPackResponse(rpc, deviceId, success, result)
+}
+
+func (ap *CoreProxy) DeviceReasonUpdate(ctx context.Context, deviceId string, deviceReason string) error {
+ logger.Debugw("DeviceReasonUpdate", log.Fields{"deviceId": deviceId, "deviceReason": deviceReason})
+ rpc := "DeviceReasonUpdate"
+ // Use a device specific topic to send the request. The adapter handling the device creates a device
+ // specific topic
+ toTopic := ap.getCoreTopic(deviceId)
+ replyToTopic := ap.getAdapterTopic()
+
+ args := make([]*kafka.KVArg, 2)
+ id := &voltha.ID{Id: deviceId}
+ args[0] = &kafka.KVArg{
+ Key: "device_id",
+ Value: id,
+ }
+ reason := &ic.StrType{Val: deviceReason}
+ args[1] = &kafka.KVArg{
+ Key: "device_reason",
+ Value: reason,
+ }
+ success, result := ap.kafkaICProxy.InvokeRPC(nil, rpc, &toTopic, &replyToTopic, true, deviceId, args...)
+ logger.Debugw("DeviceReason-response", log.Fields{"pDeviceId": deviceId, "success": success})
+ return unPackResponse(rpc, deviceId, success, result)
+}
+
+func (ap *CoreProxy) DevicePMConfigUpdate(ctx context.Context, pmConfigs *voltha.PmConfigs) error {
+ logger.Debugw("DevicePMConfigUpdate", log.Fields{"pmConfigs": pmConfigs})
+ rpc := "DevicePMConfigUpdate"
+ // Use a device specific topic to send the request. The adapter handling the device creates a device
+ // specific topic
+ toTopic := ap.getCoreTopic(pmConfigs.Id)
+ replyToTopic := ap.getAdapterTopic()
+
+ args := make([]*kafka.KVArg, 1)
+ args[0] = &kafka.KVArg{
+ Key: "device_pm_config",
+ Value: pmConfigs,
+ }
+ success, result := ap.kafkaICProxy.InvokeRPC(nil, rpc, &toTopic, &replyToTopic, true, pmConfigs.Id, args...)
+ logger.Debugw("DevicePMConfigUpdate-response", log.Fields{"pDeviceId": pmConfigs.Id, "success": success})
+ return unPackResponse(rpc, pmConfigs.Id, success, result)
+}
+
+func (ap *CoreProxy) ReconcileChildDevices(ctx context.Context, parentDeviceId string) error {
+ logger.Debugw("ReconcileChildDevices", log.Fields{"parentDeviceId": parentDeviceId})
+ rpc := "ReconcileChildDevices"
+ // Use a device specific topic to send the request. The adapter handling the device creates a device
+ // specific topic
+ toTopic := ap.getCoreTopic(parentDeviceId)
+ replyToTopic := ap.getAdapterTopic()
+
+ args := []*kafka.KVArg{
+ {Key: "parent_device_id", Value: &voltha.ID{Id: parentDeviceId}},
+ }
+
+ success, result := ap.kafkaICProxy.InvokeRPC(nil, rpc, &toTopic, &replyToTopic, true, parentDeviceId, args...)
+ logger.Debugw("ReconcileChildDevices-response", log.Fields{"pDeviceId": parentDeviceId, "success": success})
+ return unPackResponse(rpc, parentDeviceId, success, result)
+}
+
+func (ap *CoreProxy) PortStateUpdate(ctx context.Context, deviceId string, pType voltha.Port_PortType, portNum uint32,
+ operStatus voltha.OperStatus_Types) error {
+ logger.Debugw("PortStateUpdate", log.Fields{"deviceId": deviceId, "portType": pType, "portNo": portNum, "operation_status": operStatus})
+ rpc := "PortStateUpdate"
+ // Use a device specific topic to send the request. The adapter handling the device creates a device
+ // specific topic
+ toTopic := ap.getCoreTopic(deviceId)
+ args := make([]*kafka.KVArg, 4)
+ deviceID := &voltha.ID{Id: deviceId}
+ portNo := &ic.IntType{Val: int64(portNum)}
+ portType := &ic.IntType{Val: int64(pType)}
+ oStatus := &ic.IntType{Val: int64(operStatus)}
+
+ args[0] = &kafka.KVArg{
+ Key: "device_id",
+ Value: deviceID,
+ }
+ args[1] = &kafka.KVArg{
+ Key: "oper_status",
+ Value: oStatus,
+ }
+ args[2] = &kafka.KVArg{
+ Key: "port_type",
+ Value: portType,
+ }
+ args[3] = &kafka.KVArg{
+ Key: "port_no",
+ Value: portNo,
+ }
+
+ // Use a device specific topic as we are the only adaptercore handling requests for this device
+ replyToTopic := ap.getAdapterTopic()
+ success, result := ap.kafkaICProxy.InvokeRPC(nil, rpc, &toTopic, &replyToTopic, true, deviceId, args...)
+ logger.Debugw("PortStateUpdate-response", log.Fields{"deviceId": deviceId, "success": success})
+ return unPackResponse(rpc, deviceId, success, result)
+}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/events_proxy.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/events_proxy.go
new file mode 100644
index 0000000..034de8e
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/events_proxy.go
@@ -0,0 +1,137 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * 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.
+ */
+
+package common
+
+import (
+ "errors"
+ "fmt"
+ "strconv"
+ "strings"
+ "time"
+
+ "github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif"
+ "github.com/opencord/voltha-lib-go/v3/pkg/kafka"
+ "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-protos/v3/go/voltha"
+)
+
+type EventProxy struct {
+ kafkaClient kafka.Client
+ eventTopic kafka.Topic
+}
+
+func NewEventProxy(opts ...EventProxyOption) *EventProxy {
+ var proxy EventProxy
+ for _, option := range opts {
+ option(&proxy)
+ }
+ return &proxy
+}
+
+type EventProxyOption func(*EventProxy)
+
+func MsgClient(client kafka.Client) EventProxyOption {
+ return func(args *EventProxy) {
+ args.kafkaClient = client
+ }
+}
+
+func MsgTopic(topic kafka.Topic) EventProxyOption {
+ return func(args *EventProxy) {
+ args.eventTopic = topic
+ }
+}
+
+func (ep *EventProxy) formatId(eventName string) string {
+ return fmt.Sprintf("Voltha.openolt.%s.%s", eventName, strconv.FormatInt(time.Now().UnixNano(), 10))
+}
+
+func (ep *EventProxy) getEventHeader(eventName string, category adapterif.EventCategory, subCategory adapterif.EventSubCategory, eventType adapterif.EventType, raisedTs int64) *voltha.EventHeader {
+ var header voltha.EventHeader
+ if strings.Contains(eventName, "_") {
+ eventName = strings.Join(strings.Split(eventName, "_")[:len(strings.Split(eventName, "_"))-2], "_")
+ } else {
+ eventName = "UNKNOWN_EVENT"
+ }
+ /* Populating event header */
+ header.Id = ep.formatId(eventName)
+ header.Category = category
+ header.SubCategory = subCategory
+ header.Type = eventType
+ header.TypeVersion = adapterif.EventTypeVersion
+ header.RaisedTs = float32(raisedTs)
+ header.ReportedTs = float32(time.Now().UnixNano())
+ return &header
+}
+
+/* Send out device events*/
+func (ep *EventProxy) SendDeviceEvent(deviceEvent *voltha.DeviceEvent, category adapterif.EventCategory, subCategory adapterif.EventSubCategory, raisedTs int64) error {
+ if deviceEvent == nil {
+ logger.Error("Recieved empty device event")
+ return errors.New("Device event nil")
+ }
+ var event voltha.Event
+ var de voltha.Event_DeviceEvent
+ de.DeviceEvent = deviceEvent
+ event.Header = ep.getEventHeader(deviceEvent.DeviceEventName, category, subCategory, voltha.EventType_DEVICE_EVENT, raisedTs)
+ event.EventType = &de
+ if err := ep.sendEvent(&event); err != nil {
+ logger.Errorw("Failed to send device event to KAFKA bus", log.Fields{"device-event": deviceEvent})
+ return err
+ }
+ logger.Infow("Successfully sent device event KAFKA", log.Fields{"Id": event.Header.Id, "Category": event.Header.Category,
+ "SubCategory": event.Header.SubCategory, "Type": event.Header.Type, "TypeVersion": event.Header.TypeVersion,
+ "ReportedTs": event.Header.ReportedTs, "ResourceId": deviceEvent.ResourceId, "Context": deviceEvent.Context,
+ "DeviceEventName": deviceEvent.DeviceEventName})
+
+ return nil
+
+}
+
+// SendKpiEvent is to send kpi events to voltha.event topic
+func (ep *EventProxy) SendKpiEvent(id string, kpiEvent *voltha.KpiEvent2, category adapterif.EventCategory, subCategory adapterif.EventSubCategory, raisedTs int64) error {
+ if kpiEvent == nil {
+ logger.Error("Recieved empty kpi event")
+ return errors.New("KPI event nil")
+ }
+ var event voltha.Event
+ var de voltha.Event_KpiEvent2
+ de.KpiEvent2 = kpiEvent
+ event.Header = ep.getEventHeader(id, category, subCategory, voltha.EventType_KPI_EVENT2, raisedTs)
+ event.EventType = &de
+ if err := ep.sendEvent(&event); err != nil {
+ logger.Errorw("Failed to send kpi event to KAFKA bus", log.Fields{"device-event": kpiEvent})
+ return err
+ }
+ logger.Infow("Successfully sent kpi event to KAFKA", log.Fields{"Id": event.Header.Id, "Category": event.Header.Category,
+ "SubCategory": event.Header.SubCategory, "Type": event.Header.Type, "TypeVersion": event.Header.TypeVersion,
+ "ReportedTs": event.Header.ReportedTs, "KpiEventName": "STATS_EVENT"})
+
+ return nil
+
+}
+
+/* TODO: Send out KPI events*/
+
+func (ep *EventProxy) sendEvent(event *voltha.Event) error {
+ if err := ep.kafkaClient.Send(event, &ep.eventTopic); err != nil {
+ return err
+ }
+ logger.Debugw("Sent event to kafka", log.Fields{"event": event})
+
+ return nil
+}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/performance_metrics.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/performance_metrics.go
new file mode 100644
index 0000000..7697c05
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/performance_metrics.go
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2019-present Open Networking Foundation
+
+ * 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.
+ */
+
+package common
+
+import (
+ "github.com/opencord/voltha-protos/v3/go/voltha"
+)
+
+type PmMetrics struct {
+ deviceId string
+ frequency uint32
+ grouped bool
+ frequencyOverride bool
+ metrics map[string]*voltha.PmConfig
+}
+
+type PmMetricsOption func(*PmMetrics)
+
+func Frequency(frequency uint32) PmMetricsOption {
+ return func(args *PmMetrics) {
+ args.frequency = frequency
+ }
+}
+
+func Grouped(grouped bool) PmMetricsOption {
+ return func(args *PmMetrics) {
+ args.grouped = grouped
+ }
+}
+
+func FrequencyOverride(frequencyOverride bool) PmMetricsOption {
+ return func(args *PmMetrics) {
+ args.frequencyOverride = frequencyOverride
+ }
+}
+
+func Metrics(pmNames []string) PmMetricsOption {
+ return func(args *PmMetrics) {
+ args.metrics = make(map[string]*voltha.PmConfig)
+ for _, name := range pmNames {
+ args.metrics[name] = &voltha.PmConfig{
+ Name: name,
+ Type: voltha.PmConfig_COUNTER,
+ Enabled: true,
+ }
+ }
+ }
+}
+
+func NewPmMetrics(deviceId string, opts ...PmMetricsOption) *PmMetrics {
+ pm := &PmMetrics{deviceId: deviceId}
+ for _, option := range opts {
+ option(pm)
+ }
+ return pm
+}
+
+func (pm *PmMetrics) ToPmConfigs() *voltha.PmConfigs {
+ pmConfigs := &voltha.PmConfigs{
+ Id: pm.deviceId,
+ DefaultFreq: pm.frequency,
+ Grouped: pm.grouped,
+ FreqOverride: pm.frequencyOverride,
+ }
+ for _, v := range pm.metrics {
+ pmConfigs.Metrics = append(pmConfigs.Metrics, &voltha.PmConfig{Name: v.Name, Type: v.Type, Enabled: v.Enabled})
+ }
+ return pmConfigs
+}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/request_handler.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/request_handler.go
new file mode 100644
index 0000000..78b8eb5
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/request_handler.go
@@ -0,0 +1,660 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * 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.
+ */
+package common
+
+import (
+ "errors"
+
+ "github.com/golang/protobuf/ptypes"
+ "github.com/golang/protobuf/ptypes/empty"
+ "github.com/opencord/voltha-lib-go/v3/pkg/adapters"
+ "github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif"
+ "github.com/opencord/voltha-lib-go/v3/pkg/kafka"
+ "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ ic "github.com/opencord/voltha-protos/v3/go/inter_container"
+ "github.com/opencord/voltha-protos/v3/go/openflow_13"
+ "github.com/opencord/voltha-protos/v3/go/voltha"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/status"
+)
+
+type RequestHandlerProxy struct {
+ TestMode bool
+ coreInstanceId string
+ adapter adapters.IAdapter
+ coreProxy adapterif.CoreProxy
+}
+
+func NewRequestHandlerProxy(coreInstanceId string, iadapter adapters.IAdapter, cProxy adapterif.CoreProxy) *RequestHandlerProxy {
+ var proxy RequestHandlerProxy
+ proxy.coreInstanceId = coreInstanceId
+ proxy.adapter = iadapter
+ proxy.coreProxy = cProxy
+ return &proxy
+}
+
+func (rhp *RequestHandlerProxy) Adapter_descriptor() (*empty.Empty, error) {
+ return new(empty.Empty), nil
+}
+
+func (rhp *RequestHandlerProxy) Device_types() (*voltha.DeviceTypes, error) {
+ return nil, nil
+}
+
+func (rhp *RequestHandlerProxy) Health() (*voltha.HealthStatus, error) {
+ return nil, nil
+}
+
+func (rhp *RequestHandlerProxy) Adopt_device(args []*ic.Argument) (*empty.Empty, error) {
+ if len(args) < 3 {
+ logger.Warn("invalid-number-of-args", log.Fields{"args": args})
+ err := errors.New("invalid-number-of-args")
+ return nil, err
+ }
+ device := &voltha.Device{}
+ transactionID := &ic.StrType{}
+ fromTopic := &ic.StrType{}
+ for _, arg := range args {
+ switch arg.Key {
+ case "device":
+ if err := ptypes.UnmarshalAny(arg.Value, device); err != nil {
+ logger.Warnw("cannot-unmarshal-device", log.Fields{"error": err})
+ return nil, err
+ }
+ case kafka.TransactionKey:
+ if err := ptypes.UnmarshalAny(arg.Value, transactionID); err != nil {
+ logger.Warnw("cannot-unmarshal-transaction-ID", log.Fields{"error": err})
+ return nil, err
+ }
+ case kafka.FromTopic:
+ if err := ptypes.UnmarshalAny(arg.Value, fromTopic); err != nil {
+ logger.Warnw("cannot-unmarshal-from-topic", log.Fields{"error": err})
+ return nil, err
+ }
+ }
+ }
+
+ logger.Debugw("Adopt_device", log.Fields{"deviceId": device.Id})
+
+ //Update the core reference for that device
+ rhp.coreProxy.UpdateCoreReference(device.Id, fromTopic.Val)
+
+ //Invoke the adopt device on the adapter
+ if err := rhp.adapter.Adopt_device(device); err != nil {
+ return nil, status.Errorf(codes.NotFound, "%s", err.Error())
+ }
+
+ return new(empty.Empty), nil
+}
+
+func (rhp *RequestHandlerProxy) Reconcile_device(args []*ic.Argument) (*empty.Empty, error) {
+ if len(args) < 3 {
+ logger.Warn("invalid-number-of-args", log.Fields{"args": args})
+ err := errors.New("invalid-number-of-args")
+ return nil, err
+ }
+
+ device := &voltha.Device{}
+ transactionID := &ic.StrType{}
+ fromTopic := &ic.StrType{}
+ for _, arg := range args {
+ switch arg.Key {
+ case "device":
+ if err := ptypes.UnmarshalAny(arg.Value, device); err != nil {
+ logger.Warnw("cannot-unmarshal-device", log.Fields{"error": err})
+ return nil, err
+ }
+ case kafka.TransactionKey:
+ if err := ptypes.UnmarshalAny(arg.Value, transactionID); err != nil {
+ logger.Warnw("cannot-unmarshal-transaction-ID", log.Fields{"error": err})
+ return nil, err
+ }
+ case kafka.FromTopic:
+ if err := ptypes.UnmarshalAny(arg.Value, fromTopic); err != nil {
+ logger.Warnw("cannot-unmarshal-from-topic", log.Fields{"error": err})
+ return nil, err
+ }
+ }
+ }
+ //Update the core reference for that device
+ rhp.coreProxy.UpdateCoreReference(device.Id, fromTopic.Val)
+
+ //Invoke the reconcile device API on the adapter
+ if err := rhp.adapter.Reconcile_device(device); err != nil {
+ return nil, status.Errorf(codes.NotFound, "%s", err.Error())
+ }
+ return new(empty.Empty), nil
+}
+
+func (rhp *RequestHandlerProxy) Abandon_device(args []*ic.Argument) (*empty.Empty, error) {
+ return new(empty.Empty), nil
+}
+
+func (rhp *RequestHandlerProxy) Disable_device(args []*ic.Argument) (*empty.Empty, error) {
+ if len(args) < 3 {
+ logger.Warn("invalid-number-of-args", log.Fields{"args": args})
+ err := errors.New("invalid-number-of-args")
+ return nil, err
+ }
+
+ device := &voltha.Device{}
+ transactionID := &ic.StrType{}
+ fromTopic := &ic.StrType{}
+ for _, arg := range args {
+ switch arg.Key {
+ case "device":
+ if err := ptypes.UnmarshalAny(arg.Value, device); err != nil {
+ logger.Warnw("cannot-unmarshal-device", log.Fields{"error": err})
+ return nil, err
+ }
+ case kafka.TransactionKey:
+ if err := ptypes.UnmarshalAny(arg.Value, transactionID); err != nil {
+ logger.Warnw("cannot-unmarshal-transaction-ID", log.Fields{"error": err})
+ return nil, err
+ }
+ case kafka.FromTopic:
+ if err := ptypes.UnmarshalAny(arg.Value, fromTopic); err != nil {
+ logger.Warnw("cannot-unmarshal-from-topic", log.Fields{"error": err})
+ return nil, err
+ }
+ }
+ }
+ //Update the core reference for that device
+ rhp.coreProxy.UpdateCoreReference(device.Id, fromTopic.Val)
+ //Invoke the Disable_device API on the adapter
+ if err := rhp.adapter.Disable_device(device); err != nil {
+ return nil, status.Errorf(codes.NotFound, "%s", err.Error())
+ }
+ return new(empty.Empty), nil
+}
+
+func (rhp *RequestHandlerProxy) Reenable_device(args []*ic.Argument) (*empty.Empty, error) {
+ if len(args) < 3 {
+ logger.Warn("invalid-number-of-args", log.Fields{"args": args})
+ err := errors.New("invalid-number-of-args")
+ return nil, err
+ }
+
+ device := &voltha.Device{}
+ transactionID := &ic.StrType{}
+ fromTopic := &ic.StrType{}
+ for _, arg := range args {
+ switch arg.Key {
+ case "device":
+ if err := ptypes.UnmarshalAny(arg.Value, device); err != nil {
+ logger.Warnw("cannot-unmarshal-device", log.Fields{"error": err})
+ return nil, err
+ }
+ case kafka.TransactionKey:
+ if err := ptypes.UnmarshalAny(arg.Value, transactionID); err != nil {
+ logger.Warnw("cannot-unmarshal-transaction-ID", log.Fields{"error": err})
+ return nil, err
+ }
+ case kafka.FromTopic:
+ if err := ptypes.UnmarshalAny(arg.Value, fromTopic); err != nil {
+ logger.Warnw("cannot-unmarshal-from-topic", log.Fields{"error": err})
+ return nil, err
+ }
+ }
+ }
+ //Update the core reference for that device
+ rhp.coreProxy.UpdateCoreReference(device.Id, fromTopic.Val)
+ //Invoke the Reenable_device API on the adapter
+ if err := rhp.adapter.Reenable_device(device); err != nil {
+ return nil, status.Errorf(codes.NotFound, "%s", err.Error())
+ }
+ return new(empty.Empty), nil
+}
+
+func (rhp *RequestHandlerProxy) Reboot_device(args []*ic.Argument) (*empty.Empty, error) {
+ if len(args) < 3 {
+ logger.Warn("invalid-number-of-args", log.Fields{"args": args})
+ err := errors.New("invalid-number-of-args")
+ return nil, err
+ }
+
+ device := &voltha.Device{}
+ transactionID := &ic.StrType{}
+ fromTopic := &ic.StrType{}
+ for _, arg := range args {
+ switch arg.Key {
+ case "device":
+ if err := ptypes.UnmarshalAny(arg.Value, device); err != nil {
+ logger.Warnw("cannot-unmarshal-device", log.Fields{"error": err})
+ return nil, err
+ }
+ case kafka.TransactionKey:
+ if err := ptypes.UnmarshalAny(arg.Value, transactionID); err != nil {
+ logger.Warnw("cannot-unmarshal-transaction-ID", log.Fields{"error": err})
+ return nil, err
+ }
+ case kafka.FromTopic:
+ if err := ptypes.UnmarshalAny(arg.Value, fromTopic); err != nil {
+ logger.Warnw("cannot-unmarshal-from-topic", log.Fields{"error": err})
+ return nil, err
+ }
+ }
+ }
+ //Update the core reference for that device
+ rhp.coreProxy.UpdateCoreReference(device.Id, fromTopic.Val)
+ //Invoke the Reboot_device API on the adapter
+ if err := rhp.adapter.Reboot_device(device); err != nil {
+ return nil, status.Errorf(codes.NotFound, "%s", err.Error())
+ }
+ return new(empty.Empty), nil
+
+}
+
+func (rhp *RequestHandlerProxy) Self_test_device(args []*ic.Argument) (*empty.Empty, error) {
+ return new(empty.Empty), nil
+}
+
+func (rhp *RequestHandlerProxy) Delete_device(args []*ic.Argument) (*empty.Empty, error) {
+ if len(args) < 3 {
+ logger.Warn("invalid-number-of-args", log.Fields{"args": args})
+ err := errors.New("invalid-number-of-args")
+ return nil, err
+ }
+
+ device := &voltha.Device{}
+ transactionID := &ic.StrType{}
+ fromTopic := &ic.StrType{}
+ for _, arg := range args {
+ switch arg.Key {
+ case "device":
+ if err := ptypes.UnmarshalAny(arg.Value, device); err != nil {
+ logger.Warnw("cannot-unmarshal-device", log.Fields{"error": err})
+ return nil, err
+ }
+ case kafka.TransactionKey:
+ if err := ptypes.UnmarshalAny(arg.Value, transactionID); err != nil {
+ logger.Warnw("cannot-unmarshal-transaction-ID", log.Fields{"error": err})
+ return nil, err
+ }
+ case kafka.FromTopic:
+ if err := ptypes.UnmarshalAny(arg.Value, fromTopic); err != nil {
+ logger.Warnw("cannot-unmarshal-from-topic", log.Fields{"error": err})
+ return nil, err
+ }
+ }
+ }
+ //Update the core reference for that device
+ rhp.coreProxy.UpdateCoreReference(device.Id, fromTopic.Val)
+ //Invoke the delete_device API on the adapter
+ if err := rhp.adapter.Delete_device(device); err != nil {
+ return nil, status.Errorf(codes.NotFound, "%s", err.Error())
+ }
+ return new(empty.Empty), nil
+}
+
+func (rhp *RequestHandlerProxy) Get_device_details(args []*ic.Argument) (*empty.Empty, error) {
+ return new(empty.Empty), nil
+}
+
+func (rhp *RequestHandlerProxy) Update_flows_bulk(args []*ic.Argument) (*empty.Empty, error) {
+ logger.Debug("Update_flows_bulk")
+ if len(args) < 5 {
+ logger.Warn("Update_flows_bulk-invalid-number-of-args", log.Fields{"args": args})
+ err := errors.New("invalid-number-of-args")
+ return nil, err
+ }
+ device := &voltha.Device{}
+ transactionID := &ic.StrType{}
+ flows := &voltha.Flows{}
+ flowMetadata := &voltha.FlowMetadata{}
+ groups := &voltha.FlowGroups{}
+ for _, arg := range args {
+ switch arg.Key {
+ case "device":
+ if err := ptypes.UnmarshalAny(arg.Value, device); err != nil {
+ logger.Warnw("cannot-unmarshal-device", log.Fields{"error": err})
+ return nil, err
+ }
+ case "flows":
+ if err := ptypes.UnmarshalAny(arg.Value, flows); err != nil {
+ logger.Warnw("cannot-unmarshal-flows", log.Fields{"error": err})
+ return nil, err
+ }
+ case "groups":
+ if err := ptypes.UnmarshalAny(arg.Value, groups); err != nil {
+ logger.Warnw("cannot-unmarshal-groups", log.Fields{"error": err})
+ return nil, err
+ }
+ case "flow_metadata":
+ if err := ptypes.UnmarshalAny(arg.Value, flowMetadata); err != nil {
+ logger.Warnw("cannot-unmarshal-metadata", log.Fields{"error": err})
+ return nil, err
+ }
+ case kafka.TransactionKey:
+ if err := ptypes.UnmarshalAny(arg.Value, transactionID); err != nil {
+ logger.Warnw("cannot-unmarshal-transaction-ID", log.Fields{"error": err})
+ return nil, err
+ }
+ }
+ }
+ logger.Debugw("Update_flows_bulk", log.Fields{"flows": flows, "groups": groups})
+ //Invoke the bulk flow update API of the adapter
+ if err := rhp.adapter.Update_flows_bulk(device, flows, groups, flowMetadata); err != nil {
+ return nil, status.Errorf(codes.NotFound, "%s", err.Error())
+ }
+ return new(empty.Empty), nil
+}
+
+func (rhp *RequestHandlerProxy) Update_flows_incrementally(args []*ic.Argument) (*empty.Empty, error) {
+ logger.Debug("Update_flows_incrementally")
+ if len(args) < 5 {
+ logger.Warn("Update_flows_incrementally-invalid-number-of-args", log.Fields{"args": args})
+ err := errors.New("invalid-number-of-args")
+ return nil, err
+ }
+ device := &voltha.Device{}
+ transactionID := &ic.StrType{}
+ flows := &openflow_13.FlowChanges{}
+ flowMetadata := &voltha.FlowMetadata{}
+ groups := &openflow_13.FlowGroupChanges{}
+ for _, arg := range args {
+ switch arg.Key {
+ case "device":
+ if err := ptypes.UnmarshalAny(arg.Value, device); err != nil {
+ logger.Warnw("cannot-unmarshal-device", log.Fields{"error": err})
+ return nil, err
+ }
+ case "flow_changes":
+ if err := ptypes.UnmarshalAny(arg.Value, flows); err != nil {
+ logger.Warnw("cannot-unmarshal-flows", log.Fields{"error": err})
+ return nil, err
+ }
+ case "group_changes":
+ if err := ptypes.UnmarshalAny(arg.Value, groups); err != nil {
+ logger.Warnw("cannot-unmarshal-groups", log.Fields{"error": err})
+ return nil, err
+ }
+ case "flow_metadata":
+ if err := ptypes.UnmarshalAny(arg.Value, flowMetadata); err != nil {
+ logger.Warnw("cannot-unmarshal-metadata", log.Fields{"error": err})
+ return nil, err
+ }
+ case kafka.TransactionKey:
+ if err := ptypes.UnmarshalAny(arg.Value, transactionID); err != nil {
+ logger.Warnw("cannot-unmarshal-transaction-ID", log.Fields{"error": err})
+ return nil, err
+ }
+ }
+ }
+ logger.Debugw("Update_flows_incrementally", log.Fields{"flows": flows, "groups": groups})
+ //Invoke the incremental flow update API of the adapter
+ if err := rhp.adapter.Update_flows_incrementally(device, flows, groups, flowMetadata); err != nil {
+ return nil, status.Errorf(codes.NotFound, "%s", err.Error())
+ }
+ return new(empty.Empty), nil
+}
+
+func (rhp *RequestHandlerProxy) Update_pm_config(args []*ic.Argument) (*empty.Empty, error) {
+ logger.Debug("Update_pm_config")
+ if len(args) < 2 {
+ logger.Warn("Update_pm_config-invalid-number-of-args", log.Fields{"args": args})
+ err := errors.New("invalid-number-of-args")
+ return nil, err
+ }
+ device := &voltha.Device{}
+ transactionID := &ic.StrType{}
+ pmConfigs := &voltha.PmConfigs{}
+ for _, arg := range args {
+ switch arg.Key {
+ case "device":
+ if err := ptypes.UnmarshalAny(arg.Value, device); err != nil {
+ logger.Warnw("cannot-unmarshal-device", log.Fields{"error": err})
+ return nil, err
+ }
+ case "pm_configs":
+ if err := ptypes.UnmarshalAny(arg.Value, pmConfigs); err != nil {
+ logger.Warnw("cannot-unmarshal-pm-configs", log.Fields{"error": err})
+ return nil, err
+ }
+ case kafka.TransactionKey:
+ if err := ptypes.UnmarshalAny(arg.Value, transactionID); err != nil {
+ logger.Warnw("cannot-unmarshal-transaction-ID", log.Fields{"error": err})
+ return nil, err
+ }
+ }
+ }
+ logger.Debugw("Update_pm_config", log.Fields{"deviceId": device.Id, "pmConfigs": pmConfigs})
+ //Invoke the pm config update API of the adapter
+ if err := rhp.adapter.Update_pm_config(device, pmConfigs); err != nil {
+ return nil, status.Errorf(codes.NotFound, "%s", err.Error())
+ }
+ return new(empty.Empty), nil
+}
+
+func (rhp *RequestHandlerProxy) Receive_packet_out(args []*ic.Argument) (*empty.Empty, error) {
+ logger.Debugw("Receive_packet_out", log.Fields{"args": args})
+ if len(args) < 3 {
+ logger.Warn("Receive_packet_out-invalid-number-of-args", log.Fields{"args": args})
+ err := errors.New("invalid-number-of-args")
+ return nil, err
+ }
+ deviceId := &ic.StrType{}
+ egressPort := &ic.IntType{}
+ packet := &openflow_13.OfpPacketOut{}
+ transactionID := &ic.StrType{}
+ for _, arg := range args {
+ switch arg.Key {
+ case "deviceId":
+ if err := ptypes.UnmarshalAny(arg.Value, deviceId); err != nil {
+ logger.Warnw("cannot-unmarshal-deviceId", log.Fields{"error": err})
+ return nil, err
+ }
+ case "outPort":
+ if err := ptypes.UnmarshalAny(arg.Value, egressPort); err != nil {
+ logger.Warnw("cannot-unmarshal-egressPort", log.Fields{"error": err})
+ return nil, err
+ }
+ case "packet":
+ if err := ptypes.UnmarshalAny(arg.Value, packet); err != nil {
+ logger.Warnw("cannot-unmarshal-packet", log.Fields{"error": err})
+ return nil, err
+ }
+ case kafka.TransactionKey:
+ if err := ptypes.UnmarshalAny(arg.Value, transactionID); err != nil {
+ logger.Warnw("cannot-unmarshal-transaction-ID", log.Fields{"error": err})
+ return nil, err
+ }
+ }
+ }
+ logger.Debugw("Receive_packet_out", log.Fields{"deviceId": deviceId.Val, "outPort": egressPort, "packet": packet})
+ //Invoke the adopt device on the adapter
+ if err := rhp.adapter.Receive_packet_out(deviceId.Val, int(egressPort.Val), packet); err != nil {
+ return nil, status.Errorf(codes.NotFound, "%s", err.Error())
+ }
+ return new(empty.Empty), nil
+}
+
+func (rhp *RequestHandlerProxy) Suppress_alarm(args []*ic.Argument) (*empty.Empty, error) {
+ return new(empty.Empty), nil
+}
+
+func (rhp *RequestHandlerProxy) Unsuppress_alarm(args []*ic.Argument) (*empty.Empty, error) {
+ return new(empty.Empty), nil
+}
+
+func (rhp *RequestHandlerProxy) Get_ofp_device_info(args []*ic.Argument) (*ic.SwitchCapability, error) {
+ if len(args) < 2 {
+ logger.Warn("invalid-number-of-args", log.Fields{"args": args})
+ err := errors.New("invalid-number-of-args")
+ return nil, err
+ }
+ device := &voltha.Device{}
+ transactionID := &ic.StrType{}
+ for _, arg := range args {
+ switch arg.Key {
+ case "device":
+ if err := ptypes.UnmarshalAny(arg.Value, device); err != nil {
+ logger.Warnw("cannot-unmarshal-device", log.Fields{"error": err})
+ return nil, err
+ }
+ case kafka.TransactionKey:
+ if err := ptypes.UnmarshalAny(arg.Value, transactionID); err != nil {
+ logger.Warnw("cannot-unmarshal-transaction-ID", log.Fields{"error": err})
+ return nil, err
+ }
+ }
+ }
+
+ logger.Debugw("Get_ofp_device_info", log.Fields{"deviceId": device.Id})
+
+ var cap *ic.SwitchCapability
+ var err error
+ if cap, err = rhp.adapter.Get_ofp_device_info(device); err != nil {
+ return nil, status.Errorf(codes.NotFound, "%s", err.Error())
+ }
+ logger.Debugw("Get_ofp_device_info", log.Fields{"cap": cap})
+ return cap, nil
+}
+
+func (rhp *RequestHandlerProxy) Get_ofp_port_info(args []*ic.Argument) (*ic.PortCapability, error) {
+ if len(args) < 3 {
+ logger.Warn("invalid-number-of-args", log.Fields{"args": args})
+ err := errors.New("invalid-number-of-args")
+ return nil, err
+ }
+ device := &voltha.Device{}
+ pNo := &ic.IntType{}
+ transactionID := &ic.StrType{}
+ for _, arg := range args {
+ switch arg.Key {
+ case "device":
+ if err := ptypes.UnmarshalAny(arg.Value, device); err != nil {
+ logger.Warnw("cannot-unmarshal-device", log.Fields{"error": err})
+ return nil, err
+ }
+ case "port_no":
+ if err := ptypes.UnmarshalAny(arg.Value, pNo); err != nil {
+ logger.Warnw("cannot-unmarshal-port-no", log.Fields{"error": err})
+ return nil, err
+ }
+ case kafka.TransactionKey:
+ if err := ptypes.UnmarshalAny(arg.Value, transactionID); err != nil {
+ logger.Warnw("cannot-unmarshal-transaction-ID", log.Fields{"error": err})
+ return nil, err
+ }
+ }
+ }
+ logger.Debugw("Get_ofp_port_info", log.Fields{"deviceId": device.Id, "portNo": pNo.Val})
+ var cap *ic.PortCapability
+ var err error
+ if cap, err = rhp.adapter.Get_ofp_port_info(device, pNo.Val); err != nil {
+ return nil, status.Errorf(codes.NotFound, "%s", err.Error())
+ }
+ return cap, nil
+}
+
+func (rhp *RequestHandlerProxy) Process_inter_adapter_message(args []*ic.Argument) (*empty.Empty, error) {
+ if len(args) < 2 {
+ logger.Warn("invalid-number-of-args", log.Fields{"args": args})
+ err := errors.New("invalid-number-of-args")
+ return nil, err
+ }
+ iaMsg := &ic.InterAdapterMessage{}
+ transactionID := &ic.StrType{}
+ for _, arg := range args {
+ switch arg.Key {
+ case "msg":
+ if err := ptypes.UnmarshalAny(arg.Value, iaMsg); err != nil {
+ logger.Warnw("cannot-unmarshal-device", log.Fields{"error": err})
+ return nil, err
+ }
+ case kafka.TransactionKey:
+ if err := ptypes.UnmarshalAny(arg.Value, transactionID); err != nil {
+ logger.Warnw("cannot-unmarshal-transaction-ID", log.Fields{"error": err})
+ return nil, err
+ }
+ }
+ }
+
+ logger.Debugw("Process_inter_adapter_message", log.Fields{"msgId": iaMsg.Header.Id})
+
+ //Invoke the inter adapter API on the handler
+ if err := rhp.adapter.Process_inter_adapter_message(iaMsg); err != nil {
+ return nil, status.Errorf(codes.NotFound, "%s", err.Error())
+ }
+
+ return new(empty.Empty), nil
+}
+
+func (rhp *RequestHandlerProxy) Download_image(args []*ic.Argument) (*voltha.ImageDownload, error) {
+ return &voltha.ImageDownload{}, nil
+}
+
+func (rhp *RequestHandlerProxy) Get_image_download_status(args []*ic.Argument) (*voltha.ImageDownload, error) {
+ return &voltha.ImageDownload{}, nil
+}
+
+func (rhp *RequestHandlerProxy) Cancel_image_download(args []*ic.Argument) (*voltha.ImageDownload, error) {
+ return &voltha.ImageDownload{}, nil
+}
+
+func (rhp *RequestHandlerProxy) Activate_image_update(args []*ic.Argument) (*voltha.ImageDownload, error) {
+ return &voltha.ImageDownload{}, nil
+}
+
+func (rhp *RequestHandlerProxy) Revert_image_update(args []*ic.Argument) (*voltha.ImageDownload, error) {
+ return &voltha.ImageDownload{}, nil
+}
+
+func (rhp *RequestHandlerProxy) Enable_port(args []*ic.Argument) error {
+ logger.Debugw("enable_port", log.Fields{"args": args})
+ deviceId, port, err := rhp.getEnableDisableParams(args)
+ if err != nil {
+ logger.Warnw("enable_port", log.Fields{"args": args, "deviceId": deviceId, "port": port})
+ return err
+ }
+ return rhp.adapter.Enable_port(deviceId, port)
+}
+
+func (rhp *RequestHandlerProxy) Disable_port(args []*ic.Argument) error {
+ logger.Debugw("disable_port", log.Fields{"args": args})
+ deviceId, port, err := rhp.getEnableDisableParams(args)
+ if err != nil {
+ logger.Warnw("disable_port", log.Fields{"args": args, "deviceId": deviceId, "port": port})
+ return err
+ }
+ return rhp.adapter.Disable_port(deviceId, port)
+}
+
+func (rhp *RequestHandlerProxy) getEnableDisableParams(args []*ic.Argument) (string, *voltha.Port, error) {
+ logger.Debugw("getEnableDisableParams", log.Fields{"args": args})
+ if len(args) < 3 {
+ logger.Warn("invalid-number-of-args", log.Fields{"args": args})
+ return "", nil, errors.New("invalid-number-of-args")
+ }
+ deviceId := &ic.StrType{}
+ port := &voltha.Port{}
+ for _, arg := range args {
+ switch arg.Key {
+ case "deviceId":
+ if err := ptypes.UnmarshalAny(arg.Value, deviceId); err != nil {
+ logger.Warnw("cannot-unmarshal-device", log.Fields{"error": err})
+ return "", nil, err
+ }
+ case "port":
+ if err := ptypes.UnmarshalAny(arg.Value, port); err != nil {
+ logger.Warnw("cannot-unmarshal-port", log.Fields{"error": err})
+ return "", nil, err
+ }
+ }
+ }
+ return deviceId.Val, port, nil
+}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/utils.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/utils.go
new file mode 100644
index 0000000..b782ebe
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/utils.go
@@ -0,0 +1,90 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * 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.
+ */
+package common
+
+import (
+ "fmt"
+ "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ ic "github.com/opencord/voltha-protos/v3/go/inter_container"
+ "google.golang.org/grpc/codes"
+ "math/rand"
+ "time"
+)
+
+//GetRandomSerialNumber returns a serial number formatted as "HOST:PORT"
+func GetRandomSerialNumber() string {
+ rand.Seed(time.Now().UnixNano())
+ return fmt.Sprintf("%d.%d.%d.%d:%d",
+ rand.Intn(255),
+ rand.Intn(255),
+ rand.Intn(255),
+ rand.Intn(255),
+ rand.Intn(9000)+1000,
+ )
+}
+
+//GetRandomMacAddress returns a random mac address
+func GetRandomMacAddress() string {
+ rand.Seed(time.Now().UnixNano())
+ return fmt.Sprintf("%02x:%02x:%02x:%02x:%02x:%02x",
+ rand.Intn(128),
+ rand.Intn(128),
+ rand.Intn(128),
+ rand.Intn(128),
+ rand.Intn(128),
+ rand.Intn(128),
+ )
+}
+
+const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
+const (
+ letterIdxBits = 6 // 6 bits to represent a letter index
+ letterIdxMask = 1<<letterIdxBits - 1 // All 1-bits, as many as letterIdxBits
+ letterIdxMax = 63 / letterIdxBits // # of letter indices fitting in 63 bits
+)
+
+var src = rand.NewSource(time.Now().UnixNano())
+
+func GetRandomString(n int) string {
+ b := make([]byte, n)
+ // A src.Int63() generates 63 random bits, enough for letterIdxMax characters!
+ for i, cache, remain := n-1, src.Int63(), letterIdxMax; i >= 0; {
+ if remain == 0 {
+ cache, remain = src.Int63(), letterIdxMax
+ }
+ if idx := int(cache & letterIdxMask); idx < len(letterBytes) {
+ b[i] = letterBytes[idx]
+ i--
+ }
+ cache >>= letterIdxBits
+ remain--
+ }
+ return string(b)
+}
+
+func ICProxyErrorCodeToGrpcErrorCode(icErr ic.ErrorCodeCodes) codes.Code {
+ switch icErr {
+ case ic.ErrorCode_INVALID_PARAMETERS:
+ return codes.InvalidArgument
+ case ic.ErrorCode_UNSUPPORTED_REQUEST:
+ return codes.Unavailable
+ case ic.ErrorCode_DEADLINE_EXCEEDED:
+ return codes.DeadlineExceeded
+ default:
+ log.Warnw("cannnot-map-ic-error-code-to-grpc-error-code", log.Fields{"err": icErr})
+ return codes.Internal
+ }
+}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/iAdapter.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/iAdapter.go
new file mode 100644
index 0000000..c0e44be
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/iAdapter.go
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * 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.
+ */
+package adapters
+
+import (
+ ic "github.com/opencord/voltha-protos/v3/go/inter_container"
+ "github.com/opencord/voltha-protos/v3/go/openflow_13"
+ "github.com/opencord/voltha-protos/v3/go/voltha"
+)
+
+//IAdapter represents the set of APIs a voltha adapter has to support.
+type IAdapter interface {
+ Adapter_descriptor() error
+ Device_types() (*voltha.DeviceTypes, error)
+ Health() (*voltha.HealthStatus, error)
+ Adopt_device(device *voltha.Device) error
+ Reconcile_device(device *voltha.Device) error
+ Abandon_device(device *voltha.Device) error
+ Disable_device(device *voltha.Device) error
+ Reenable_device(device *voltha.Device) error
+ Reboot_device(device *voltha.Device) error
+ Self_test_device(device *voltha.Device) error
+ Delete_device(device *voltha.Device) error
+ Get_device_details(device *voltha.Device) error
+ Update_flows_bulk(device *voltha.Device, flows *voltha.Flows, groups *voltha.FlowGroups, flowMetadata *voltha.FlowMetadata) error
+ Update_flows_incrementally(device *voltha.Device, flows *openflow_13.FlowChanges, groups *openflow_13.FlowGroupChanges, flowMetadata *voltha.FlowMetadata) error
+ Update_pm_config(device *voltha.Device, pm_configs *voltha.PmConfigs) error
+ Receive_packet_out(deviceId string, egress_port_no int, msg *openflow_13.OfpPacketOut) error
+ Suppress_event(filter *voltha.EventFilter) error
+ Unsuppress_event(filter *voltha.EventFilter) error
+ Get_ofp_device_info(device *voltha.Device) (*ic.SwitchCapability, error)
+ Get_ofp_port_info(device *voltha.Device, port_no int64) (*ic.PortCapability, error)
+ Process_inter_adapter_message(msg *ic.InterAdapterMessage) error
+ Download_image(device *voltha.Device, request *voltha.ImageDownload) (*voltha.ImageDownload, error)
+ Get_image_download_status(device *voltha.Device, request *voltha.ImageDownload) (*voltha.ImageDownload, error)
+ Cancel_image_download(device *voltha.Device, request *voltha.ImageDownload) (*voltha.ImageDownload, error)
+ Activate_image_update(device *voltha.Device, request *voltha.ImageDownload) (*voltha.ImageDownload, error)
+ Revert_image_update(device *voltha.Device, request *voltha.ImageDownload) (*voltha.ImageDownload, error)
+ Enable_port(deviceId string, port *voltha.Port) error
+ Disable_port(deviceId string, port *voltha.Port) error
+}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/client.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/client.go
new file mode 100644
index 0000000..d30e049
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/client.go
@@ -0,0 +1,90 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * 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.
+ */
+package kvstore
+
+import "context"
+
+const (
+ // Default timeout in seconds when making a kvstore request
+ defaultKVGetTimeout = 5
+ // Maximum channel buffer between publisher/subscriber goroutines
+ maxClientChannelBufferSize = 10
+)
+
+// These constants represent the event types returned by the KV client
+const (
+ PUT = iota
+ DELETE
+ CONNECTIONDOWN
+ UNKNOWN
+)
+
+// KVPair is a common wrapper for key-value pairs returned from the KV store
+type KVPair struct {
+ Key string
+ Value interface{}
+ Version int64
+ Session string
+ Lease int64
+}
+
+// NewKVPair creates a new KVPair object
+func NewKVPair(key string, value interface{}, session string, lease int64, version int64) *KVPair {
+ kv := new(KVPair)
+ kv.Key = key
+ kv.Value = value
+ kv.Session = session
+ kv.Lease = lease
+ kv.Version = version
+ return kv
+}
+
+// Event is generated by the KV client when a key change is detected
+type Event struct {
+ EventType int
+ Key interface{}
+ Value interface{}
+ Version int64
+}
+
+// NewEvent creates a new Event object
+func NewEvent(eventType int, key interface{}, value interface{}, version int64) *Event {
+ evnt := new(Event)
+ evnt.EventType = eventType
+ evnt.Key = key
+ evnt.Value = value
+ evnt.Version = version
+
+ return evnt
+}
+
+// Client represents the set of APIs a KV Client must implement
+type Client interface {
+ List(ctx context.Context, key string) (map[string]*KVPair, error)
+ Get(ctx context.Context, key string) (*KVPair, error)
+ Put(ctx context.Context, key string, value interface{}) error
+ Delete(ctx context.Context, key string) error
+ Reserve(ctx context.Context, key string, value interface{}, ttl int64) (interface{}, error)
+ ReleaseReservation(ctx context.Context, key string) error
+ ReleaseAllReservations(ctx context.Context) error
+ RenewReservation(ctx context.Context, key string) error
+ Watch(ctx context.Context, key string) chan *Event
+ AcquireLock(ctx context.Context, lockName string, timeout int) error
+ ReleaseLock(lockName string) error
+ IsConnectionUp(ctx context.Context) bool // timeout in second
+ CloseWatch(key string, ch chan *Event)
+ Close()
+}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/common.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/common.go
new file mode 100644
index 0000000..2d2a6a6
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/common.go
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2020-present Open Networking Foundation
+ *
+ * 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.
+ */
+package kvstore
+
+import (
+ "github.com/opencord/voltha-lib-go/v3/pkg/log"
+)
+
+const (
+ logLevel = log.ErrorLevel
+)
+
+var logger log.Logger
+
+func init() {
+ // Setup this package so that it's log level can be modified at run time
+ var err error
+ logger, err = log.AddPackage(log.JSON, logLevel, log.Fields{"pkg": "kvstore"})
+ if err != nil {
+ panic(err)
+ }
+}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/consulclient.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/consulclient.go
new file mode 100644
index 0000000..fdf39be
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/consulclient.go
@@ -0,0 +1,512 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * 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.
+ */
+package kvstore
+
+import (
+ "bytes"
+ "context"
+ "errors"
+ log "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "sync"
+ "time"
+ //log "ciena.com/coordinator/common"
+ consulapi "github.com/hashicorp/consul/api"
+)
+
+type channelContextMap struct {
+ ctx context.Context
+ channel chan *Event
+ cancel context.CancelFunc
+}
+
+// ConsulClient represents the consul KV store client
+type ConsulClient struct {
+ session *consulapi.Session
+ sessionID string
+ consul *consulapi.Client
+ doneCh *chan int
+ keyReservations map[string]interface{}
+ watchedChannelsContext map[string][]*channelContextMap
+ writeLock sync.Mutex
+}
+
+// NewConsulClient returns a new client for the Consul KV store
+func NewConsulClient(addr string, timeout int) (*ConsulClient, error) {
+
+ duration := GetDuration(timeout)
+
+ config := consulapi.DefaultConfig()
+ config.Address = addr
+ config.WaitTime = duration
+ consul, err := consulapi.NewClient(config)
+ if err != nil {
+ logger.Error(err)
+ return nil, err
+ }
+
+ doneCh := make(chan int, 1)
+ wChannelsContext := make(map[string][]*channelContextMap)
+ reservations := make(map[string]interface{})
+ return &ConsulClient{consul: consul, doneCh: &doneCh, watchedChannelsContext: wChannelsContext, keyReservations: reservations}, nil
+}
+
+// IsConnectionUp returns whether the connection to the Consul KV store is up
+func (c *ConsulClient) IsConnectionUp(ctx context.Context) bool {
+ logger.Error("Unimplemented function")
+ return false
+}
+
+// List returns an array of key-value pairs with key as a prefix. Timeout defines how long the function will
+// wait for a response
+func (c *ConsulClient) List(ctx context.Context, key string) (map[string]*KVPair, error) {
+
+ deadline, _ := ctx.Deadline()
+ kv := c.consul.KV()
+ var queryOptions consulapi.QueryOptions
+ queryOptions.WaitTime = GetDuration(deadline.Second())
+ // For now we ignore meta data
+ kvps, _, err := kv.List(key, &queryOptions)
+ if err != nil {
+ logger.Error(err)
+ return nil, err
+ }
+ m := make(map[string]*KVPair)
+ for _, kvp := range kvps {
+ m[string(kvp.Key)] = NewKVPair(string(kvp.Key), kvp.Value, string(kvp.Session), 0, -1)
+ }
+ return m, nil
+}
+
+// Get returns a key-value pair for a given key. Timeout defines how long the function will
+// wait for a response
+func (c *ConsulClient) Get(ctx context.Context, key string) (*KVPair, error) {
+
+ deadline, _ := ctx.Deadline()
+ kv := c.consul.KV()
+ var queryOptions consulapi.QueryOptions
+ queryOptions.WaitTime = GetDuration(deadline.Second())
+ // For now we ignore meta data
+ kvp, _, err := kv.Get(key, &queryOptions)
+ if err != nil {
+ logger.Error(err)
+ return nil, err
+ }
+ if kvp != nil {
+ return NewKVPair(string(kvp.Key), kvp.Value, string(kvp.Session), 0, -1), nil
+ }
+
+ return nil, nil
+}
+
+// Put writes a key-value pair to the KV store. Value can only be a string or []byte since the consul API
+// accepts only a []byte as a value for a put operation. Timeout defines how long the function will
+// wait for a response
+func (c *ConsulClient) Put(ctx context.Context, key string, value interface{}) error {
+
+ // Validate that we can create a byte array from the value as consul API expects a byte array
+ var val []byte
+ var er error
+ if val, er = ToByte(value); er != nil {
+ logger.Error(er)
+ return er
+ }
+
+ // Create a key value pair
+ kvp := consulapi.KVPair{Key: key, Value: val}
+ kv := c.consul.KV()
+ var writeOptions consulapi.WriteOptions
+ c.writeLock.Lock()
+ defer c.writeLock.Unlock()
+ _, err := kv.Put(&kvp, &writeOptions)
+ if err != nil {
+ logger.Error(err)
+ return err
+ }
+ return nil
+}
+
+// Delete removes a key from the KV store. Timeout defines how long the function will
+// wait for a response
+func (c *ConsulClient) Delete(ctx context.Context, key string) error {
+ kv := c.consul.KV()
+ var writeOptions consulapi.WriteOptions
+ c.writeLock.Lock()
+ defer c.writeLock.Unlock()
+ _, err := kv.Delete(key, &writeOptions)
+ if err != nil {
+ logger.Error(err)
+ return err
+ }
+ return nil
+}
+
+func (c *ConsulClient) deleteSession() {
+ if c.sessionID != "" {
+ logger.Debug("cleaning-up-session")
+ session := c.consul.Session()
+ _, err := session.Destroy(c.sessionID, nil)
+ if err != nil {
+ logger.Errorw("error-cleaning-session", log.Fields{"session": c.sessionID, "error": err})
+ }
+ }
+ c.sessionID = ""
+ c.session = nil
+}
+
+func (c *ConsulClient) createSession(ttl int64, retries int) (*consulapi.Session, string, error) {
+ session := c.consul.Session()
+ entry := &consulapi.SessionEntry{
+ Behavior: consulapi.SessionBehaviorDelete,
+ TTL: "10s", // strconv.FormatInt(ttl, 10) + "s", // disable ttl
+ }
+
+ for {
+ id, meta, err := session.Create(entry, nil)
+ if err != nil {
+ logger.Errorw("create-session-error", log.Fields{"error": err})
+ if retries == 0 {
+ return nil, "", err
+ }
+ } else if meta.RequestTime == 0 {
+ logger.Errorw("create-session-bad-meta-data", log.Fields{"meta-data": meta})
+ if retries == 0 {
+ return nil, "", errors.New("bad-meta-data")
+ }
+ } else if id == "" {
+ logger.Error("create-session-nil-id")
+ if retries == 0 {
+ return nil, "", errors.New("ID-nil")
+ }
+ } else {
+ return session, id, nil
+ }
+ // If retry param is -1 we will retry indefinitely
+ if retries > 0 {
+ retries--
+ }
+ logger.Debug("retrying-session-create-after-a-second-delay")
+ time.Sleep(time.Duration(1) * time.Second)
+ }
+}
+
+// Helper function to verify mostly whether the content of two interface types are the same. Focus is []byte and
+// string types
+func isEqual(val1 interface{}, val2 interface{}) bool {
+ b1, err := ToByte(val1)
+ b2, er := ToByte(val2)
+ if err == nil && er == nil {
+ return bytes.Equal(b1, b2)
+ }
+ return val1 == val2
+}
+
+// Reserve is invoked to acquire a key and set it to a given value. Value can only be a string or []byte since
+// the consul API accepts only a []byte. Timeout defines how long the function will wait for a response. TTL
+// defines how long that reservation is valid. When TTL expires the key is unreserved by the KV store itself.
+// If the key is acquired then the value returned will be the value passed in. If the key is already acquired
+// then the value assigned to that key will be returned.
+func (c *ConsulClient) Reserve(ctx context.Context, key string, value interface{}, ttl int64) (interface{}, error) {
+
+ // Validate that we can create a byte array from the value as consul API expects a byte array
+ var val []byte
+ var er error
+ if val, er = ToByte(value); er != nil {
+ logger.Error(er)
+ return nil, er
+ }
+
+ // Cleanup any existing session and recreate new ones. A key is reserved against a session
+ if c.sessionID != "" {
+ c.deleteSession()
+ }
+
+ // Clear session if reservation is not successful
+ reservationSuccessful := false
+ defer func() {
+ if !reservationSuccessful {
+ logger.Debug("deleting-session")
+ c.deleteSession()
+ }
+ }()
+
+ session, sessionID, err := c.createSession(ttl, -1)
+ if err != nil {
+ logger.Errorw("no-session-created", log.Fields{"error": err})
+ return "", errors.New("no-session-created")
+ }
+ logger.Debugw("session-created", log.Fields{"session-id": sessionID})
+ c.sessionID = sessionID
+ c.session = session
+
+ // Try to grap the Key using the session
+ kv := c.consul.KV()
+ kvp := consulapi.KVPair{Key: key, Value: val, Session: c.sessionID}
+ result, _, err := kv.Acquire(&kvp, nil)
+ if err != nil {
+ logger.Errorw("error-acquiring-keys", log.Fields{"error": err})
+ return nil, err
+ }
+
+ logger.Debugw("key-acquired", log.Fields{"key": key, "status": result})
+
+ // Irrespective whether we were successful in acquiring the key, let's read it back and see if it's us.
+ m, err := c.Get(ctx, key)
+ if err != nil {
+ return nil, err
+ }
+ if m != nil {
+ logger.Debugw("response-received", log.Fields{"key": m.Key, "m.value": string(m.Value.([]byte)), "value": value})
+ if m.Key == key && isEqual(m.Value, value) {
+ // My reservation is successful - register it. For now, support is only for 1 reservation per key
+ // per session.
+ reservationSuccessful = true
+ c.writeLock.Lock()
+ c.keyReservations[key] = m.Value
+ c.writeLock.Unlock()
+ return m.Value, nil
+ }
+ // My reservation has failed. Return the owner of that key
+ return m.Value, nil
+ }
+ return nil, nil
+}
+
+// ReleaseAllReservations releases all key reservations previously made (using Reserve API)
+func (c *ConsulClient) ReleaseAllReservations(ctx context.Context) error {
+ kv := c.consul.KV()
+ var kvp consulapi.KVPair
+ var result bool
+ var err error
+
+ c.writeLock.Lock()
+ defer c.writeLock.Unlock()
+
+ for key, value := range c.keyReservations {
+ kvp = consulapi.KVPair{Key: key, Value: value.([]byte), Session: c.sessionID}
+ result, _, err = kv.Release(&kvp, nil)
+ if err != nil {
+ logger.Errorw("cannot-release-reservation", log.Fields{"key": key, "error": err})
+ return err
+ }
+ if !result {
+ logger.Errorw("cannot-release-reservation", log.Fields{"key": key})
+ }
+ delete(c.keyReservations, key)
+ }
+ return nil
+}
+
+// ReleaseReservation releases reservation for a specific key.
+func (c *ConsulClient) ReleaseReservation(ctx context.Context, key string) error {
+ var ok bool
+ var reservedValue interface{}
+ c.writeLock.Lock()
+ defer c.writeLock.Unlock()
+ if reservedValue, ok = c.keyReservations[key]; !ok {
+ return errors.New("key-not-reserved:" + key)
+ }
+ // Release the reservation
+ kv := c.consul.KV()
+ kvp := consulapi.KVPair{Key: key, Value: reservedValue.([]byte), Session: c.sessionID}
+
+ result, _, er := kv.Release(&kvp, nil)
+ if er != nil {
+ return er
+ }
+ // Remove that key entry on success
+ if result {
+ delete(c.keyReservations, key)
+ return nil
+ }
+ return errors.New("key-cannot-be-unreserved")
+}
+
+// RenewReservation renews a reservation. A reservation will go stale after the specified TTL (Time To Live)
+// period specified when reserving the key
+func (c *ConsulClient) RenewReservation(ctx context.Context, key string) error {
+ // In the case of Consul, renew reservation of a reserve key only require renewing the client session.
+
+ c.writeLock.Lock()
+ defer c.writeLock.Unlock()
+
+ // Verify the key was reserved
+ if _, ok := c.keyReservations[key]; !ok {
+ return errors.New("key-not-reserved")
+ }
+
+ if c.session == nil {
+ return errors.New("no-session-exist")
+ }
+
+ var writeOptions consulapi.WriteOptions
+ if _, _, err := c.session.Renew(c.sessionID, &writeOptions); err != nil {
+ return err
+ }
+ return nil
+}
+
+// Watch provides the watch capability on a given key. It returns a channel onto which the callee needs to
+// listen to receive Events.
+func (c *ConsulClient) Watch(ctx context.Context, key string) chan *Event {
+
+ // Create a new channel
+ ch := make(chan *Event, maxClientChannelBufferSize)
+
+ // Create a context to track this request
+ watchContext, cFunc := context.WithCancel(context.Background())
+
+ // Save the channel and context reference for later
+ c.writeLock.Lock()
+ defer c.writeLock.Unlock()
+ ccm := channelContextMap{channel: ch, ctx: watchContext, cancel: cFunc}
+ c.watchedChannelsContext[key] = append(c.watchedChannelsContext[key], &ccm)
+
+ // Launch a go routine to listen for updates
+ go c.listenForKeyChange(watchContext, key, ch)
+
+ return ch
+}
+
+// CloseWatch closes a specific watch. Both the key and the channel are required when closing a watch as there
+// may be multiple listeners on the same key. The previously created channel serves as a key
+func (c *ConsulClient) CloseWatch(key string, ch chan *Event) {
+ // First close the context
+ var ok bool
+ var watchedChannelsContexts []*channelContextMap
+ c.writeLock.Lock()
+ defer c.writeLock.Unlock()
+ if watchedChannelsContexts, ok = c.watchedChannelsContext[key]; !ok {
+ logger.Errorw("key-has-no-watched-context-or-channel", log.Fields{"key": key})
+ return
+ }
+ // Look for the channels
+ var pos = -1
+ for i, chCtxMap := range watchedChannelsContexts {
+ if chCtxMap.channel == ch {
+ logger.Debug("channel-found")
+ chCtxMap.cancel()
+ //close the channel
+ close(ch)
+ pos = i
+ break
+ }
+ }
+ // Remove that entry if present
+ if pos >= 0 {
+ c.watchedChannelsContext[key] = append(c.watchedChannelsContext[key][:pos], c.watchedChannelsContext[key][pos+1:]...)
+ }
+ logger.Debugw("watched-channel-exiting", log.Fields{"key": key, "channel": c.watchedChannelsContext[key]})
+}
+
+func (c *ConsulClient) isKVEqual(kv1 *consulapi.KVPair, kv2 *consulapi.KVPair) bool {
+ if (kv1 == nil) && (kv2 == nil) {
+ return true
+ } else if (kv1 == nil) || (kv2 == nil) {
+ return false
+ }
+ // Both the KV should be non-null here
+ if kv1.Key != kv2.Key ||
+ !bytes.Equal(kv1.Value, kv2.Value) ||
+ kv1.Session != kv2.Session ||
+ kv1.LockIndex != kv2.LockIndex ||
+ kv1.ModifyIndex != kv2.ModifyIndex {
+ return false
+ }
+ return true
+}
+
+func (c *ConsulClient) listenForKeyChange(watchContext context.Context, key string, ch chan *Event) {
+ logger.Debugw("start-watching-channel", log.Fields{"key": key, "channel": ch})
+
+ defer c.CloseWatch(key, ch)
+ duration := GetDuration(defaultKVGetTimeout)
+ kv := c.consul.KV()
+ var queryOptions consulapi.QueryOptions
+ queryOptions.WaitTime = duration
+
+ // Get the existing value, if any
+ previousKVPair, meta, err := kv.Get(key, &queryOptions)
+ if err != nil {
+ logger.Debug(err)
+ }
+ lastIndex := meta.LastIndex
+
+ // Wait for change. Push any change onto the channel and keep waiting for new update
+ //var waitOptions consulapi.QueryOptions
+ var pair *consulapi.KVPair
+ //watchContext, _ := context.WithCancel(context.Background())
+ waitOptions := queryOptions.WithContext(watchContext)
+ for {
+ //waitOptions = consulapi.QueryOptions{WaitIndex: lastIndex}
+ waitOptions.WaitIndex = lastIndex
+ pair, meta, err = kv.Get(key, waitOptions)
+ select {
+ case <-watchContext.Done():
+ logger.Debug("done-event-received-exiting")
+ return
+ default:
+ if err != nil {
+ logger.Warnw("error-from-watch", log.Fields{"error": err})
+ ch <- NewEvent(CONNECTIONDOWN, key, []byte(""), -1)
+ } else {
+ logger.Debugw("index-state", log.Fields{"lastindex": lastIndex, "newindex": meta.LastIndex, "key": key})
+ }
+ }
+ if err != nil {
+ logger.Debug(err)
+ // On error, block for 10 milliseconds to prevent endless loop
+ time.Sleep(10 * time.Millisecond)
+ } else if meta.LastIndex <= lastIndex {
+ logger.Info("no-index-change-or-negative")
+ } else {
+ logger.Debugw("update-received", log.Fields{"pair": pair})
+ if pair == nil {
+ ch <- NewEvent(DELETE, key, []byte(""), -1)
+ } else if !c.isKVEqual(pair, previousKVPair) {
+ // Push the change onto the channel if the data has changed
+ // For now just assume it's a PUT change
+ logger.Debugw("pair-details", log.Fields{"session": pair.Session, "key": pair.Key, "value": pair.Value})
+ ch <- NewEvent(PUT, pair.Key, pair.Value, -1)
+ }
+ previousKVPair = pair
+ lastIndex = meta.LastIndex
+ }
+ }
+}
+
+// Close closes the KV store client
+func (c *ConsulClient) Close() {
+ var writeOptions consulapi.WriteOptions
+ // Inform any goroutine it's time to say goodbye.
+ c.writeLock.Lock()
+ defer c.writeLock.Unlock()
+ if c.doneCh != nil {
+ close(*c.doneCh)
+ }
+
+ // Clear the sessionID
+ if _, err := c.consul.Session().Destroy(c.sessionID, &writeOptions); err != nil {
+ logger.Errorw("error-closing-client", log.Fields{"error": err})
+ }
+}
+
+func (c *ConsulClient) AcquireLock(ctx context.Context, lockName string, timeout int) error {
+ return nil
+}
+
+func (c *ConsulClient) ReleaseLock(lockName string) error {
+ return nil
+}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/etcdclient.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/etcdclient.go
new file mode 100644
index 0000000..a0f39cd
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/etcdclient.go
@@ -0,0 +1,489 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * 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.
+ */
+package kvstore
+
+import (
+ "context"
+ "errors"
+ "fmt"
+ "sync"
+
+ "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ v3Client "go.etcd.io/etcd/clientv3"
+ v3Concurrency "go.etcd.io/etcd/clientv3/concurrency"
+ v3rpcTypes "go.etcd.io/etcd/etcdserver/api/v3rpc/rpctypes"
+)
+
+// EtcdClient represents the Etcd KV store client
+type EtcdClient struct {
+ ectdAPI *v3Client.Client
+ leaderRev v3Client.Client
+ keyReservations map[string]*v3Client.LeaseID
+ watchedChannels sync.Map
+ writeLock sync.Mutex
+ lockToMutexMap map[string]*v3Concurrency.Mutex
+ lockToSessionMap map[string]*v3Concurrency.Session
+ lockToMutexLock sync.Mutex
+}
+
+// Connection Timeout in Seconds
+var connTimeout int = 2
+
+// NewEtcdClient returns a new client for the Etcd KV store
+func NewEtcdClient(addr string, timeout int) (*EtcdClient, error) {
+ duration := GetDuration(timeout)
+
+ c, err := v3Client.New(v3Client.Config{
+ Endpoints: []string{addr},
+ DialTimeout: duration,
+ })
+ if err != nil {
+ logger.Error(err)
+ return nil, err
+ }
+
+ reservations := make(map[string]*v3Client.LeaseID)
+ lockMutexMap := make(map[string]*v3Concurrency.Mutex)
+ lockSessionMap := make(map[string]*v3Concurrency.Session)
+
+ return &EtcdClient{ectdAPI: c, keyReservations: reservations, lockToMutexMap: lockMutexMap,
+ lockToSessionMap: lockSessionMap}, nil
+}
+
+// IsConnectionUp returns whether the connection to the Etcd KV store is up. If a timeout occurs then
+// it is assumed the connection is down or unreachable.
+func (c *EtcdClient) IsConnectionUp(ctx context.Context) bool {
+ // Let's try to get a non existent key. If the connection is up then there will be no error returned.
+ if _, err := c.Get(ctx, "non-existent-key"); err != nil {
+ return false
+ }
+ //cancel()
+ return true
+}
+
+// List returns an array of key-value pairs with key as a prefix. Timeout defines how long the function will
+// wait for a response
+func (c *EtcdClient) List(ctx context.Context, key string) (map[string]*KVPair, error) {
+ resp, err := c.ectdAPI.Get(ctx, key, v3Client.WithPrefix())
+ if err != nil {
+ logger.Error(err)
+ return nil, err
+ }
+ m := make(map[string]*KVPair)
+ for _, ev := range resp.Kvs {
+ m[string(ev.Key)] = NewKVPair(string(ev.Key), ev.Value, "", ev.Lease, ev.Version)
+ }
+ return m, nil
+}
+
+// Get returns a key-value pair for a given key. Timeout defines how long the function will
+// wait for a response
+func (c *EtcdClient) Get(ctx context.Context, key string) (*KVPair, error) {
+
+ resp, err := c.ectdAPI.Get(ctx, key)
+
+ if err != nil {
+ logger.Error(err)
+ return nil, err
+ }
+ for _, ev := range resp.Kvs {
+ // Only one value is returned
+ return NewKVPair(string(ev.Key), ev.Value, "", ev.Lease, ev.Version), nil
+ }
+ return nil, nil
+}
+
+// Put writes a key-value pair to the KV store. Value can only be a string or []byte since the etcd API
+// accepts only a string as a value for a put operation. Timeout defines how long the function will
+// wait for a response
+func (c *EtcdClient) Put(ctx context.Context, key string, value interface{}) error {
+
+ // Validate that we can convert value to a string as etcd API expects a string
+ var val string
+ var er error
+ if val, er = ToString(value); er != nil {
+ return fmt.Errorf("unexpected-type-%T", value)
+ }
+
+ c.writeLock.Lock()
+ defer c.writeLock.Unlock()
+
+ var err error
+ // Check if there is already a lease for this key - if there is then use it, otherwise a PUT will make
+ // that KV key permanent instead of automatically removing it after a lease expiration
+ if leaseID, ok := c.keyReservations[key]; ok {
+ _, err = c.ectdAPI.Put(ctx, key, val, v3Client.WithLease(*leaseID))
+ } else {
+ _, err = c.ectdAPI.Put(ctx, key, val)
+ }
+
+ if err != nil {
+ switch err {
+ case context.Canceled:
+ logger.Warnw("context-cancelled", log.Fields{"error": err})
+ case context.DeadlineExceeded:
+ logger.Warnw("context-deadline-exceeded", log.Fields{"error": err})
+ case v3rpcTypes.ErrEmptyKey:
+ logger.Warnw("etcd-client-error", log.Fields{"error": err})
+ default:
+ logger.Warnw("bad-endpoints", log.Fields{"error": err})
+ }
+ return err
+ }
+ return nil
+}
+
+// Delete removes a key from the KV store. Timeout defines how long the function will
+// wait for a response
+func (c *EtcdClient) Delete(ctx context.Context, key string) error {
+
+ c.writeLock.Lock()
+ defer c.writeLock.Unlock()
+
+ // delete the key
+ if _, err := c.ectdAPI.Delete(ctx, key); err != nil {
+ logger.Errorw("failed-to-delete-key", log.Fields{"key": key, "error": err})
+ return err
+ }
+ logger.Debugw("key(s)-deleted", log.Fields{"key": key})
+ return nil
+}
+
+// Reserve is invoked to acquire a key and set it to a given value. Value can only be a string or []byte since
+// the etcd API accepts only a string. Timeout defines how long the function will wait for a response. TTL
+// defines how long that reservation is valid. When TTL expires the key is unreserved by the KV store itself.
+// If the key is acquired then the value returned will be the value passed in. If the key is already acquired
+// then the value assigned to that key will be returned.
+func (c *EtcdClient) Reserve(ctx context.Context, key string, value interface{}, ttl int64) (interface{}, error) {
+ // Validate that we can convert value to a string as etcd API expects a string
+ var val string
+ var er error
+ if val, er = ToString(value); er != nil {
+ return nil, fmt.Errorf("unexpected-type%T", value)
+ }
+
+ resp, err := c.ectdAPI.Grant(ctx, ttl)
+ if err != nil {
+ logger.Error(err)
+ return nil, err
+ }
+ // Register the lease id
+ c.writeLock.Lock()
+ c.keyReservations[key] = &resp.ID
+ c.writeLock.Unlock()
+
+ // Revoke lease if reservation is not successful
+ reservationSuccessful := false
+ defer func() {
+ if !reservationSuccessful {
+ if err = c.ReleaseReservation(context.Background(), key); err != nil {
+ logger.Error("cannot-release-lease")
+ }
+ }
+ }()
+
+ // Try to grap the Key with the above lease
+ c.ectdAPI.Txn(context.Background())
+ txn := c.ectdAPI.Txn(context.Background())
+ txn = txn.If(v3Client.Compare(v3Client.Version(key), "=", 0))
+ txn = txn.Then(v3Client.OpPut(key, val, v3Client.WithLease(resp.ID)))
+ txn = txn.Else(v3Client.OpGet(key))
+ result, er := txn.Commit()
+ if er != nil {
+ return nil, er
+ }
+
+ if !result.Succeeded {
+ // Verify whether we are already the owner of that Key
+ if len(result.Responses) > 0 &&
+ len(result.Responses[0].GetResponseRange().Kvs) > 0 {
+ kv := result.Responses[0].GetResponseRange().Kvs[0]
+ if string(kv.Value) == val {
+ reservationSuccessful = true
+ return value, nil
+ }
+ return kv.Value, nil
+ }
+ } else {
+ // Read the Key to ensure this is our Key
+ m, err := c.Get(ctx, key)
+ if err != nil {
+ return nil, err
+ }
+ if m != nil {
+ if m.Key == key && isEqual(m.Value, value) {
+ // My reservation is successful - register it. For now, support is only for 1 reservation per key
+ // per session.
+ reservationSuccessful = true
+ return value, nil
+ }
+ // My reservation has failed. Return the owner of that key
+ return m.Value, nil
+ }
+ }
+ return nil, nil
+}
+
+// ReleaseAllReservations releases all key reservations previously made (using Reserve API)
+func (c *EtcdClient) ReleaseAllReservations(ctx context.Context) error {
+ c.writeLock.Lock()
+ defer c.writeLock.Unlock()
+
+ for key, leaseID := range c.keyReservations {
+ _, err := c.ectdAPI.Revoke(ctx, *leaseID)
+ if err != nil {
+ logger.Errorw("cannot-release-reservation", log.Fields{"key": key, "error": err})
+ return err
+ }
+ delete(c.keyReservations, key)
+ }
+ return nil
+}
+
+// ReleaseReservation releases reservation for a specific key.
+func (c *EtcdClient) ReleaseReservation(ctx context.Context, key string) error {
+ // Get the leaseid using the key
+ logger.Debugw("Release-reservation", log.Fields{"key": key})
+ var ok bool
+ var leaseID *v3Client.LeaseID
+ c.writeLock.Lock()
+ defer c.writeLock.Unlock()
+ if leaseID, ok = c.keyReservations[key]; !ok {
+ return nil
+ }
+
+ if leaseID != nil {
+ _, err := c.ectdAPI.Revoke(ctx, *leaseID)
+ if err != nil {
+ logger.Error(err)
+ return err
+ }
+ delete(c.keyReservations, key)
+ }
+ return nil
+}
+
+// RenewReservation renews a reservation. A reservation will go stale after the specified TTL (Time To Live)
+// period specified when reserving the key
+func (c *EtcdClient) RenewReservation(ctx context.Context, key string) error {
+ // Get the leaseid using the key
+ var ok bool
+ var leaseID *v3Client.LeaseID
+ c.writeLock.Lock()
+ defer c.writeLock.Unlock()
+ if leaseID, ok = c.keyReservations[key]; !ok {
+ return errors.New("key-not-reserved")
+ }
+
+ if leaseID != nil {
+ _, err := c.ectdAPI.KeepAliveOnce(ctx, *leaseID)
+ if err != nil {
+ logger.Errorw("lease-may-have-expired", log.Fields{"error": err})
+ return err
+ }
+ } else {
+ return errors.New("lease-expired")
+ }
+ return nil
+}
+
+// Watch provides the watch capability on a given key. It returns a channel onto which the callee needs to
+// listen to receive Events.
+func (c *EtcdClient) Watch(ctx context.Context, key string) chan *Event {
+ w := v3Client.NewWatcher(c.ectdAPI)
+ ctx, cancel := context.WithCancel(ctx)
+ channel := w.Watch(ctx, key)
+
+ // Create a new channel
+ ch := make(chan *Event, maxClientChannelBufferSize)
+
+ // Keep track of the created channels so they can be closed when required
+ channelMap := make(map[chan *Event]v3Client.Watcher)
+ channelMap[ch] = w
+
+ channelMaps := c.addChannelMap(key, channelMap)
+
+ // Changing the log field (from channelMaps) as the underlying logger cannot format the map of channels into a
+ // json format.
+ logger.Debugw("watched-channels", log.Fields{"len": len(channelMaps)})
+ // Launch a go routine to listen for updates
+ go c.listenForKeyChange(channel, ch, cancel)
+
+ return ch
+
+}
+
+func (c *EtcdClient) addChannelMap(key string, channelMap map[chan *Event]v3Client.Watcher) []map[chan *Event]v3Client.Watcher {
+ var channels interface{}
+ var exists bool
+
+ if channels, exists = c.watchedChannels.Load(key); exists {
+ channels = append(channels.([]map[chan *Event]v3Client.Watcher), channelMap)
+ } else {
+ channels = []map[chan *Event]v3Client.Watcher{channelMap}
+ }
+ c.watchedChannels.Store(key, channels)
+
+ return channels.([]map[chan *Event]v3Client.Watcher)
+}
+
+func (c *EtcdClient) removeChannelMap(key string, pos int) []map[chan *Event]v3Client.Watcher {
+ var channels interface{}
+ var exists bool
+
+ if channels, exists = c.watchedChannels.Load(key); exists {
+ channels = append(channels.([]map[chan *Event]v3Client.Watcher)[:pos], channels.([]map[chan *Event]v3Client.Watcher)[pos+1:]...)
+ c.watchedChannels.Store(key, channels)
+ }
+
+ return channels.([]map[chan *Event]v3Client.Watcher)
+}
+
+func (c *EtcdClient) getChannelMaps(key string) ([]map[chan *Event]v3Client.Watcher, bool) {
+ var channels interface{}
+ var exists bool
+
+ channels, exists = c.watchedChannels.Load(key)
+
+ if channels == nil {
+ return nil, exists
+ }
+
+ return channels.([]map[chan *Event]v3Client.Watcher), exists
+}
+
+// CloseWatch closes a specific watch. Both the key and the channel are required when closing a watch as there
+// may be multiple listeners on the same key. The previously created channel serves as a key
+func (c *EtcdClient) CloseWatch(key string, ch chan *Event) {
+ // Get the array of channels mapping
+ var watchedChannels []map[chan *Event]v3Client.Watcher
+ var ok bool
+ c.writeLock.Lock()
+ defer c.writeLock.Unlock()
+
+ if watchedChannels, ok = c.getChannelMaps(key); !ok {
+ logger.Warnw("key-has-no-watched-channels", log.Fields{"key": key})
+ return
+ }
+ // Look for the channels
+ var pos = -1
+ for i, chMap := range watchedChannels {
+ if t, ok := chMap[ch]; ok {
+ logger.Debug("channel-found")
+ // Close the etcd watcher before the client channel. This should close the etcd channel as well
+ if err := t.Close(); err != nil {
+ logger.Errorw("watcher-cannot-be-closed", log.Fields{"key": key, "error": err})
+ }
+ pos = i
+ break
+ }
+ }
+
+ channelMaps, _ := c.getChannelMaps(key)
+ // Remove that entry if present
+ if pos >= 0 {
+ channelMaps = c.removeChannelMap(key, pos)
+ }
+ logger.Infow("watcher-channel-exiting", log.Fields{"key": key, "channel": channelMaps})
+}
+
+func (c *EtcdClient) listenForKeyChange(channel v3Client.WatchChan, ch chan<- *Event, cancel context.CancelFunc) {
+ logger.Debug("start-listening-on-channel ...")
+ defer cancel()
+ defer close(ch)
+ for resp := range channel {
+ for _, ev := range resp.Events {
+ ch <- NewEvent(getEventType(ev), ev.Kv.Key, ev.Kv.Value, ev.Kv.Version)
+ }
+ }
+ logger.Debug("stop-listening-on-channel ...")
+}
+
+func getEventType(event *v3Client.Event) int {
+ switch event.Type {
+ case v3Client.EventTypePut:
+ return PUT
+ case v3Client.EventTypeDelete:
+ return DELETE
+ }
+ return UNKNOWN
+}
+
+// Close closes the KV store client
+func (c *EtcdClient) Close() {
+ c.writeLock.Lock()
+ defer c.writeLock.Unlock()
+ if err := c.ectdAPI.Close(); err != nil {
+ logger.Errorw("error-closing-client", log.Fields{"error": err})
+ }
+}
+
+func (c *EtcdClient) addLockName(lockName string, lock *v3Concurrency.Mutex, session *v3Concurrency.Session) {
+ c.lockToMutexLock.Lock()
+ defer c.lockToMutexLock.Unlock()
+ c.lockToMutexMap[lockName] = lock
+ c.lockToSessionMap[lockName] = session
+}
+
+func (c *EtcdClient) deleteLockName(lockName string) {
+ c.lockToMutexLock.Lock()
+ defer c.lockToMutexLock.Unlock()
+ delete(c.lockToMutexMap, lockName)
+ delete(c.lockToSessionMap, lockName)
+}
+
+func (c *EtcdClient) getLock(lockName string) (*v3Concurrency.Mutex, *v3Concurrency.Session) {
+ c.lockToMutexLock.Lock()
+ defer c.lockToMutexLock.Unlock()
+ var lock *v3Concurrency.Mutex
+ var session *v3Concurrency.Session
+ if l, exist := c.lockToMutexMap[lockName]; exist {
+ lock = l
+ }
+ if s, exist := c.lockToSessionMap[lockName]; exist {
+ session = s
+ }
+ return lock, session
+}
+
+func (c *EtcdClient) AcquireLock(ctx context.Context, lockName string, timeout int) error {
+ session, _ := v3Concurrency.NewSession(c.ectdAPI, v3Concurrency.WithContext(ctx))
+ mu := v3Concurrency.NewMutex(session, "/devicelock_"+lockName)
+ if err := mu.Lock(context.Background()); err != nil {
+ //cancel()
+ return err
+ }
+ c.addLockName(lockName, mu, session)
+ return nil
+}
+
+func (c *EtcdClient) ReleaseLock(lockName string) error {
+ lock, session := c.getLock(lockName)
+ var err error
+ if lock != nil {
+ if e := lock.Unlock(context.Background()); e != nil {
+ err = e
+ }
+ }
+ if session != nil {
+ if e := session.Close(); e != nil {
+ err = e
+ }
+ }
+ c.deleteLockName(lockName)
+
+ return err
+}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/kvutils.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/kvutils.go
new file mode 100644
index 0000000..cf9a95c
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/kvutils.go
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * 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.
+ */
+package kvstore
+
+import (
+ "fmt"
+ "time"
+)
+
+// GetDuration converts a timeout value from int to duration. If the timeout value is
+// either not set of -ve then we default KV timeout (configurable) is used.
+func GetDuration(timeout int) time.Duration {
+ if timeout <= 0 {
+ return defaultKVGetTimeout * time.Second
+ }
+ return time.Duration(timeout) * time.Second
+}
+
+// ToString converts an interface value to a string. The interface should either be of
+// a string type or []byte. Otherwise, an error is returned.
+func ToString(value interface{}) (string, error) {
+ switch t := value.(type) {
+ case []byte:
+ return string(value.([]byte)), nil
+ case string:
+ return value.(string), nil
+ default:
+ return "", fmt.Errorf("unexpected-type-%T", t)
+ }
+}
+
+// ToByte converts an interface value to a []byte. The interface should either be of
+// a string type or []byte. Otherwise, an error is returned.
+func ToByte(value interface{}) ([]byte, error) {
+ switch t := value.(type) {
+ case []byte:
+ return value.([]byte), nil
+ case string:
+ return []byte(value.(string)), nil
+ default:
+ return nil, fmt.Errorf("unexpected-type-%T", t)
+ }
+}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/client.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/client.go
new file mode 100644
index 0000000..9abad93
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/client.go
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * 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.
+ */
+package kafka
+
+import (
+ "time"
+
+ ca "github.com/opencord/voltha-protos/v3/go/inter_container"
+)
+
+const (
+ PartitionConsumer = iota
+ GroupCustomer = iota
+)
+
+const (
+ OffsetNewest = -1
+ OffsetOldest = -2
+)
+
+const (
+ GroupIdKey = "groupId"
+ Offset = "offset"
+)
+
+const (
+ DefaultKafkaHost = "127.0.0.1"
+ DefaultKafkaPort = 9092
+ DefaultGroupName = "voltha"
+ DefaultSleepOnError = 1
+ DefaultProducerFlushFrequency = 10
+ DefaultProducerFlushMessages = 10
+ DefaultProducerFlushMaxmessages = 100
+ DefaultProducerReturnSuccess = true
+ DefaultProducerReturnErrors = true
+ DefaultProducerRetryMax = 3
+ DefaultProducerRetryBackoff = time.Millisecond * 100
+ DefaultConsumerMaxwait = 100
+ DefaultMaxProcessingTime = 100
+ DefaultConsumerType = PartitionConsumer
+ DefaultNumberPartitions = 3
+ DefaultNumberReplicas = 1
+ DefaultAutoCreateTopic = false
+ DefaultMetadataMaxRetry = 3
+ DefaultLivenessChannelInterval = time.Second * 30
+)
+
+// MsgClient represents the set of APIs a Kafka MsgClient must implement
+type Client interface {
+ Start() error
+ Stop()
+ CreateTopic(topic *Topic, numPartition int, repFactor int) error
+ DeleteTopic(topic *Topic) error
+ Subscribe(topic *Topic, kvArgs ...*KVArg) (<-chan *ca.InterContainerMessage, error)
+ UnSubscribe(topic *Topic, ch <-chan *ca.InterContainerMessage) error
+ SubscribeForMetadata(func(fromTopic string, timestamp int64))
+ Send(msg interface{}, topic *Topic, keys ...string) error
+ SendLiveness() error
+ EnableLivenessChannel(enable bool) chan bool
+ EnableHealthinessChannel(enable bool) chan bool
+}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/common.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/common.go
new file mode 100644
index 0000000..cb6acb2
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/common.go
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2020-present Open Networking Foundation
+ *
+ * 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.
+ */
+package kafka
+
+import (
+ "github.com/opencord/voltha-lib-go/v3/pkg/log"
+)
+
+const (
+ logLevel = log.ErrorLevel
+)
+
+var logger log.Logger
+
+func init() {
+ // Setup this package so that it's log level can be modified at run time
+ var err error
+ logger, err = log.AddPackage(log.JSON, logLevel, log.Fields{"pkg": "kafka"})
+ if err != nil {
+ panic(err)
+ }
+}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/kafka_inter_container_library.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/kafka_inter_container_library.go
new file mode 100644
index 0000000..d21fdd5
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/kafka_inter_container_library.go
@@ -0,0 +1,860 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * 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.
+ */
+package kafka
+
+import (
+ "context"
+ "errors"
+ "fmt"
+ "reflect"
+ "strings"
+ "sync"
+ "time"
+
+ "github.com/golang/protobuf/proto"
+ "github.com/golang/protobuf/ptypes"
+ "github.com/golang/protobuf/ptypes/any"
+ "github.com/google/uuid"
+ "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ ic "github.com/opencord/voltha-protos/v3/go/inter_container"
+)
+
+const (
+ DefaultMaxRetries = 3
+ DefaultRequestTimeout = 10000 // 10000 milliseconds - to handle a wider latency range
+)
+
+const (
+ TransactionKey = "transactionID"
+ FromTopic = "fromTopic"
+)
+
+var ErrorTransactionNotAcquired = errors.New("transaction-not-acquired")
+var ErrorTransactionInvalidId = errors.New("transaction-invalid-id")
+
+// requestHandlerChannel represents an interface associated with a channel. Whenever, an event is
+// obtained from that channel, this interface is invoked. This is used to handle
+// async requests into the Core via the kafka messaging bus
+type requestHandlerChannel struct {
+ requesthandlerInterface interface{}
+ ch <-chan *ic.InterContainerMessage
+}
+
+// transactionChannel represents a combination of a topic and a channel onto which a response received
+// on the kafka bus will be sent to
+type transactionChannel struct {
+ topic *Topic
+ ch chan *ic.InterContainerMessage
+}
+
+type InterContainerProxy interface {
+ Start() error
+ Stop()
+ GetDefaultTopic() *Topic
+ DeviceDiscovered(deviceId string, deviceType string, parentId string, publisher string) error
+ InvokeRPC(ctx context.Context, rpc string, toTopic *Topic, replyToTopic *Topic, waitForResponse bool, key string, kvArgs ...*KVArg) (bool, *any.Any)
+ SubscribeWithRequestHandlerInterface(topic Topic, handler interface{}) error
+ SubscribeWithDefaultRequestHandler(topic Topic, initialOffset int64) error
+ UnSubscribeFromRequestHandler(topic Topic) error
+ DeleteTopic(topic Topic) error
+ EnableLivenessChannel(enable bool) chan bool
+ SendLiveness() error
+}
+
+// interContainerProxy represents the messaging proxy
+type interContainerProxy struct {
+ kafkaHost string
+ kafkaPort int
+ defaultTopic *Topic
+ defaultRequestHandlerInterface interface{}
+ deviceDiscoveryTopic *Topic
+ kafkaClient Client
+ doneCh chan struct{}
+ doneOnce sync.Once
+
+ // This map is used to map a topic to an interface and channel. When a request is received
+ // on that channel (registered to the topic) then that interface is invoked.
+ topicToRequestHandlerChannelMap map[string]*requestHandlerChannel
+ lockTopicRequestHandlerChannelMap sync.RWMutex
+
+ // This map is used to map a channel to a response topic. This channel handles all responses on that
+ // channel for that topic and forward them to the appropriate consumers channel, using the
+ // transactionIdToChannelMap.
+ topicToResponseChannelMap map[string]<-chan *ic.InterContainerMessage
+ lockTopicResponseChannelMap sync.RWMutex
+
+ // This map is used to map a transaction to a consumers channel. This is used whenever a request has been
+ // sent out and we are waiting for a response.
+ transactionIdToChannelMap map[string]*transactionChannel
+ lockTransactionIdToChannelMap sync.RWMutex
+}
+
+type InterContainerProxyOption func(*interContainerProxy)
+
+func InterContainerHost(host string) InterContainerProxyOption {
+ return func(args *interContainerProxy) {
+ args.kafkaHost = host
+ }
+}
+
+func InterContainerPort(port int) InterContainerProxyOption {
+ return func(args *interContainerProxy) {
+ args.kafkaPort = port
+ }
+}
+
+func DefaultTopic(topic *Topic) InterContainerProxyOption {
+ return func(args *interContainerProxy) {
+ args.defaultTopic = topic
+ }
+}
+
+func DeviceDiscoveryTopic(topic *Topic) InterContainerProxyOption {
+ return func(args *interContainerProxy) {
+ args.deviceDiscoveryTopic = topic
+ }
+}
+
+func RequestHandlerInterface(handler interface{}) InterContainerProxyOption {
+ return func(args *interContainerProxy) {
+ args.defaultRequestHandlerInterface = handler
+ }
+}
+
+func MsgClient(client Client) InterContainerProxyOption {
+ return func(args *interContainerProxy) {
+ args.kafkaClient = client
+ }
+}
+
+func newInterContainerProxy(opts ...InterContainerProxyOption) *interContainerProxy {
+ proxy := &interContainerProxy{
+ kafkaHost: DefaultKafkaHost,
+ kafkaPort: DefaultKafkaPort,
+ doneCh: make(chan struct{}),
+ }
+
+ for _, option := range opts {
+ option(proxy)
+ }
+
+ return proxy
+}
+
+func NewInterContainerProxy(opts ...InterContainerProxyOption) InterContainerProxy {
+ return newInterContainerProxy(opts...)
+}
+
+func (kp *interContainerProxy) Start() error {
+ logger.Info("Starting-Proxy")
+
+ // Kafka MsgClient should already have been created. If not, output fatal error
+ if kp.kafkaClient == nil {
+ logger.Fatal("kafka-client-not-set")
+ }
+
+ // Start the kafka client
+ if err := kp.kafkaClient.Start(); err != nil {
+ logger.Errorw("Cannot-create-kafka-proxy", log.Fields{"error": err})
+ return err
+ }
+
+ // Create the topic to response channel map
+ kp.topicToResponseChannelMap = make(map[string]<-chan *ic.InterContainerMessage)
+ //
+ // Create the transactionId to Channel Map
+ kp.transactionIdToChannelMap = make(map[string]*transactionChannel)
+
+ // Create the topic to request channel map
+ kp.topicToRequestHandlerChannelMap = make(map[string]*requestHandlerChannel)
+
+ return nil
+}
+
+func (kp *interContainerProxy) Stop() {
+ logger.Info("stopping-intercontainer-proxy")
+ kp.doneOnce.Do(func() { close(kp.doneCh) })
+ // TODO : Perform cleanup
+ kp.kafkaClient.Stop()
+ //kp.deleteAllTopicRequestHandlerChannelMap()
+ //kp.deleteAllTopicResponseChannelMap()
+ //kp.deleteAllTransactionIdToChannelMap()
+}
+
+func (kp *interContainerProxy) GetDefaultTopic() *Topic {
+ return kp.defaultTopic
+}
+
+// DeviceDiscovered publish the discovered device onto the kafka messaging bus
+func (kp *interContainerProxy) DeviceDiscovered(deviceId string, deviceType string, parentId string, publisher string) error {
+ logger.Debugw("sending-device-discovery-msg", log.Fields{"deviceId": deviceId})
+ // Simple validation
+ if deviceId == "" || deviceType == "" {
+ logger.Errorw("invalid-parameters", log.Fields{"id": deviceId, "type": deviceType})
+ return errors.New("invalid-parameters")
+ }
+ // Create the device discovery message
+ header := &ic.Header{
+ Id: uuid.New().String(),
+ Type: ic.MessageType_DEVICE_DISCOVERED,
+ FromTopic: kp.defaultTopic.Name,
+ ToTopic: kp.deviceDiscoveryTopic.Name,
+ Timestamp: time.Now().UnixNano(),
+ }
+ body := &ic.DeviceDiscovered{
+ Id: deviceId,
+ DeviceType: deviceType,
+ ParentId: parentId,
+ Publisher: publisher,
+ }
+
+ var marshalledData *any.Any
+ var err error
+ if marshalledData, err = ptypes.MarshalAny(body); err != nil {
+ logger.Errorw("cannot-marshal-request", log.Fields{"error": err})
+ return err
+ }
+ msg := &ic.InterContainerMessage{
+ Header: header,
+ Body: marshalledData,
+ }
+
+ // Send the message
+ if err := kp.kafkaClient.Send(msg, kp.deviceDiscoveryTopic); err != nil {
+ logger.Errorw("cannot-send-device-discovery-message", log.Fields{"error": err})
+ return err
+ }
+ return nil
+}
+
+// InvokeRPC is used to send a request to a given topic
+func (kp *interContainerProxy) InvokeRPC(ctx context.Context, rpc string, toTopic *Topic, replyToTopic *Topic,
+ waitForResponse bool, key string, kvArgs ...*KVArg) (bool, *any.Any) {
+
+ // If a replyToTopic is provided then we use it, otherwise just use the default toTopic. The replyToTopic is
+ // typically the device ID.
+ responseTopic := replyToTopic
+ if responseTopic == nil {
+ responseTopic = kp.defaultTopic
+ }
+
+ // Encode the request
+ protoRequest, err := encodeRequest(rpc, toTopic, responseTopic, key, kvArgs...)
+ if err != nil {
+ logger.Warnw("cannot-format-request", log.Fields{"rpc": rpc, "error": err})
+ return false, nil
+ }
+
+ // Subscribe for response, if needed, before sending request
+ var ch <-chan *ic.InterContainerMessage
+ if waitForResponse {
+ var err error
+ if ch, err = kp.subscribeForResponse(*responseTopic, protoRequest.Header.Id); err != nil {
+ logger.Errorw("failed-to-subscribe-for-response", log.Fields{"error": err, "toTopic": toTopic.Name})
+ }
+ }
+
+ // Send request - if the topic is formatted with a device Id then we will send the request using a
+ // specific key, hence ensuring a single partition is used to publish the request. This ensures that the
+ // subscriber on that topic will receive the request in the order it was sent. The key used is the deviceId.
+ //key := GetDeviceIdFromTopic(*toTopic)
+ logger.Debugw("sending-msg", log.Fields{"rpc": rpc, "toTopic": toTopic, "replyTopic": responseTopic, "key": key, "xId": protoRequest.Header.Id})
+ go kp.kafkaClient.Send(protoRequest, toTopic, key)
+
+ if waitForResponse {
+ // Create a child context based on the parent context, if any
+ var cancel context.CancelFunc
+ childCtx := context.Background()
+ if ctx == nil {
+ ctx, cancel = context.WithTimeout(context.Background(), DefaultRequestTimeout*time.Millisecond)
+ } else {
+ childCtx, cancel = context.WithTimeout(ctx, DefaultRequestTimeout*time.Millisecond)
+ }
+ defer cancel()
+
+ // Wait for response as well as timeout or cancellation
+ // Remove the subscription for a response on return
+ defer kp.unSubscribeForResponse(protoRequest.Header.Id)
+ select {
+ case msg, ok := <-ch:
+ if !ok {
+ logger.Warnw("channel-closed", log.Fields{"rpc": rpc, "replyTopic": replyToTopic.Name})
+ protoError := &ic.Error{Reason: "channel-closed"}
+ var marshalledArg *any.Any
+ if marshalledArg, err = ptypes.MarshalAny(protoError); err != nil {
+ return false, nil // Should never happen
+ }
+ return false, marshalledArg
+ }
+ logger.Debugw("received-response", log.Fields{"rpc": rpc, "msgHeader": msg.Header})
+ var responseBody *ic.InterContainerResponseBody
+ var err error
+ if responseBody, err = decodeResponse(msg); err != nil {
+ logger.Errorw("decode-response-error", log.Fields{"error": err})
+ // FIXME we should return something
+ }
+ return responseBody.Success, responseBody.Result
+ case <-ctx.Done():
+ logger.Debugw("context-cancelled", log.Fields{"rpc": rpc, "ctx": ctx.Err()})
+ // pack the error as proto any type
+ protoError := &ic.Error{Reason: ctx.Err().Error(), Code: ic.ErrorCode_DEADLINE_EXCEEDED}
+
+ var marshalledArg *any.Any
+ if marshalledArg, err = ptypes.MarshalAny(protoError); err != nil {
+ return false, nil // Should never happen
+ }
+ return false, marshalledArg
+ case <-childCtx.Done():
+ logger.Debugw("context-cancelled", log.Fields{"rpc": rpc, "ctx": childCtx.Err()})
+ // pack the error as proto any type
+ protoError := &ic.Error{Reason: childCtx.Err().Error(), Code: ic.ErrorCode_DEADLINE_EXCEEDED}
+
+ var marshalledArg *any.Any
+ if marshalledArg, err = ptypes.MarshalAny(protoError); err != nil {
+ return false, nil // Should never happen
+ }
+ return false, marshalledArg
+ case <-kp.doneCh:
+ logger.Infow("received-exit-signal", log.Fields{"toTopic": toTopic.Name, "rpc": rpc})
+ return true, nil
+ }
+ }
+ return true, nil
+}
+
+// SubscribeWithRequestHandlerInterface allows a caller to assign a target object to be invoked automatically
+// when a message is received on a given topic
+func (kp *interContainerProxy) SubscribeWithRequestHandlerInterface(topic Topic, handler interface{}) error {
+
+ // Subscribe to receive messages for that topic
+ var ch <-chan *ic.InterContainerMessage
+ var err error
+ if ch, err = kp.kafkaClient.Subscribe(&topic); err != nil {
+ //if ch, err = kp.Subscribe(topic); err != nil {
+ logger.Errorw("failed-to-subscribe", log.Fields{"error": err, "topic": topic.Name})
+ return err
+ }
+
+ kp.defaultRequestHandlerInterface = handler
+ kp.addToTopicRequestHandlerChannelMap(topic.Name, &requestHandlerChannel{requesthandlerInterface: handler, ch: ch})
+ // Launch a go routine to receive and process kafka messages
+ go kp.waitForMessages(ch, topic, handler)
+
+ return nil
+}
+
+// SubscribeWithDefaultRequestHandler allows a caller to add a topic to an existing target object to be invoked automatically
+// when a message is received on a given topic. So far there is only 1 target registered per microservice
+func (kp *interContainerProxy) SubscribeWithDefaultRequestHandler(topic Topic, initialOffset int64) error {
+ // Subscribe to receive messages for that topic
+ var ch <-chan *ic.InterContainerMessage
+ var err error
+ if ch, err = kp.kafkaClient.Subscribe(&topic, &KVArg{Key: Offset, Value: initialOffset}); err != nil {
+ logger.Errorw("failed-to-subscribe", log.Fields{"error": err, "topic": topic.Name})
+ return err
+ }
+ kp.addToTopicRequestHandlerChannelMap(topic.Name, &requestHandlerChannel{requesthandlerInterface: kp.defaultRequestHandlerInterface, ch: ch})
+
+ // Launch a go routine to receive and process kafka messages
+ go kp.waitForMessages(ch, topic, kp.defaultRequestHandlerInterface)
+
+ return nil
+}
+
+func (kp *interContainerProxy) UnSubscribeFromRequestHandler(topic Topic) error {
+ return kp.deleteFromTopicRequestHandlerChannelMap(topic.Name)
+}
+
+// setupTopicResponseChannelMap sets up single consumers channel that will act as a broadcast channel for all
+// responses from that topic.
+func (kp *interContainerProxy) setupTopicResponseChannelMap(topic string, arg <-chan *ic.InterContainerMessage) {
+ kp.lockTopicResponseChannelMap.Lock()
+ defer kp.lockTopicResponseChannelMap.Unlock()
+ if _, exist := kp.topicToResponseChannelMap[topic]; !exist {
+ kp.topicToResponseChannelMap[topic] = arg
+ }
+}
+
+func (kp *interContainerProxy) isTopicSubscribedForResponse(topic string) bool {
+ kp.lockTopicResponseChannelMap.RLock()
+ defer kp.lockTopicResponseChannelMap.RUnlock()
+ _, exist := kp.topicToResponseChannelMap[topic]
+ return exist
+}
+
+func (kp *interContainerProxy) deleteFromTopicResponseChannelMap(topic string) error {
+ kp.lockTopicResponseChannelMap.Lock()
+ defer kp.lockTopicResponseChannelMap.Unlock()
+ if _, exist := kp.topicToResponseChannelMap[topic]; exist {
+ // Unsubscribe to this topic first - this will close the subscribed channel
+ var err error
+ if err = kp.kafkaClient.UnSubscribe(&Topic{Name: topic}, kp.topicToResponseChannelMap[topic]); err != nil {
+ logger.Errorw("unsubscribing-error", log.Fields{"topic": topic})
+ }
+ delete(kp.topicToResponseChannelMap, topic)
+ return err
+ } else {
+ return errors.New(fmt.Sprintf("%s-Topic-not-found", topic))
+ }
+}
+
+func (kp *interContainerProxy) deleteAllTopicResponseChannelMap() error {
+ kp.lockTopicResponseChannelMap.Lock()
+ defer kp.lockTopicResponseChannelMap.Unlock()
+ var err error
+ for topic, _ := range kp.topicToResponseChannelMap {
+ // Unsubscribe to this topic first - this will close the subscribed channel
+ if err = kp.kafkaClient.UnSubscribe(&Topic{Name: topic}, kp.topicToResponseChannelMap[topic]); err != nil {
+ logger.Errorw("unsubscribing-error", log.Fields{"topic": topic, "error": err})
+ }
+ delete(kp.topicToResponseChannelMap, topic)
+ }
+ return err
+}
+
+func (kp *interContainerProxy) addToTopicRequestHandlerChannelMap(topic string, arg *requestHandlerChannel) {
+ kp.lockTopicRequestHandlerChannelMap.Lock()
+ defer kp.lockTopicRequestHandlerChannelMap.Unlock()
+ if _, exist := kp.topicToRequestHandlerChannelMap[topic]; !exist {
+ kp.topicToRequestHandlerChannelMap[topic] = arg
+ }
+}
+
+func (kp *interContainerProxy) deleteFromTopicRequestHandlerChannelMap(topic string) error {
+ kp.lockTopicRequestHandlerChannelMap.Lock()
+ defer kp.lockTopicRequestHandlerChannelMap.Unlock()
+ if _, exist := kp.topicToRequestHandlerChannelMap[topic]; exist {
+ // Close the kafka client client first by unsubscribing to this topic
+ kp.kafkaClient.UnSubscribe(&Topic{Name: topic}, kp.topicToRequestHandlerChannelMap[topic].ch)
+ delete(kp.topicToRequestHandlerChannelMap, topic)
+ return nil
+ } else {
+ return errors.New(fmt.Sprintf("%s-Topic-not-found", topic))
+ }
+}
+
+func (kp *interContainerProxy) deleteAllTopicRequestHandlerChannelMap() error {
+ kp.lockTopicRequestHandlerChannelMap.Lock()
+ defer kp.lockTopicRequestHandlerChannelMap.Unlock()
+ var err error
+ for topic, _ := range kp.topicToRequestHandlerChannelMap {
+ // Close the kafka client client first by unsubscribing to this topic
+ if err = kp.kafkaClient.UnSubscribe(&Topic{Name: topic}, kp.topicToRequestHandlerChannelMap[topic].ch); err != nil {
+ logger.Errorw("unsubscribing-error", log.Fields{"topic": topic, "error": err})
+ }
+ delete(kp.topicToRequestHandlerChannelMap, topic)
+ }
+ return err
+}
+
+func (kp *interContainerProxy) addToTransactionIdToChannelMap(id string, topic *Topic, arg chan *ic.InterContainerMessage) {
+ kp.lockTransactionIdToChannelMap.Lock()
+ defer kp.lockTransactionIdToChannelMap.Unlock()
+ if _, exist := kp.transactionIdToChannelMap[id]; !exist {
+ kp.transactionIdToChannelMap[id] = &transactionChannel{topic: topic, ch: arg}
+ }
+}
+
+func (kp *interContainerProxy) deleteFromTransactionIdToChannelMap(id string) {
+ kp.lockTransactionIdToChannelMap.Lock()
+ defer kp.lockTransactionIdToChannelMap.Unlock()
+ if transChannel, exist := kp.transactionIdToChannelMap[id]; exist {
+ // Close the channel first
+ close(transChannel.ch)
+ delete(kp.transactionIdToChannelMap, id)
+ }
+}
+
+func (kp *interContainerProxy) deleteTopicTransactionIdToChannelMap(id string) {
+ kp.lockTransactionIdToChannelMap.Lock()
+ defer kp.lockTransactionIdToChannelMap.Unlock()
+ for key, value := range kp.transactionIdToChannelMap {
+ if value.topic.Name == id {
+ close(value.ch)
+ delete(kp.transactionIdToChannelMap, key)
+ }
+ }
+}
+
+func (kp *interContainerProxy) deleteAllTransactionIdToChannelMap() {
+ kp.lockTransactionIdToChannelMap.Lock()
+ defer kp.lockTransactionIdToChannelMap.Unlock()
+ for key, value := range kp.transactionIdToChannelMap {
+ close(value.ch)
+ delete(kp.transactionIdToChannelMap, key)
+ }
+}
+
+func (kp *interContainerProxy) DeleteTopic(topic Topic) error {
+ // If we have any consumers on that topic we need to close them
+ if err := kp.deleteFromTopicResponseChannelMap(topic.Name); err != nil {
+ logger.Errorw("delete-from-topic-responsechannelmap-failed", log.Fields{"error": err})
+ }
+ if err := kp.deleteFromTopicRequestHandlerChannelMap(topic.Name); err != nil {
+ logger.Errorw("delete-from-topic-requesthandlerchannelmap-failed", log.Fields{"error": err})
+ }
+ kp.deleteTopicTransactionIdToChannelMap(topic.Name)
+
+ return kp.kafkaClient.DeleteTopic(&topic)
+}
+
+func encodeReturnedValue(returnedVal interface{}) (*any.Any, error) {
+ // Encode the response argument - needs to be a proto message
+ if returnedVal == nil {
+ return nil, nil
+ }
+ protoValue, ok := returnedVal.(proto.Message)
+ if !ok {
+ logger.Warnw("response-value-not-proto-message", log.Fields{"error": ok, "returnVal": returnedVal})
+ err := errors.New("response-value-not-proto-message")
+ return nil, err
+ }
+
+ // Marshal the returned value, if any
+ var marshalledReturnedVal *any.Any
+ var err error
+ if marshalledReturnedVal, err = ptypes.MarshalAny(protoValue); err != nil {
+ logger.Warnw("cannot-marshal-returned-val", log.Fields{"error": err})
+ return nil, err
+ }
+ return marshalledReturnedVal, nil
+}
+
+func encodeDefaultFailedResponse(request *ic.InterContainerMessage) *ic.InterContainerMessage {
+ responseHeader := &ic.Header{
+ Id: request.Header.Id,
+ Type: ic.MessageType_RESPONSE,
+ FromTopic: request.Header.ToTopic,
+ ToTopic: request.Header.FromTopic,
+ Timestamp: time.Now().UnixNano(),
+ }
+ responseBody := &ic.InterContainerResponseBody{
+ Success: false,
+ Result: nil,
+ }
+ var marshalledResponseBody *any.Any
+ var err error
+ // Error should never happen here
+ if marshalledResponseBody, err = ptypes.MarshalAny(responseBody); err != nil {
+ logger.Warnw("cannot-marshal-failed-response-body", log.Fields{"error": err})
+ }
+
+ return &ic.InterContainerMessage{
+ Header: responseHeader,
+ Body: marshalledResponseBody,
+ }
+
+}
+
+//formatRequest formats a request to send over kafka and returns an InterContainerMessage message on success
+//or an error on failure
+func encodeResponse(request *ic.InterContainerMessage, success bool, returnedValues ...interface{}) (*ic.InterContainerMessage, error) {
+ //logger.Debugw("encodeResponse", log.Fields{"success": success, "returnedValues": returnedValues})
+ responseHeader := &ic.Header{
+ Id: request.Header.Id,
+ Type: ic.MessageType_RESPONSE,
+ FromTopic: request.Header.ToTopic,
+ ToTopic: request.Header.FromTopic,
+ KeyTopic: request.Header.KeyTopic,
+ Timestamp: time.Now().UnixNano(),
+ }
+
+ // Go over all returned values
+ var marshalledReturnedVal *any.Any
+ var err error
+ for _, returnVal := range returnedValues {
+ if marshalledReturnedVal, err = encodeReturnedValue(returnVal); err != nil {
+ logger.Warnw("cannot-marshal-response-body", log.Fields{"error": err})
+ }
+ break // for now we support only 1 returned value - (excluding the error)
+ }
+
+ responseBody := &ic.InterContainerResponseBody{
+ Success: success,
+ Result: marshalledReturnedVal,
+ }
+
+ // Marshal the response body
+ var marshalledResponseBody *any.Any
+ if marshalledResponseBody, err = ptypes.MarshalAny(responseBody); err != nil {
+ logger.Warnw("cannot-marshal-response-body", log.Fields{"error": err})
+ return nil, err
+ }
+
+ return &ic.InterContainerMessage{
+ Header: responseHeader,
+ Body: marshalledResponseBody,
+ }, nil
+}
+
+func CallFuncByName(myClass interface{}, funcName string, params ...interface{}) (out []reflect.Value, err error) {
+ myClassValue := reflect.ValueOf(myClass)
+ // Capitalize the first letter in the funcName to workaround the first capital letters required to
+ // invoke a function from a different package
+ funcName = strings.Title(funcName)
+ m := myClassValue.MethodByName(funcName)
+ if !m.IsValid() {
+ return make([]reflect.Value, 0), fmt.Errorf("method-not-found \"%s\"", funcName)
+ }
+ in := make([]reflect.Value, len(params))
+ for i, param := range params {
+ in[i] = reflect.ValueOf(param)
+ }
+ out = m.Call(in)
+ return
+}
+
+func (kp *interContainerProxy) addTransactionId(transactionId string, currentArgs []*ic.Argument) []*ic.Argument {
+ arg := &KVArg{
+ Key: TransactionKey,
+ Value: &ic.StrType{Val: transactionId},
+ }
+
+ var marshalledArg *any.Any
+ var err error
+ if marshalledArg, err = ptypes.MarshalAny(&ic.StrType{Val: transactionId}); err != nil {
+ logger.Warnw("cannot-add-transactionId", log.Fields{"error": err})
+ return currentArgs
+ }
+ protoArg := &ic.Argument{
+ Key: arg.Key,
+ Value: marshalledArg,
+ }
+ return append(currentArgs, protoArg)
+}
+
+func (kp *interContainerProxy) addFromTopic(fromTopic string, currentArgs []*ic.Argument) []*ic.Argument {
+ var marshalledArg *any.Any
+ var err error
+ if marshalledArg, err = ptypes.MarshalAny(&ic.StrType{Val: fromTopic}); err != nil {
+ logger.Warnw("cannot-add-transactionId", log.Fields{"error": err})
+ return currentArgs
+ }
+ protoArg := &ic.Argument{
+ Key: FromTopic,
+ Value: marshalledArg,
+ }
+ return append(currentArgs, protoArg)
+}
+
+func (kp *interContainerProxy) handleMessage(msg *ic.InterContainerMessage, targetInterface interface{}) {
+
+ // First extract the header to know whether this is a request - responses are handled by a different handler
+ if msg.Header.Type == ic.MessageType_REQUEST {
+ var out []reflect.Value
+ var err error
+
+ // Get the request body
+ requestBody := &ic.InterContainerRequestBody{}
+ if err = ptypes.UnmarshalAny(msg.Body, requestBody); err != nil {
+ logger.Warnw("cannot-unmarshal-request", log.Fields{"error": err})
+ } else {
+ logger.Debugw("received-request", log.Fields{"rpc": requestBody.Rpc, "header": msg.Header})
+ // let the callee unpack the arguments as its the only one that knows the real proto type
+ // Augment the requestBody with the message Id as it will be used in scenarios where cores
+ // are set in pairs and competing
+ requestBody.Args = kp.addTransactionId(msg.Header.Id, requestBody.Args)
+
+ // Augment the requestBody with the From topic name as it will be used in scenarios where a container
+ // needs to send an unsollicited message to the currently requested container
+ requestBody.Args = kp.addFromTopic(msg.Header.FromTopic, requestBody.Args)
+
+ out, err = CallFuncByName(targetInterface, requestBody.Rpc, requestBody.Args)
+ if err != nil {
+ logger.Warn(err)
+ }
+ }
+ // Response required?
+ if requestBody.ResponseRequired {
+ // If we already have an error before then just return that
+ var returnError *ic.Error
+ var returnedValues []interface{}
+ var success bool
+ if err != nil {
+ returnError = &ic.Error{Reason: err.Error()}
+ returnedValues = make([]interface{}, 1)
+ returnedValues[0] = returnError
+ } else {
+ returnedValues = make([]interface{}, 0)
+ // Check for errors first
+ lastIndex := len(out) - 1
+ if out[lastIndex].Interface() != nil { // Error
+ if retError, ok := out[lastIndex].Interface().(error); ok {
+ if retError.Error() == ErrorTransactionNotAcquired.Error() {
+ logger.Debugw("Ignoring request", log.Fields{"error": retError, "txId": msg.Header.Id})
+ return // Ignore - process is in competing mode and ignored transaction
+ }
+ returnError = &ic.Error{Reason: retError.Error()}
+ returnedValues = append(returnedValues, returnError)
+ } else { // Should never happen
+ returnError = &ic.Error{Reason: "incorrect-error-returns"}
+ returnedValues = append(returnedValues, returnError)
+ }
+ } else if len(out) == 2 && reflect.ValueOf(out[0].Interface()).IsValid() && reflect.ValueOf(out[0].Interface()).IsNil() {
+ logger.Warnw("Unexpected response of (nil,nil)", log.Fields{"txId": msg.Header.Id})
+ return // Ignore - should not happen
+ } else { // Non-error case
+ success = true
+ for idx, val := range out {
+ //logger.Debugw("returned-api-response-loop", log.Fields{"idx": idx, "val": val.Interface()})
+ if idx != lastIndex {
+ returnedValues = append(returnedValues, val.Interface())
+ }
+ }
+ }
+ }
+
+ var icm *ic.InterContainerMessage
+ if icm, err = encodeResponse(msg, success, returnedValues...); err != nil {
+ logger.Warnw("error-encoding-response-returning-failure-result", log.Fields{"error": err})
+ icm = encodeDefaultFailedResponse(msg)
+ }
+ // To preserve ordering of messages, all messages to a given topic are sent to the same partition
+ // by providing a message key. The key is encoded in the topic name. If the deviceId is not
+ // present then the key will be empty, hence all messages for a given topic will be sent to all
+ // partitions.
+ replyTopic := &Topic{Name: msg.Header.FromTopic}
+ key := msg.Header.KeyTopic
+ logger.Debugw("sending-response-to-kafka", log.Fields{"rpc": requestBody.Rpc, "header": icm.Header, "key": key})
+ // TODO: handle error response.
+ go kp.kafkaClient.Send(icm, replyTopic, key)
+ }
+ } else if msg.Header.Type == ic.MessageType_RESPONSE {
+ logger.Debugw("response-received", log.Fields{"msg-header": msg.Header})
+ go kp.dispatchResponse(msg)
+ } else {
+ logger.Warnw("unsupported-message-received", log.Fields{"msg-header": msg.Header})
+ }
+}
+
+func (kp *interContainerProxy) waitForMessages(ch <-chan *ic.InterContainerMessage, topic Topic, targetInterface interface{}) {
+ // Wait for messages
+ for msg := range ch {
+ //logger.Debugw("request-received", log.Fields{"msg": msg, "topic": topic.Name, "target": targetInterface})
+ go kp.handleMessage(msg, targetInterface)
+ }
+}
+
+func (kp *interContainerProxy) dispatchResponse(msg *ic.InterContainerMessage) {
+ kp.lockTransactionIdToChannelMap.RLock()
+ defer kp.lockTransactionIdToChannelMap.RUnlock()
+ if _, exist := kp.transactionIdToChannelMap[msg.Header.Id]; !exist {
+ logger.Debugw("no-waiting-channel", log.Fields{"transaction": msg.Header.Id})
+ return
+ }
+ kp.transactionIdToChannelMap[msg.Header.Id].ch <- msg
+}
+
+// subscribeForResponse allows a caller to subscribe to a given topic when waiting for a response.
+// This method is built to prevent all subscribers to receive all messages as is the case of the Subscribe
+// API. There is one response channel waiting for kafka messages before dispatching the message to the
+// corresponding waiting channel
+func (kp *interContainerProxy) subscribeForResponse(topic Topic, trnsId string) (chan *ic.InterContainerMessage, error) {
+ logger.Debugw("subscribeForResponse", log.Fields{"topic": topic.Name, "trnsid": trnsId})
+
+ // Create a specific channel for this consumers. We cannot use the channel from the kafkaclient as it will
+ // broadcast any message for this topic to all channels waiting on it.
+ ch := make(chan *ic.InterContainerMessage)
+ kp.addToTransactionIdToChannelMap(trnsId, &topic, ch)
+
+ return ch, nil
+}
+
+func (kp *interContainerProxy) unSubscribeForResponse(trnsId string) error {
+ logger.Debugw("unsubscribe-for-response", log.Fields{"trnsId": trnsId})
+ kp.deleteFromTransactionIdToChannelMap(trnsId)
+ return nil
+}
+
+func (kp *interContainerProxy) EnableLivenessChannel(enable bool) chan bool {
+ return kp.kafkaClient.EnableLivenessChannel(enable)
+}
+
+func (kp *interContainerProxy) EnableHealthinessChannel(enable bool) chan bool {
+ return kp.kafkaClient.EnableHealthinessChannel(enable)
+}
+
+func (kp *interContainerProxy) SendLiveness() error {
+ return kp.kafkaClient.SendLiveness()
+}
+
+//formatRequest formats a request to send over kafka and returns an InterContainerMessage message on success
+//or an error on failure
+func encodeRequest(rpc string, toTopic *Topic, replyTopic *Topic, key string, kvArgs ...*KVArg) (*ic.InterContainerMessage, error) {
+ requestHeader := &ic.Header{
+ Id: uuid.New().String(),
+ Type: ic.MessageType_REQUEST,
+ FromTopic: replyTopic.Name,
+ ToTopic: toTopic.Name,
+ KeyTopic: key,
+ Timestamp: time.Now().UnixNano(),
+ }
+ requestBody := &ic.InterContainerRequestBody{
+ Rpc: rpc,
+ ResponseRequired: true,
+ ReplyToTopic: replyTopic.Name,
+ }
+
+ for _, arg := range kvArgs {
+ if arg == nil {
+ // In case the caller sends an array with empty args
+ continue
+ }
+ var marshalledArg *any.Any
+ var err error
+ // ascertain the value interface type is a proto.Message
+ protoValue, ok := arg.Value.(proto.Message)
+ if !ok {
+ logger.Warnw("argument-value-not-proto-message", log.Fields{"error": ok, "Value": arg.Value})
+ err := errors.New("argument-value-not-proto-message")
+ return nil, err
+ }
+ if marshalledArg, err = ptypes.MarshalAny(protoValue); err != nil {
+ logger.Warnw("cannot-marshal-request", log.Fields{"error": err})
+ return nil, err
+ }
+ protoArg := &ic.Argument{
+ Key: arg.Key,
+ Value: marshalledArg,
+ }
+ requestBody.Args = append(requestBody.Args, protoArg)
+ }
+
+ var marshalledData *any.Any
+ var err error
+ if marshalledData, err = ptypes.MarshalAny(requestBody); err != nil {
+ logger.Warnw("cannot-marshal-request", log.Fields{"error": err})
+ return nil, err
+ }
+ request := &ic.InterContainerMessage{
+ Header: requestHeader,
+ Body: marshalledData,
+ }
+ return request, nil
+}
+
+func decodeResponse(response *ic.InterContainerMessage) (*ic.InterContainerResponseBody, error) {
+ // Extract the message body
+ responseBody := ic.InterContainerResponseBody{}
+ if err := ptypes.UnmarshalAny(response.Body, &responseBody); err != nil {
+ logger.Warnw("cannot-unmarshal-response", log.Fields{"error": err})
+ return nil, err
+ }
+ //logger.Debugw("response-decoded-successfully", log.Fields{"response-status": &responseBody.Success})
+
+ return &responseBody, nil
+
+}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/sarama_client.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/sarama_client.go
new file mode 100644
index 0000000..c0c16f9
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/sarama_client.go
@@ -0,0 +1,1171 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * 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.
+ */
+package kafka
+
+import (
+ "context"
+ "errors"
+ "fmt"
+ "strings"
+ "sync"
+ "time"
+
+ "github.com/Shopify/sarama"
+ scc "github.com/bsm/sarama-cluster"
+ "github.com/eapache/go-resiliency/breaker"
+ "github.com/golang/protobuf/proto"
+ "github.com/google/uuid"
+ "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ ic "github.com/opencord/voltha-protos/v3/go/inter_container"
+)
+
+type returnErrorFunction func() error
+
+// consumerChannels represents one or more consumers listening on a kafka topic. Once a message is received on that
+// topic, the consumer(s) broadcasts the message to all the listening channels. The consumer can be a partition
+//consumer or a group consumer
+type consumerChannels struct {
+ consumers []interface{}
+ channels []chan *ic.InterContainerMessage
+}
+
+// static check to ensure SaramaClient implements Client
+var _ Client = &SaramaClient{}
+
+// SaramaClient represents the messaging proxy
+type SaramaClient struct {
+ cAdmin sarama.ClusterAdmin
+ client sarama.Client
+ KafkaHost string
+ KafkaPort int
+ producer sarama.AsyncProducer
+ consumer sarama.Consumer
+ groupConsumers map[string]*scc.Consumer
+ lockOfGroupConsumers sync.RWMutex
+ consumerGroupPrefix string
+ consumerType int
+ consumerGroupName string
+ producerFlushFrequency int
+ producerFlushMessages int
+ producerFlushMaxmessages int
+ producerRetryMax int
+ producerRetryBackOff time.Duration
+ producerReturnSuccess bool
+ producerReturnErrors bool
+ consumerMaxwait int
+ maxProcessingTime int
+ numPartitions int
+ numReplicas int
+ autoCreateTopic bool
+ doneCh chan int
+ metadataCallback func(fromTopic string, timestamp int64)
+ topicToConsumerChannelMap map[string]*consumerChannels
+ lockTopicToConsumerChannelMap sync.RWMutex
+ topicLockMap map[string]*sync.RWMutex
+ lockOfTopicLockMap sync.RWMutex
+ metadataMaxRetry int
+ alive bool
+ liveness chan bool
+ livenessChannelInterval time.Duration
+ lastLivenessTime time.Time
+ started bool
+ healthy bool
+ healthiness chan bool
+}
+
+type SaramaClientOption func(*SaramaClient)
+
+func Host(host string) SaramaClientOption {
+ return func(args *SaramaClient) {
+ args.KafkaHost = host
+ }
+}
+
+func Port(port int) SaramaClientOption {
+ return func(args *SaramaClient) {
+ args.KafkaPort = port
+ }
+}
+
+func ConsumerGroupPrefix(prefix string) SaramaClientOption {
+ return func(args *SaramaClient) {
+ args.consumerGroupPrefix = prefix
+ }
+}
+
+func ConsumerGroupName(name string) SaramaClientOption {
+ return func(args *SaramaClient) {
+ args.consumerGroupName = name
+ }
+}
+
+func ConsumerType(consumer int) SaramaClientOption {
+ return func(args *SaramaClient) {
+ args.consumerType = consumer
+ }
+}
+
+func ProducerFlushFrequency(frequency int) SaramaClientOption {
+ return func(args *SaramaClient) {
+ args.producerFlushFrequency = frequency
+ }
+}
+
+func ProducerFlushMessages(num int) SaramaClientOption {
+ return func(args *SaramaClient) {
+ args.producerFlushMessages = num
+ }
+}
+
+func ProducerFlushMaxMessages(num int) SaramaClientOption {
+ return func(args *SaramaClient) {
+ args.producerFlushMaxmessages = num
+ }
+}
+
+func ProducerMaxRetries(num int) SaramaClientOption {
+ return func(args *SaramaClient) {
+ args.producerRetryMax = num
+ }
+}
+
+func ProducerRetryBackoff(duration time.Duration) SaramaClientOption {
+ return func(args *SaramaClient) {
+ args.producerRetryBackOff = duration
+ }
+}
+
+func ProducerReturnOnErrors(opt bool) SaramaClientOption {
+ return func(args *SaramaClient) {
+ args.producerReturnErrors = opt
+ }
+}
+
+func ProducerReturnOnSuccess(opt bool) SaramaClientOption {
+ return func(args *SaramaClient) {
+ args.producerReturnSuccess = opt
+ }
+}
+
+func ConsumerMaxWait(wait int) SaramaClientOption {
+ return func(args *SaramaClient) {
+ args.consumerMaxwait = wait
+ }
+}
+
+func MaxProcessingTime(pTime int) SaramaClientOption {
+ return func(args *SaramaClient) {
+ args.maxProcessingTime = pTime
+ }
+}
+
+func NumPartitions(number int) SaramaClientOption {
+ return func(args *SaramaClient) {
+ args.numPartitions = number
+ }
+}
+
+func NumReplicas(number int) SaramaClientOption {
+ return func(args *SaramaClient) {
+ args.numReplicas = number
+ }
+}
+
+func AutoCreateTopic(opt bool) SaramaClientOption {
+ return func(args *SaramaClient) {
+ args.autoCreateTopic = opt
+ }
+}
+
+func MetadatMaxRetries(retry int) SaramaClientOption {
+ return func(args *SaramaClient) {
+ args.metadataMaxRetry = retry
+ }
+}
+
+func LivenessChannelInterval(opt time.Duration) SaramaClientOption {
+ return func(args *SaramaClient) {
+ args.livenessChannelInterval = opt
+ }
+}
+
+func NewSaramaClient(opts ...SaramaClientOption) *SaramaClient {
+ client := &SaramaClient{
+ KafkaHost: DefaultKafkaHost,
+ KafkaPort: DefaultKafkaPort,
+ }
+ client.consumerType = DefaultConsumerType
+ client.producerFlushFrequency = DefaultProducerFlushFrequency
+ client.producerFlushMessages = DefaultProducerFlushMessages
+ client.producerFlushMaxmessages = DefaultProducerFlushMaxmessages
+ client.producerReturnErrors = DefaultProducerReturnErrors
+ client.producerReturnSuccess = DefaultProducerReturnSuccess
+ client.producerRetryMax = DefaultProducerRetryMax
+ client.producerRetryBackOff = DefaultProducerRetryBackoff
+ client.consumerMaxwait = DefaultConsumerMaxwait
+ client.maxProcessingTime = DefaultMaxProcessingTime
+ client.numPartitions = DefaultNumberPartitions
+ client.numReplicas = DefaultNumberReplicas
+ client.autoCreateTopic = DefaultAutoCreateTopic
+ client.metadataMaxRetry = DefaultMetadataMaxRetry
+ client.livenessChannelInterval = DefaultLivenessChannelInterval
+
+ for _, option := range opts {
+ option(client)
+ }
+
+ client.groupConsumers = make(map[string]*scc.Consumer)
+
+ client.lockTopicToConsumerChannelMap = sync.RWMutex{}
+ client.topicLockMap = make(map[string]*sync.RWMutex)
+ client.lockOfTopicLockMap = sync.RWMutex{}
+ client.lockOfGroupConsumers = sync.RWMutex{}
+
+ // healthy and alive until proven otherwise
+ client.alive = true
+ client.healthy = true
+
+ return client
+}
+
+func (sc *SaramaClient) Start() error {
+ logger.Info("Starting-kafka-sarama-client")
+
+ // Create the Done channel
+ sc.doneCh = make(chan int, 1)
+
+ var err error
+
+ // Add a cleanup in case of failure to startup
+ defer func() {
+ if err != nil {
+ sc.Stop()
+ }
+ }()
+
+ // Create the Cluster Admin
+ if err = sc.createClusterAdmin(); err != nil {
+ logger.Errorw("Cannot-create-cluster-admin", log.Fields{"error": err})
+ return err
+ }
+
+ // Create the Publisher
+ if err := sc.createPublisher(); err != nil {
+ logger.Errorw("Cannot-create-kafka-publisher", log.Fields{"error": err})
+ return err
+ }
+
+ if sc.consumerType == DefaultConsumerType {
+ // Create the master consumers
+ if err := sc.createConsumer(); err != nil {
+ logger.Errorw("Cannot-create-kafka-consumers", log.Fields{"error": err})
+ return err
+ }
+ }
+
+ // Create the topic to consumers/channel map
+ sc.topicToConsumerChannelMap = make(map[string]*consumerChannels)
+
+ logger.Info("kafka-sarama-client-started")
+
+ sc.started = true
+
+ return nil
+}
+
+func (sc *SaramaClient) Stop() {
+ logger.Info("stopping-sarama-client")
+
+ sc.started = false
+
+ //Send a message over the done channel to close all long running routines
+ sc.doneCh <- 1
+
+ if sc.producer != nil {
+ if err := sc.producer.Close(); err != nil {
+ logger.Errorw("closing-producer-failed", log.Fields{"error": err})
+ }
+ }
+
+ if sc.consumer != nil {
+ if err := sc.consumer.Close(); err != nil {
+ logger.Errorw("closing-partition-consumer-failed", log.Fields{"error": err})
+ }
+ }
+
+ for key, val := range sc.groupConsumers {
+ logger.Debugw("closing-group-consumer", log.Fields{"topic": key})
+ if err := val.Close(); err != nil {
+ logger.Errorw("closing-group-consumer-failed", log.Fields{"error": err, "topic": key})
+ }
+ }
+
+ if sc.cAdmin != nil {
+ if err := sc.cAdmin.Close(); err != nil {
+ logger.Errorw("closing-cluster-admin-failed", log.Fields{"error": err})
+ }
+ }
+
+ //TODO: Clear the consumers map
+ //sc.clearConsumerChannelMap()
+
+ logger.Info("sarama-client-stopped")
+}
+
+//createTopic is an internal function to create a topic on the Kafka Broker. No locking is required as
+// the invoking function must hold the lock
+func (sc *SaramaClient) createTopic(topic *Topic, numPartition int, repFactor int) error {
+ // Set the topic details
+ topicDetail := &sarama.TopicDetail{}
+ topicDetail.NumPartitions = int32(numPartition)
+ topicDetail.ReplicationFactor = int16(repFactor)
+ topicDetail.ConfigEntries = make(map[string]*string)
+ topicDetails := make(map[string]*sarama.TopicDetail)
+ topicDetails[topic.Name] = topicDetail
+
+ if err := sc.cAdmin.CreateTopic(topic.Name, topicDetail, false); err != nil {
+ if err == sarama.ErrTopicAlreadyExists {
+ // Not an error
+ logger.Debugw("topic-already-exist", log.Fields{"topic": topic.Name})
+ return nil
+ }
+ logger.Errorw("create-topic-failure", log.Fields{"error": err})
+ return err
+ }
+ // TODO: Wait until the topic has been created. No API is available in the Sarama clusterAdmin to
+ // do so.
+ logger.Debugw("topic-created", log.Fields{"topic": topic, "numPartition": numPartition, "replicationFactor": repFactor})
+ return nil
+}
+
+//CreateTopic is a public API to create a topic on the Kafka Broker. It uses a lock on a specific topic to
+// ensure no two go routines are performing operations on the same topic
+func (sc *SaramaClient) CreateTopic(topic *Topic, numPartition int, repFactor int) error {
+ sc.lockTopic(topic)
+ defer sc.unLockTopic(topic)
+
+ return sc.createTopic(topic, numPartition, repFactor)
+}
+
+//DeleteTopic removes a topic from the kafka Broker
+func (sc *SaramaClient) DeleteTopic(topic *Topic) error {
+ sc.lockTopic(topic)
+ defer sc.unLockTopic(topic)
+
+ // Remove the topic from the broker
+ if err := sc.cAdmin.DeleteTopic(topic.Name); err != nil {
+ if err == sarama.ErrUnknownTopicOrPartition {
+ // Not an error as does not exist
+ logger.Debugw("topic-not-exist", log.Fields{"topic": topic.Name})
+ return nil
+ }
+ logger.Errorw("delete-topic-failed", log.Fields{"topic": topic, "error": err})
+ return err
+ }
+
+ // Clear the topic from the consumer channel. This will also close any consumers listening on that topic.
+ if err := sc.clearTopicFromConsumerChannelMap(*topic); err != nil {
+ logger.Errorw("failure-clearing-channels", log.Fields{"topic": topic, "error": err})
+ return err
+ }
+ return nil
+}
+
+// Subscribe registers a caller to a topic. It returns a channel that the caller can use to receive
+// messages from that topic
+func (sc *SaramaClient) Subscribe(topic *Topic, kvArgs ...*KVArg) (<-chan *ic.InterContainerMessage, error) {
+ sc.lockTopic(topic)
+ defer sc.unLockTopic(topic)
+
+ logger.Debugw("subscribe", log.Fields{"topic": topic.Name})
+
+ // If a consumers already exist for that topic then resuse it
+ if consumerCh := sc.getConsumerChannel(topic); consumerCh != nil {
+ logger.Debugw("topic-already-subscribed", log.Fields{"topic": topic.Name})
+ // Create a channel specific for that consumers and add it to the consumers channel map
+ ch := make(chan *ic.InterContainerMessage)
+ sc.addChannelToConsumerChannelMap(topic, ch)
+ return ch, nil
+ }
+
+ // Register for the topic and set it up
+ var consumerListeningChannel chan *ic.InterContainerMessage
+ var err error
+
+ // Use the consumerType option to figure out the type of consumer to launch
+ if sc.consumerType == PartitionConsumer {
+ if sc.autoCreateTopic {
+ if err = sc.createTopic(topic, sc.numPartitions, sc.numReplicas); err != nil {
+ logger.Errorw("create-topic-failure", log.Fields{"error": err, "topic": topic.Name})
+ return nil, err
+ }
+ }
+ if consumerListeningChannel, err = sc.setupPartitionConsumerChannel(topic, getOffset(kvArgs...)); err != nil {
+ logger.Warnw("create-consumers-channel-failure", log.Fields{"error": err, "topic": topic.Name})
+ return nil, err
+ }
+ } else if sc.consumerType == GroupCustomer {
+ // TODO: create topic if auto create is on. There is an issue with the sarama cluster library that
+ // does not consume from a precreated topic in some scenarios
+ //if sc.autoCreateTopic {
+ // if err = sc.createTopic(topic, sc.numPartitions, sc.numReplicas); err != nil {
+ // logger.Errorw("create-topic-failure", logger.Fields{"error": err, "topic": topic.Name})
+ // return nil, err
+ // }
+ //}
+ //groupId := sc.consumerGroupName
+ groupId := getGroupId(kvArgs...)
+ // Include the group prefix
+ if groupId != "" {
+ groupId = sc.consumerGroupPrefix + groupId
+ } else {
+ // Need to use a unique group Id per topic
+ groupId = sc.consumerGroupPrefix + topic.Name
+ }
+ if consumerListeningChannel, err = sc.setupGroupConsumerChannel(topic, groupId, getOffset(kvArgs...)); err != nil {
+ logger.Warnw("create-consumers-channel-failure", log.Fields{"error": err, "topic": topic.Name, "groupId": groupId})
+ return nil, err
+ }
+
+ } else {
+ logger.Warnw("unknown-consumer-type", log.Fields{"consumer-type": sc.consumerType})
+ return nil, errors.New("unknown-consumer-type")
+ }
+
+ return consumerListeningChannel, nil
+}
+
+//UnSubscribe unsubscribe a consumer from a given topic
+func (sc *SaramaClient) UnSubscribe(topic *Topic, ch <-chan *ic.InterContainerMessage) error {
+ sc.lockTopic(topic)
+ defer sc.unLockTopic(topic)
+
+ logger.Debugw("unsubscribing-channel-from-topic", log.Fields{"topic": topic.Name})
+ var err error
+ if err = sc.removeChannelFromConsumerChannelMap(*topic, ch); err != nil {
+ logger.Errorw("failed-removing-channel", log.Fields{"error": err})
+ }
+ if err = sc.deleteFromGroupConsumers(topic.Name); err != nil {
+ logger.Errorw("failed-deleting-group-consumer", log.Fields{"error": err})
+ }
+ return err
+}
+
+func (sc *SaramaClient) SubscribeForMetadata(callback func(fromTopic string, timestamp int64)) {
+ sc.metadataCallback = callback
+}
+
+func (sc *SaramaClient) updateLiveness(alive bool) {
+ // Post a consistent stream of liveness data to the channel,
+ // so that in a live state, the core does not timeout and
+ // send a forced liveness message. Production of liveness
+ // events to the channel is rate-limited by livenessChannelInterval.
+ if sc.liveness != nil {
+ if sc.alive != alive {
+ logger.Info("update-liveness-channel-because-change")
+ sc.liveness <- alive
+ sc.lastLivenessTime = time.Now()
+ } else if time.Now().Sub(sc.lastLivenessTime) > sc.livenessChannelInterval {
+ logger.Info("update-liveness-channel-because-interval")
+ sc.liveness <- alive
+ sc.lastLivenessTime = time.Now()
+ }
+ }
+
+ // Only emit a log message when the state changes
+ if sc.alive != alive {
+ logger.Info("set-client-alive", log.Fields{"alive": alive})
+ sc.alive = alive
+ }
+}
+
+// Once unhealthy, we never go back
+func (sc *SaramaClient) setUnhealthy() {
+ sc.healthy = false
+ if sc.healthiness != nil {
+ logger.Infow("set-client-unhealthy", log.Fields{"healthy": sc.healthy})
+ sc.healthiness <- sc.healthy
+ }
+}
+
+func (sc *SaramaClient) isLivenessError(err error) bool {
+ // Sarama producers and consumers encapsulate the error inside
+ // a ProducerError or ConsumerError struct.
+ if prodError, ok := err.(*sarama.ProducerError); ok {
+ err = prodError.Err
+ } else if consumerError, ok := err.(*sarama.ConsumerError); ok {
+ err = consumerError.Err
+ }
+
+ // Sarama-Cluster will compose the error into a ClusterError struct,
+ // which we can't do a compare by reference. To handle that, we the
+ // best we can do is compare the error strings.
+
+ switch err.Error() {
+ case context.DeadlineExceeded.Error():
+ logger.Info("is-liveness-error-timeout")
+ return true
+ case sarama.ErrOutOfBrokers.Error(): // "Kafka: client has run out of available brokers"
+ logger.Info("is-liveness-error-no-brokers")
+ return true
+ case sarama.ErrShuttingDown.Error(): // "Kafka: message received by producer in process of shutting down"
+ logger.Info("is-liveness-error-shutting-down")
+ return true
+ case sarama.ErrControllerNotAvailable.Error(): // "Kafka: controller is not available"
+ logger.Info("is-liveness-error-not-available")
+ return true
+ case breaker.ErrBreakerOpen.Error(): // "circuit breaker is open"
+ logger.Info("is-liveness-error-circuit-breaker-open")
+ return true
+ }
+
+ if strings.HasSuffix(err.Error(), "connection refused") { // "dial tcp 10.244.1.176:9092: connect: connection refused"
+ logger.Info("is-liveness-error-connection-refused")
+ return true
+ }
+
+ if strings.HasSuffix(err.Error(), "i/o timeout") { // "dial tcp 10.244.1.176:9092: i/o timeout"
+ logger.Info("is-liveness-error-io-timeout")
+ return true
+ }
+
+ // Other errors shouldn't trigger a loss of liveness
+
+ logger.Infow("is-liveness-error-ignored", log.Fields{"err": err})
+
+ return false
+}
+
+// send formats and sends the request onto the kafka messaging bus.
+func (sc *SaramaClient) Send(msg interface{}, topic *Topic, keys ...string) error {
+
+ // Assert message is a proto message
+ var protoMsg proto.Message
+ var ok bool
+ // ascertain the value interface type is a proto.Message
+ if protoMsg, ok = msg.(proto.Message); !ok {
+ logger.Warnw("message-not-proto-message", log.Fields{"msg": msg})
+ return errors.New(fmt.Sprintf("not-a-proto-msg-%s", msg))
+ }
+
+ var marshalled []byte
+ var err error
+ // Create the Sarama producer message
+ if marshalled, err = proto.Marshal(protoMsg); err != nil {
+ logger.Errorw("marshalling-failed", log.Fields{"msg": protoMsg, "error": err})
+ return err
+ }
+ key := ""
+ if len(keys) > 0 {
+ key = keys[0] // Only the first key is relevant
+ }
+ kafkaMsg := &sarama.ProducerMessage{
+ Topic: topic.Name,
+ Key: sarama.StringEncoder(key),
+ Value: sarama.ByteEncoder(marshalled),
+ }
+
+ // Send message to kafka
+ sc.producer.Input() <- kafkaMsg
+ // Wait for result
+ // TODO: Use a lock or a different mechanism to ensure the response received corresponds to the message sent.
+ select {
+ case ok := <-sc.producer.Successes():
+ logger.Debugw("message-sent", log.Fields{"status": ok.Topic})
+ sc.updateLiveness(true)
+ case notOk := <-sc.producer.Errors():
+ logger.Debugw("error-sending", log.Fields{"status": notOk})
+ if sc.isLivenessError(notOk) {
+ sc.updateLiveness(false)
+ }
+ return notOk
+ }
+ return nil
+}
+
+// Enable the liveness monitor channel. This channel will report
+// a "true" or "false" on every publish, which indicates whether
+// or not the channel is still live. This channel is then picked up
+// by the service (i.e. rw_core / ro_core) to update readiness status
+// and/or take other actions.
+func (sc *SaramaClient) EnableLivenessChannel(enable bool) chan bool {
+ logger.Infow("kafka-enable-liveness-channel", log.Fields{"enable": enable})
+ if enable {
+ if sc.liveness == nil {
+ logger.Info("kafka-create-liveness-channel")
+ // At least 1, so we can immediately post to it without blocking
+ // Setting a bigger number (10) allows the monitor to fall behind
+ // without blocking others. The monitor shouldn't really fall
+ // behind...
+ sc.liveness = make(chan bool, 10)
+ // post intial state to the channel
+ sc.liveness <- sc.alive
+ }
+ } else {
+ // TODO: Think about whether we need the ability to turn off
+ // liveness monitoring
+ panic("Turning off liveness reporting is not supported")
+ }
+ return sc.liveness
+}
+
+// Enable the Healthiness monitor channel. This channel will report "false"
+// if the kafka consumers die, or some other problem occurs which is
+// catastrophic that would require re-creating the client.
+func (sc *SaramaClient) EnableHealthinessChannel(enable bool) chan bool {
+ logger.Infow("kafka-enable-healthiness-channel", log.Fields{"enable": enable})
+ if enable {
+ if sc.healthiness == nil {
+ logger.Info("kafka-create-healthiness-channel")
+ // At least 1, so we can immediately post to it without blocking
+ // Setting a bigger number (10) allows the monitor to fall behind
+ // without blocking others. The monitor shouldn't really fall
+ // behind...
+ sc.healthiness = make(chan bool, 10)
+ // post intial state to the channel
+ sc.healthiness <- sc.healthy
+ }
+ } else {
+ // TODO: Think about whether we need the ability to turn off
+ // liveness monitoring
+ panic("Turning off healthiness reporting is not supported")
+ }
+ return sc.healthiness
+}
+
+// send an empty message on the liveness channel to check whether connectivity has
+// been restored.
+func (sc *SaramaClient) SendLiveness() error {
+ if !sc.started {
+ return fmt.Errorf("SendLiveness() called while not started")
+ }
+
+ kafkaMsg := &sarama.ProducerMessage{
+ Topic: "_liveness_test",
+ Value: sarama.StringEncoder(time.Now().Format(time.RFC3339)), // for debugging / informative use
+ }
+
+ // Send message to kafka
+ sc.producer.Input() <- kafkaMsg
+ // Wait for result
+ // TODO: Use a lock or a different mechanism to ensure the response received corresponds to the message sent.
+ select {
+ case ok := <-sc.producer.Successes():
+ logger.Debugw("liveness-message-sent", log.Fields{"status": ok.Topic})
+ sc.updateLiveness(true)
+ case notOk := <-sc.producer.Errors():
+ logger.Debugw("liveness-error-sending", log.Fields{"status": notOk})
+ if sc.isLivenessError(notOk) {
+ sc.updateLiveness(false)
+ }
+ return notOk
+ }
+ return nil
+}
+
+// getGroupId returns the group id from the key-value args.
+func getGroupId(kvArgs ...*KVArg) string {
+ for _, arg := range kvArgs {
+ if arg.Key == GroupIdKey {
+ return arg.Value.(string)
+ }
+ }
+ return ""
+}
+
+// getOffset returns the offset from the key-value args.
+func getOffset(kvArgs ...*KVArg) int64 {
+ for _, arg := range kvArgs {
+ if arg.Key == Offset {
+ return arg.Value.(int64)
+ }
+ }
+ return sarama.OffsetNewest
+}
+
+func (sc *SaramaClient) createClusterAdmin() error {
+ kafkaFullAddr := fmt.Sprintf("%s:%d", sc.KafkaHost, sc.KafkaPort)
+ config := sarama.NewConfig()
+ config.Version = sarama.V1_0_0_0
+
+ // Create a cluster Admin
+ var cAdmin sarama.ClusterAdmin
+ var err error
+ if cAdmin, err = sarama.NewClusterAdmin([]string{kafkaFullAddr}, config); err != nil {
+ logger.Errorw("cluster-admin-failure", log.Fields{"error": err, "broker-address": kafkaFullAddr})
+ return err
+ }
+ sc.cAdmin = cAdmin
+ return nil
+}
+
+func (sc *SaramaClient) lockTopic(topic *Topic) {
+ sc.lockOfTopicLockMap.Lock()
+ if _, exist := sc.topicLockMap[topic.Name]; exist {
+ sc.lockOfTopicLockMap.Unlock()
+ sc.topicLockMap[topic.Name].Lock()
+ } else {
+ sc.topicLockMap[topic.Name] = &sync.RWMutex{}
+ sc.lockOfTopicLockMap.Unlock()
+ sc.topicLockMap[topic.Name].Lock()
+ }
+}
+
+func (sc *SaramaClient) unLockTopic(topic *Topic) {
+ sc.lockOfTopicLockMap.Lock()
+ defer sc.lockOfTopicLockMap.Unlock()
+ if _, exist := sc.topicLockMap[topic.Name]; exist {
+ sc.topicLockMap[topic.Name].Unlock()
+ }
+}
+
+func (sc *SaramaClient) addTopicToConsumerChannelMap(id string, arg *consumerChannels) {
+ sc.lockTopicToConsumerChannelMap.Lock()
+ defer sc.lockTopicToConsumerChannelMap.Unlock()
+ if _, exist := sc.topicToConsumerChannelMap[id]; !exist {
+ sc.topicToConsumerChannelMap[id] = arg
+ }
+}
+
+func (sc *SaramaClient) deleteFromTopicToConsumerChannelMap(id string) {
+ sc.lockTopicToConsumerChannelMap.Lock()
+ defer sc.lockTopicToConsumerChannelMap.Unlock()
+ if _, exist := sc.topicToConsumerChannelMap[id]; exist {
+ delete(sc.topicToConsumerChannelMap, id)
+ }
+}
+
+func (sc *SaramaClient) getConsumerChannel(topic *Topic) *consumerChannels {
+ sc.lockTopicToConsumerChannelMap.RLock()
+ defer sc.lockTopicToConsumerChannelMap.RUnlock()
+
+ if consumerCh, exist := sc.topicToConsumerChannelMap[topic.Name]; exist {
+ return consumerCh
+ }
+ return nil
+}
+
+func (sc *SaramaClient) addChannelToConsumerChannelMap(topic *Topic, ch chan *ic.InterContainerMessage) {
+ sc.lockTopicToConsumerChannelMap.Lock()
+ defer sc.lockTopicToConsumerChannelMap.Unlock()
+ if consumerCh, exist := sc.topicToConsumerChannelMap[topic.Name]; exist {
+ consumerCh.channels = append(consumerCh.channels, ch)
+ return
+ }
+ logger.Warnw("consumers-channel-not-exist", log.Fields{"topic": topic.Name})
+}
+
+//closeConsumers closes a list of sarama consumers. The consumers can either be a partition consumers or a group consumers
+func closeConsumers(consumers []interface{}) error {
+ var err error
+ for _, consumer := range consumers {
+ // Is it a partition consumers?
+ if partionConsumer, ok := consumer.(sarama.PartitionConsumer); ok {
+ if errTemp := partionConsumer.Close(); errTemp != nil {
+ logger.Debugw("partition!!!", log.Fields{"err": errTemp})
+ if strings.Compare(errTemp.Error(), sarama.ErrUnknownTopicOrPartition.Error()) == 0 {
+ // This can occur on race condition
+ err = nil
+ } else {
+ err = errTemp
+ }
+ }
+ } else if groupConsumer, ok := consumer.(*scc.Consumer); ok {
+ if errTemp := groupConsumer.Close(); errTemp != nil {
+ if strings.Compare(errTemp.Error(), sarama.ErrUnknownTopicOrPartition.Error()) == 0 {
+ // This can occur on race condition
+ err = nil
+ } else {
+ err = errTemp
+ }
+ }
+ }
+ }
+ return err
+}
+
+func (sc *SaramaClient) removeChannelFromConsumerChannelMap(topic Topic, ch <-chan *ic.InterContainerMessage) error {
+ sc.lockTopicToConsumerChannelMap.Lock()
+ defer sc.lockTopicToConsumerChannelMap.Unlock()
+ if consumerCh, exist := sc.topicToConsumerChannelMap[topic.Name]; exist {
+ // Channel will be closed in the removeChannel method
+ consumerCh.channels = removeChannel(consumerCh.channels, ch)
+ // If there are no more channels then we can close the consumers itself
+ if len(consumerCh.channels) == 0 {
+ logger.Debugw("closing-consumers", log.Fields{"topic": topic})
+ err := closeConsumers(consumerCh.consumers)
+ //err := consumerCh.consumers.Close()
+ delete(sc.topicToConsumerChannelMap, topic.Name)
+ return err
+ }
+ return nil
+ }
+ logger.Warnw("topic-does-not-exist", log.Fields{"topic": topic.Name})
+ return errors.New("topic-does-not-exist")
+}
+
+func (sc *SaramaClient) clearTopicFromConsumerChannelMap(topic Topic) error {
+ sc.lockTopicToConsumerChannelMap.Lock()
+ defer sc.lockTopicToConsumerChannelMap.Unlock()
+ if consumerCh, exist := sc.topicToConsumerChannelMap[topic.Name]; exist {
+ for _, ch := range consumerCh.channels {
+ // Channel will be closed in the removeChannel method
+ removeChannel(consumerCh.channels, ch)
+ }
+ err := closeConsumers(consumerCh.consumers)
+ //if err == sarama.ErrUnknownTopicOrPartition {
+ // // Not an error
+ // err = nil
+ //}
+ //err := consumerCh.consumers.Close()
+ delete(sc.topicToConsumerChannelMap, topic.Name)
+ return err
+ }
+ logger.Debugw("topic-does-not-exist", log.Fields{"topic": topic.Name})
+ return nil
+}
+
+func (sc *SaramaClient) clearConsumerChannelMap() error {
+ sc.lockTopicToConsumerChannelMap.Lock()
+ defer sc.lockTopicToConsumerChannelMap.Unlock()
+ var err error
+ for topic, consumerCh := range sc.topicToConsumerChannelMap {
+ for _, ch := range consumerCh.channels {
+ // Channel will be closed in the removeChannel method
+ removeChannel(consumerCh.channels, ch)
+ }
+ if errTemp := closeConsumers(consumerCh.consumers); errTemp != nil {
+ err = errTemp
+ }
+ //err = consumerCh.consumers.Close()
+ delete(sc.topicToConsumerChannelMap, topic)
+ }
+ return err
+}
+
+//createPublisher creates the publisher which is used to send a message onto kafka
+func (sc *SaramaClient) createPublisher() error {
+ // This Creates the publisher
+ config := sarama.NewConfig()
+ config.Producer.Partitioner = sarama.NewRandomPartitioner
+ config.Producer.Flush.Frequency = time.Duration(sc.producerFlushFrequency)
+ config.Producer.Flush.Messages = sc.producerFlushMessages
+ config.Producer.Flush.MaxMessages = sc.producerFlushMaxmessages
+ config.Producer.Return.Errors = sc.producerReturnErrors
+ config.Producer.Return.Successes = sc.producerReturnSuccess
+ //config.Producer.RequiredAcks = sarama.WaitForAll
+ config.Producer.RequiredAcks = sarama.WaitForLocal
+
+ kafkaFullAddr := fmt.Sprintf("%s:%d", sc.KafkaHost, sc.KafkaPort)
+ brokers := []string{kafkaFullAddr}
+
+ if producer, err := sarama.NewAsyncProducer(brokers, config); err != nil {
+ logger.Errorw("error-starting-publisher", log.Fields{"error": err})
+ return err
+ } else {
+ sc.producer = producer
+ }
+ logger.Info("Kafka-publisher-created")
+ return nil
+}
+
+func (sc *SaramaClient) createConsumer() error {
+ config := sarama.NewConfig()
+ config.Consumer.Return.Errors = true
+ config.Consumer.Fetch.Min = 1
+ config.Consumer.MaxWaitTime = time.Duration(sc.consumerMaxwait) * time.Millisecond
+ config.Consumer.MaxProcessingTime = time.Duration(sc.maxProcessingTime) * time.Millisecond
+ config.Consumer.Offsets.Initial = sarama.OffsetNewest
+ config.Metadata.Retry.Max = sc.metadataMaxRetry
+ kafkaFullAddr := fmt.Sprintf("%s:%d", sc.KafkaHost, sc.KafkaPort)
+ brokers := []string{kafkaFullAddr}
+
+ if consumer, err := sarama.NewConsumer(brokers, config); err != nil {
+ logger.Errorw("error-starting-consumers", log.Fields{"error": err})
+ return err
+ } else {
+ sc.consumer = consumer
+ }
+ logger.Info("Kafka-consumers-created")
+ return nil
+}
+
+// createGroupConsumer creates a consumers group
+func (sc *SaramaClient) createGroupConsumer(topic *Topic, groupId string, initialOffset int64, retries int) (*scc.Consumer, error) {
+ config := scc.NewConfig()
+ config.ClientID = uuid.New().String()
+ config.Group.Mode = scc.ConsumerModeMultiplex
+ config.Consumer.Group.Heartbeat.Interval, _ = time.ParseDuration("1s")
+ config.Consumer.Return.Errors = true
+ //config.Group.Return.Notifications = false
+ //config.Consumer.MaxWaitTime = time.Duration(DefaultConsumerMaxwait) * time.Millisecond
+ //config.Consumer.MaxProcessingTime = time.Duration(DefaultMaxProcessingTime) * time.Millisecond
+ config.Consumer.Offsets.Initial = initialOffset
+ //config.Consumer.Offsets.Initial = sarama.OffsetOldest
+ kafkaFullAddr := fmt.Sprintf("%s:%d", sc.KafkaHost, sc.KafkaPort)
+ brokers := []string{kafkaFullAddr}
+
+ topics := []string{topic.Name}
+ var consumer *scc.Consumer
+ var err error
+
+ if consumer, err = scc.NewConsumer(brokers, groupId, topics, config); err != nil {
+ logger.Errorw("create-group-consumers-failure", log.Fields{"error": err, "topic": topic.Name, "groupId": groupId})
+ return nil, err
+ }
+ logger.Debugw("create-group-consumers-success", log.Fields{"topic": topic.Name, "groupId": groupId})
+
+ //sc.groupConsumers[topic.Name] = consumer
+ sc.addToGroupConsumers(topic.Name, consumer)
+ return consumer, nil
+}
+
+// dispatchToConsumers sends the intercontainermessage received on a given topic to all subscribers for that
+// topic via the unique channel each subscriber received during subscription
+func (sc *SaramaClient) dispatchToConsumers(consumerCh *consumerChannels, protoMessage *ic.InterContainerMessage) {
+ // Need to go over all channels and publish messages to them - do we need to copy msg?
+ sc.lockTopicToConsumerChannelMap.RLock()
+ for _, ch := range consumerCh.channels {
+ go func(c chan *ic.InterContainerMessage) {
+ c <- protoMessage
+ }(ch)
+ }
+ sc.lockTopicToConsumerChannelMap.RUnlock()
+
+ if callback := sc.metadataCallback; callback != nil {
+ callback(protoMessage.Header.FromTopic, protoMessage.Header.Timestamp)
+ }
+}
+
+func (sc *SaramaClient) consumeFromAPartition(topic *Topic, consumer sarama.PartitionConsumer, consumerChnls *consumerChannels) {
+ logger.Debugw("starting-partition-consumption-loop", log.Fields{"topic": topic.Name})
+startloop:
+ for {
+ select {
+ case err, ok := <-consumer.Errors():
+ if ok {
+ if sc.isLivenessError(err) {
+ sc.updateLiveness(false)
+ logger.Warnw("partition-consumers-error", log.Fields{"error": err})
+ }
+ } else {
+ // Channel is closed
+ break startloop
+ }
+ case msg, ok := <-consumer.Messages():
+ //logger.Debugw("message-received", logger.Fields{"msg": msg, "receivedTopic": msg.Topic})
+ if !ok {
+ // channel is closed
+ break startloop
+ }
+ msgBody := msg.Value
+ sc.updateLiveness(true)
+ logger.Debugw("message-received", log.Fields{"timestamp": msg.Timestamp, "receivedTopic": msg.Topic})
+ icm := &ic.InterContainerMessage{}
+ if err := proto.Unmarshal(msgBody, icm); err != nil {
+ logger.Warnw("partition-invalid-message", log.Fields{"error": err})
+ continue
+ }
+ go sc.dispatchToConsumers(consumerChnls, icm)
+ case <-sc.doneCh:
+ logger.Infow("partition-received-exit-signal", log.Fields{"topic": topic.Name})
+ break startloop
+ }
+ }
+ logger.Infow("partition-consumer-stopped", log.Fields{"topic": topic.Name})
+ sc.setUnhealthy()
+}
+
+func (sc *SaramaClient) consumeGroupMessages(topic *Topic, consumer *scc.Consumer, consumerChnls *consumerChannels) {
+ logger.Debugw("starting-group-consumption-loop", log.Fields{"topic": topic.Name})
+
+startloop:
+ for {
+ select {
+ case err, ok := <-consumer.Errors():
+ if ok {
+ if sc.isLivenessError(err) {
+ sc.updateLiveness(false)
+ }
+ logger.Warnw("group-consumers-error", log.Fields{"topic": topic.Name, "error": err})
+ } else {
+ logger.Warnw("group-consumers-closed-err", log.Fields{"topic": topic.Name})
+ // channel is closed
+ break startloop
+ }
+ case msg, ok := <-consumer.Messages():
+ if !ok {
+ logger.Warnw("group-consumers-closed-msg", log.Fields{"topic": topic.Name})
+ // Channel closed
+ break startloop
+ }
+ sc.updateLiveness(true)
+ logger.Debugw("message-received", log.Fields{"timestamp": msg.Timestamp, "receivedTopic": msg.Topic})
+ msgBody := msg.Value
+ icm := &ic.InterContainerMessage{}
+ if err := proto.Unmarshal(msgBody, icm); err != nil {
+ logger.Warnw("invalid-message", log.Fields{"error": err})
+ continue
+ }
+ go sc.dispatchToConsumers(consumerChnls, icm)
+ consumer.MarkOffset(msg, "")
+ case ntf := <-consumer.Notifications():
+ logger.Debugw("group-received-notification", log.Fields{"notification": ntf})
+ case <-sc.doneCh:
+ logger.Infow("group-received-exit-signal", log.Fields{"topic": topic.Name})
+ break startloop
+ }
+ }
+ logger.Infow("group-consumer-stopped", log.Fields{"topic": topic.Name})
+ sc.setUnhealthy()
+}
+
+func (sc *SaramaClient) startConsumers(topic *Topic) error {
+ logger.Debugw("starting-consumers", log.Fields{"topic": topic.Name})
+ var consumerCh *consumerChannels
+ if consumerCh = sc.getConsumerChannel(topic); consumerCh == nil {
+ logger.Errorw("consumers-not-exist", log.Fields{"topic": topic.Name})
+ return errors.New("consumers-not-exist")
+ }
+ // For each consumer listening for that topic, start a consumption loop
+ for _, consumer := range consumerCh.consumers {
+ if pConsumer, ok := consumer.(sarama.PartitionConsumer); ok {
+ go sc.consumeFromAPartition(topic, pConsumer, consumerCh)
+ } else if gConsumer, ok := consumer.(*scc.Consumer); ok {
+ go sc.consumeGroupMessages(topic, gConsumer, consumerCh)
+ } else {
+ logger.Errorw("invalid-consumer", log.Fields{"topic": topic})
+ return errors.New("invalid-consumer")
+ }
+ }
+ return nil
+}
+
+//// setupConsumerChannel creates a consumerChannels object for that topic and add it to the consumerChannels map
+//// for that topic. It also starts the routine that listens for messages on that topic.
+func (sc *SaramaClient) setupPartitionConsumerChannel(topic *Topic, initialOffset int64) (chan *ic.InterContainerMessage, error) {
+ var pConsumers []sarama.PartitionConsumer
+ var err error
+
+ if pConsumers, err = sc.createPartitionConsumers(topic, initialOffset); err != nil {
+ logger.Errorw("creating-partition-consumers-failure", log.Fields{"error": err, "topic": topic.Name})
+ return nil, err
+ }
+
+ consumersIf := make([]interface{}, 0)
+ for _, pConsumer := range pConsumers {
+ consumersIf = append(consumersIf, pConsumer)
+ }
+
+ // Create the consumers/channel structure and set the consumers and create a channel on that topic - for now
+ // unbuffered to verify race conditions.
+ consumerListeningChannel := make(chan *ic.InterContainerMessage)
+ cc := &consumerChannels{
+ consumers: consumersIf,
+ channels: []chan *ic.InterContainerMessage{consumerListeningChannel},
+ }
+
+ // Add the consumers channel to the map
+ sc.addTopicToConsumerChannelMap(topic.Name, cc)
+
+ //Start a consumers to listen on that specific topic
+ go sc.startConsumers(topic)
+
+ return consumerListeningChannel, nil
+}
+
+// setupConsumerChannel creates a consumerChannels object for that topic and add it to the consumerChannels map
+// for that topic. It also starts the routine that listens for messages on that topic.
+func (sc *SaramaClient) setupGroupConsumerChannel(topic *Topic, groupId string, initialOffset int64) (chan *ic.InterContainerMessage, error) {
+ // TODO: Replace this development partition consumers with a group consumers
+ var pConsumer *scc.Consumer
+ var err error
+ if pConsumer, err = sc.createGroupConsumer(topic, groupId, initialOffset, DefaultMaxRetries); err != nil {
+ logger.Errorw("creating-partition-consumers-failure", log.Fields{"error": err, "topic": topic.Name})
+ return nil, err
+ }
+ // Create the consumers/channel structure and set the consumers and create a channel on that topic - for now
+ // unbuffered to verify race conditions.
+ consumerListeningChannel := make(chan *ic.InterContainerMessage)
+ cc := &consumerChannels{
+ consumers: []interface{}{pConsumer},
+ channels: []chan *ic.InterContainerMessage{consumerListeningChannel},
+ }
+
+ // Add the consumers channel to the map
+ sc.addTopicToConsumerChannelMap(topic.Name, cc)
+
+ //Start a consumers to listen on that specific topic
+ go sc.startConsumers(topic)
+
+ return consumerListeningChannel, nil
+}
+
+func (sc *SaramaClient) createPartitionConsumers(topic *Topic, initialOffset int64) ([]sarama.PartitionConsumer, error) {
+ logger.Debugw("creating-partition-consumers", log.Fields{"topic": topic.Name})
+ partitionList, err := sc.consumer.Partitions(topic.Name)
+ if err != nil {
+ logger.Warnw("get-partition-failure", log.Fields{"error": err, "topic": topic.Name})
+ return nil, err
+ }
+
+ pConsumers := make([]sarama.PartitionConsumer, 0)
+ for _, partition := range partitionList {
+ var pConsumer sarama.PartitionConsumer
+ if pConsumer, err = sc.consumer.ConsumePartition(topic.Name, partition, initialOffset); err != nil {
+ logger.Warnw("consumers-partition-failure", log.Fields{"error": err, "topic": topic.Name})
+ return nil, err
+ }
+ pConsumers = append(pConsumers, pConsumer)
+ }
+ return pConsumers, nil
+}
+
+func removeChannel(channels []chan *ic.InterContainerMessage, ch <-chan *ic.InterContainerMessage) []chan *ic.InterContainerMessage {
+ var i int
+ var channel chan *ic.InterContainerMessage
+ for i, channel = range channels {
+ if channel == ch {
+ channels[len(channels)-1], channels[i] = channels[i], channels[len(channels)-1]
+ close(channel)
+ logger.Debug("channel-closed")
+ return channels[:len(channels)-1]
+ }
+ }
+ return channels
+}
+
+func (sc *SaramaClient) addToGroupConsumers(topic string, consumer *scc.Consumer) {
+ sc.lockOfGroupConsumers.Lock()
+ defer sc.lockOfGroupConsumers.Unlock()
+ if _, exist := sc.groupConsumers[topic]; !exist {
+ sc.groupConsumers[topic] = consumer
+ }
+}
+
+func (sc *SaramaClient) deleteFromGroupConsumers(topic string) error {
+ sc.lockOfGroupConsumers.Lock()
+ defer sc.lockOfGroupConsumers.Unlock()
+ if _, exist := sc.groupConsumers[topic]; exist {
+ consumer := sc.groupConsumers[topic]
+ delete(sc.groupConsumers, topic)
+ if err := consumer.Close(); err != nil {
+ logger.Errorw("failure-closing-consumer", log.Fields{"error": err})
+ return err
+ }
+ }
+ return nil
+}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/utils.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/utils.go
new file mode 100644
index 0000000..0cb9535
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/utils.go
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * 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.
+ */
+package kafka
+
+import "strings"
+
+const (
+ TopicSeparator = "_"
+ DeviceIdLength = 24
+)
+
+// A Topic definition - may be augmented with additional attributes eventually
+type Topic struct {
+ // The name of the topic. It must start with a letter,
+ // and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),
+ // underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent
+ // signs (`%`).
+ Name string
+}
+
+type KVArg struct {
+ Key string
+ Value interface{}
+}
+
+// TODO: Remove and provide better may to get the device id
+// GetDeviceIdFromTopic extract the deviceId from the topic name. The topic name is formatted either as:
+// <any string> or <any string>_<deviceId>. The device Id is 24 characters long.
+func GetDeviceIdFromTopic(topic Topic) string {
+ pos := strings.LastIndex(topic.Name, TopicSeparator)
+ if pos == -1 {
+ return ""
+ }
+ adjustedPos := pos + len(TopicSeparator)
+ if adjustedPos >= len(topic.Name) {
+ return ""
+ }
+ deviceId := topic.Name[adjustedPos:len(topic.Name)]
+ if len(deviceId) != DeviceIdLength {
+ return ""
+ }
+ return deviceId
+}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/log/log.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/log/log.go
new file mode 100644
index 0000000..43567e3
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/log/log.go
@@ -0,0 +1,786 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * 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.
+ */
+
+//Package log provides a structured Logger interface implemented using zap logger. It provides the following capabilities:
+//1. Package level logging - a go package can register itself (AddPackage) and have a logger created for that package.
+//2. Dynamic log level change - for all registered packages (SetAllLogLevel)
+//3. Dynamic log level change - for a given package (SetPackageLogLevel)
+//4. Provides a default logger for unregistered packages
+//5. Allow key-value pairs to be added to a logger(UpdateLogger) or all loggers (UpdateAllLoggers) at run time
+//6. Add to the log output the location where the log was invoked (filename.functionname.linenumber)
+//
+// Using package-level logging (recommended approach). In the examples below, log refers to this log package.
+// 1. In the appropriate package add the following in the init section of the package. The log level can be changed
+// and any number of default fields can be added as well. The log level specifies the lowest log level that will be
+// in the output while the fields will be automatically added to all log printouts.
+//
+// log.AddPackage(mylog.JSON, log.WarnLevel, log.Fields{"anyFieldName": "any value"})
+//
+//2. In the calling package, just invoke any of the publicly available functions of the logger. Here is an example
+// to write an Info log with additional fields:
+//
+//log.Infow("An example", mylog.Fields{"myStringOutput": "output", "myIntOutput": 2})
+//
+//3. To dynamically change the log level, you can use 1)SetLogLevel from inside your package or 2) SetPackageLogLevel
+// from anywhere or 3) SetAllLogLevel from anywhere.
+//
+
+package log
+
+import (
+ "errors"
+ "fmt"
+ zp "go.uber.org/zap"
+ zc "go.uber.org/zap/zapcore"
+ "path"
+ "runtime"
+ "strings"
+)
+
+const (
+ // DebugLevel logs a message at debug level
+ DebugLevel = iota
+ // InfoLevel logs a message at info level
+ InfoLevel
+ // WarnLevel logs a message at warning level
+ WarnLevel
+ // ErrorLevel logs a message at error level
+ ErrorLevel
+ // FatalLevel logs a message, then calls os.Exit(1).
+ FatalLevel
+)
+
+// CONSOLE formats the log for the console, mostly used during development
+const CONSOLE = "console"
+
+// JSON formats the log using json format, mostly used by an automated logging system consumption
+const JSON = "json"
+
+// Logger represents an abstract logging interface. Any logging implementation used
+// will need to abide by this interface
+type Logger interface {
+ Debug(...interface{})
+ Debugln(...interface{})
+ Debugf(string, ...interface{})
+ Debugw(string, Fields)
+
+ Info(...interface{})
+ Infoln(...interface{})
+ Infof(string, ...interface{})
+ Infow(string, Fields)
+
+ Warn(...interface{})
+ Warnln(...interface{})
+ Warnf(string, ...interface{})
+ Warnw(string, Fields)
+
+ Error(...interface{})
+ Errorln(...interface{})
+ Errorf(string, ...interface{})
+ Errorw(string, Fields)
+
+ Fatal(...interface{})
+ Fatalln(...interface{})
+ Fatalf(string, ...interface{})
+ Fatalw(string, Fields)
+
+ With(Fields) Logger
+
+ // The following are added to be able to use this logger as a gRPC LoggerV2 if needed
+ //
+ Warning(...interface{})
+ Warningln(...interface{})
+ Warningf(string, ...interface{})
+
+ // V reports whether verbosity level l is at least the requested verbose level.
+ V(l int) bool
+
+ //Returns the log level of this specific logger
+ GetLogLevel() int
+}
+
+// Fields is used as key-value pairs for structured logging
+type Fields map[string]interface{}
+
+var defaultLogger *logger
+var cfg zp.Config
+
+var loggers map[string]*logger
+var cfgs map[string]zp.Config
+
+type logger struct {
+ log *zp.SugaredLogger
+ parent *zp.Logger
+ packageName string
+}
+
+func intToAtomicLevel(l int) zp.AtomicLevel {
+ switch l {
+ case DebugLevel:
+ return zp.NewAtomicLevelAt(zc.DebugLevel)
+ case InfoLevel:
+ return zp.NewAtomicLevelAt(zc.InfoLevel)
+ case WarnLevel:
+ return zp.NewAtomicLevelAt(zc.WarnLevel)
+ case ErrorLevel:
+ return zp.NewAtomicLevelAt(zc.ErrorLevel)
+ case FatalLevel:
+ return zp.NewAtomicLevelAt(zc.FatalLevel)
+ }
+ return zp.NewAtomicLevelAt(zc.ErrorLevel)
+}
+
+func intToLevel(l int) zc.Level {
+ switch l {
+ case DebugLevel:
+ return zc.DebugLevel
+ case InfoLevel:
+ return zc.InfoLevel
+ case WarnLevel:
+ return zc.WarnLevel
+ case ErrorLevel:
+ return zc.ErrorLevel
+ case FatalLevel:
+ return zc.FatalLevel
+ }
+ return zc.ErrorLevel
+}
+
+func levelToInt(l zc.Level) int {
+ switch l {
+ case zc.DebugLevel:
+ return DebugLevel
+ case zc.InfoLevel:
+ return InfoLevel
+ case zc.WarnLevel:
+ return WarnLevel
+ case zc.ErrorLevel:
+ return ErrorLevel
+ case zc.FatalLevel:
+ return FatalLevel
+ }
+ return ErrorLevel
+}
+
+func StringToInt(l string) int {
+ switch l {
+ case "DEBUG":
+ return DebugLevel
+ case "INFO":
+ return InfoLevel
+ case "WARN":
+ return WarnLevel
+ case "ERROR":
+ return ErrorLevel
+ case "FATAL":
+ return FatalLevel
+ }
+ return ErrorLevel
+}
+
+func getDefaultConfig(outputType string, level int, defaultFields Fields) zp.Config {
+ return zp.Config{
+ Level: intToAtomicLevel(level),
+ Encoding: outputType,
+ Development: true,
+ OutputPaths: []string{"stdout"},
+ ErrorOutputPaths: []string{"stderr"},
+ InitialFields: defaultFields,
+ EncoderConfig: zc.EncoderConfig{
+ LevelKey: "level",
+ MessageKey: "msg",
+ TimeKey: "ts",
+ StacktraceKey: "stacktrace",
+ LineEnding: zc.DefaultLineEnding,
+ EncodeLevel: zc.LowercaseLevelEncoder,
+ EncodeTime: zc.ISO8601TimeEncoder,
+ EncodeDuration: zc.SecondsDurationEncoder,
+ EncodeCaller: zc.ShortCallerEncoder,
+ },
+ }
+}
+
+// SetLogger needs to be invoked before the logger API can be invoked. This function
+// initialize the default logger (zap's sugaredlogger)
+func SetDefaultLogger(outputType string, level int, defaultFields Fields) (Logger, error) {
+ // Build a custom config using zap
+ cfg = getDefaultConfig(outputType, level, defaultFields)
+
+ l, err := cfg.Build()
+ if err != nil {
+ return nil, err
+ }
+
+ defaultLogger = &logger{
+ log: l.Sugar(),
+ parent: l,
+ }
+
+ return defaultLogger, nil
+}
+
+// AddPackage registers a package to the log map. Each package gets its own logger which allows
+// its config (loglevel) to be changed dynamically without interacting with the other packages.
+// outputType is JSON, level is the lowest level log to output with this logger and defaultFields is a map of
+// key-value pairs to always add to the output.
+// Note: AddPackage also returns a reference to the actual logger. If a calling package uses this reference directly
+//instead of using the publicly available functions in this log package then a number of functionalities will not
+// be available to it, notably log tracing with filename.functionname.linenumber annotation.
+//
+// pkgNames parameter should be used for testing only as this function detects the caller's package.
+func AddPackage(outputType string, level int, defaultFields Fields, pkgNames ...string) (Logger, error) {
+ if cfgs == nil {
+ cfgs = make(map[string]zp.Config)
+ }
+ if loggers == nil {
+ loggers = make(map[string]*logger)
+ }
+
+ var pkgName string
+ for _, name := range pkgNames {
+ pkgName = name
+ break
+ }
+ if pkgName == "" {
+ pkgName, _, _, _ = getCallerInfo()
+ }
+
+ if _, exist := loggers[pkgName]; exist {
+ return loggers[pkgName], nil
+ }
+
+ cfgs[pkgName] = getDefaultConfig(outputType, level, defaultFields)
+
+ l, err := cfgs[pkgName].Build()
+ if err != nil {
+ return nil, err
+ }
+
+ loggers[pkgName] = &logger{
+ log: l.Sugar(),
+ parent: l,
+ packageName: pkgName,
+ }
+ return loggers[pkgName], nil
+}
+
+//UpdateAllLoggers create new loggers for all registered pacakges with the defaultFields.
+func UpdateAllLoggers(defaultFields Fields) error {
+ for pkgName, cfg := range cfgs {
+ for k, v := range defaultFields {
+ if cfg.InitialFields == nil {
+ cfg.InitialFields = make(map[string]interface{})
+ }
+ cfg.InitialFields[k] = v
+ }
+ l, err := cfg.Build()
+ if err != nil {
+ return err
+ }
+
+ loggers[pkgName] = &logger{
+ log: l.Sugar(),
+ parent: l,
+ packageName: pkgName,
+ }
+ }
+ return nil
+}
+
+// Return a list of all packages that have individually-configured loggers
+func GetPackageNames() []string {
+ i := 0
+ keys := make([]string, len(loggers))
+ for k := range loggers {
+ keys[i] = k
+ i++
+ }
+ return keys
+}
+
+// UpdateLogger deletes the logger associated with a caller's package and creates a new logger with the
+// defaultFields. If a calling package is holding on to a Logger reference obtained from AddPackage invocation, then
+// that package needs to invoke UpdateLogger if it needs to make changes to the default fields and obtain a new logger
+// reference
+func UpdateLogger(defaultFields Fields) (Logger, error) {
+ pkgName, _, _, _ := getCallerInfo()
+ if _, exist := loggers[pkgName]; !exist {
+ return nil, errors.New(fmt.Sprintf("package-%s-not-registered", pkgName))
+ }
+
+ // Build a new logger
+ if _, exist := cfgs[pkgName]; !exist {
+ return nil, errors.New(fmt.Sprintf("config-%s-not-registered", pkgName))
+ }
+
+ cfg := cfgs[pkgName]
+ for k, v := range defaultFields {
+ if cfg.InitialFields == nil {
+ cfg.InitialFields = make(map[string]interface{})
+ }
+ cfg.InitialFields[k] = v
+ }
+ l, err := cfg.Build()
+ if err != nil {
+ return nil, err
+ }
+
+ // Set the logger
+ loggers[pkgName] = &logger{
+ log: l.Sugar(),
+ parent: l,
+ packageName: pkgName,
+ }
+ return loggers[pkgName], nil
+}
+
+func setLevel(cfg zp.Config, level int) {
+ switch level {
+ case DebugLevel:
+ cfg.Level.SetLevel(zc.DebugLevel)
+ case InfoLevel:
+ cfg.Level.SetLevel(zc.InfoLevel)
+ case WarnLevel:
+ cfg.Level.SetLevel(zc.WarnLevel)
+ case ErrorLevel:
+ cfg.Level.SetLevel(zc.ErrorLevel)
+ case FatalLevel:
+ cfg.Level.SetLevel(zc.FatalLevel)
+ default:
+ cfg.Level.SetLevel(zc.ErrorLevel)
+ }
+}
+
+//SetPackageLogLevel dynamically sets the log level of a given package to level. This is typically invoked at an
+// application level during debugging
+func SetPackageLogLevel(packageName string, level int) {
+ // Get proper config
+ if cfg, ok := cfgs[packageName]; ok {
+ setLevel(cfg, level)
+ }
+}
+
+//SetAllLogLevel sets the log level of all registered packages to level
+func SetAllLogLevel(level int) {
+ // Get proper config
+ for _, cfg := range cfgs {
+ setLevel(cfg, level)
+ }
+}
+
+//GetPackageLogLevel returns the current log level of a package.
+func GetPackageLogLevel(packageName ...string) (int, error) {
+ var name string
+ if len(packageName) == 1 {
+ name = packageName[0]
+ } else {
+ name, _, _, _ = getCallerInfo()
+ }
+ if cfg, ok := cfgs[name]; ok {
+ return levelToInt(cfg.Level.Level()), nil
+ }
+ return 0, errors.New(fmt.Sprintf("unknown-package-%s", name))
+}
+
+//GetDefaultLogLevel gets the log level used for packages that don't have specific loggers
+func GetDefaultLogLevel() int {
+ return levelToInt(cfg.Level.Level())
+}
+
+//SetLogLevel sets the log level for the logger corresponding to the caller's package
+func SetLogLevel(level int) error {
+ pkgName, _, _, _ := getCallerInfo()
+ if _, exist := cfgs[pkgName]; !exist {
+ return errors.New(fmt.Sprintf("unregistered-package-%s", pkgName))
+ }
+ cfg := cfgs[pkgName]
+ setLevel(cfg, level)
+ return nil
+}
+
+//SetDefaultLogLevel sets the log level used for packages that don't have specific loggers
+func SetDefaultLogLevel(level int) {
+ setLevel(cfg, level)
+}
+
+// CleanUp flushed any buffered log entries. Applications should take care to call
+// CleanUp before exiting.
+func CleanUp() error {
+ for _, logger := range loggers {
+ if logger != nil {
+ if logger.parent != nil {
+ if err := logger.parent.Sync(); err != nil {
+ return err
+ }
+ }
+ }
+ }
+ if defaultLogger != nil {
+ if defaultLogger.parent != nil {
+ if err := defaultLogger.parent.Sync(); err != nil {
+ return err
+ }
+ }
+ }
+ return nil
+}
+
+func getCallerInfo() (string, string, string, int) {
+ // Since the caller of a log function is one stack frame before (in terms of stack higher level) the log.go
+ // filename, then first look for the last log.go filename and then grab the caller info one level higher.
+ maxLevel := 3
+ skiplevel := 3 // Level with the most empirical success to see the last log.go stack frame.
+ pc := make([]uintptr, maxLevel)
+ n := runtime.Callers(skiplevel, pc)
+ packageName := ""
+ funcName := ""
+ fileName := ""
+ var line int
+ if n == 0 {
+ return packageName, fileName, funcName, line
+ }
+ frames := runtime.CallersFrames(pc[:n])
+ var frame runtime.Frame
+ var foundFrame runtime.Frame
+ more := true
+ for more {
+ frame, more = frames.Next()
+ _, fileName = path.Split(frame.File)
+ if fileName != "log.go" {
+ foundFrame = frame // First frame after log.go in the frame stack
+ break
+ }
+ }
+ parts := strings.Split(foundFrame.Function, ".")
+ pl := len(parts)
+ if pl >= 2 {
+ funcName = parts[pl-1]
+ if parts[pl-2][0] == '(' {
+ packageName = strings.Join(parts[0:pl-2], ".")
+ } else {
+ packageName = strings.Join(parts[0:pl-1], ".")
+ }
+ }
+
+ if strings.HasSuffix(packageName, ".init") {
+ packageName = strings.TrimSuffix(packageName, ".init")
+ }
+
+ if strings.HasSuffix(fileName, ".go") {
+ fileName = strings.TrimSuffix(fileName, ".go")
+ }
+
+ return packageName, fileName, funcName, foundFrame.Line
+}
+
+func getPackageLevelSugaredLogger() *zp.SugaredLogger {
+ pkgName, fileName, funcName, line := getCallerInfo()
+ if _, exist := loggers[pkgName]; exist {
+ return loggers[pkgName].log.With("caller", fmt.Sprintf("%s.%s:%d", fileName, funcName, line))
+ }
+ return defaultLogger.log.With("caller", fmt.Sprintf("%s.%s:%d", fileName, funcName, line))
+}
+
+func getPackageLevelLogger() Logger {
+ pkgName, _, _, _ := getCallerInfo()
+ if _, exist := loggers[pkgName]; exist {
+ return loggers[pkgName]
+ }
+ return defaultLogger
+}
+
+func serializeMap(fields Fields) []interface{} {
+ data := make([]interface{}, len(fields)*2)
+ i := 0
+ for k, v := range fields {
+ data[i] = k
+ data[i+1] = v
+ i = i + 2
+ }
+ return data
+}
+
+// With returns a logger initialized with the key-value pairs
+func (l logger) With(keysAndValues Fields) Logger {
+ return logger{log: l.log.With(serializeMap(keysAndValues)...), parent: l.parent}
+}
+
+// Debug logs a message at level Debug on the standard logger.
+func (l logger) Debug(args ...interface{}) {
+ l.log.Debug(args...)
+}
+
+// Debugln logs a message at level Debug on the standard logger with a line feed. Default in any case.
+func (l logger) Debugln(args ...interface{}) {
+ l.log.Debug(args...)
+}
+
+// Debugw logs a message at level Debug on the standard logger.
+func (l logger) Debugf(format string, args ...interface{}) {
+ l.log.Debugf(format, args...)
+}
+
+// Debugw logs a message with some additional context. The variadic key-value
+// pairs are treated as they are in With.
+func (l logger) Debugw(msg string, keysAndValues Fields) {
+ l.log.Debugw(msg, serializeMap(keysAndValues)...)
+}
+
+// Info logs a message at level Info on the standard logger.
+func (l logger) Info(args ...interface{}) {
+ l.log.Info(args...)
+}
+
+// Infoln logs a message at level Info on the standard logger with a line feed. Default in any case.
+func (l logger) Infoln(args ...interface{}) {
+ l.log.Info(args...)
+ //msg := fmt.Sprintln(args...)
+ //l.sourced().Info(msg[:len(msg)-1])
+}
+
+// Infof logs a message at level Info on the standard logger.
+func (l logger) Infof(format string, args ...interface{}) {
+ l.log.Infof(format, args...)
+}
+
+// Infow logs a message with some additional context. The variadic key-value
+// pairs are treated as they are in With.
+func (l logger) Infow(msg string, keysAndValues Fields) {
+ l.log.Infow(msg, serializeMap(keysAndValues)...)
+}
+
+// Warn logs a message at level Warn on the standard logger.
+func (l logger) Warn(args ...interface{}) {
+ l.log.Warn(args...)
+}
+
+// Warnln logs a message at level Warn on the standard logger with a line feed. Default in any case.
+func (l logger) Warnln(args ...interface{}) {
+ l.log.Warn(args...)
+}
+
+// Warnf logs a message at level Warn on the standard logger.
+func (l logger) Warnf(format string, args ...interface{}) {
+ l.log.Warnf(format, args...)
+}
+
+// Warnw logs a message with some additional context. The variadic key-value
+// pairs are treated as they are in With.
+func (l logger) Warnw(msg string, keysAndValues Fields) {
+ l.log.Warnw(msg, serializeMap(keysAndValues)...)
+}
+
+// Error logs a message at level Error on the standard logger.
+func (l logger) Error(args ...interface{}) {
+ l.log.Error(args...)
+}
+
+// Errorln logs a message at level Error on the standard logger with a line feed. Default in any case.
+func (l logger) Errorln(args ...interface{}) {
+ l.log.Error(args...)
+}
+
+// Errorf logs a message at level Error on the standard logger.
+func (l logger) Errorf(format string, args ...interface{}) {
+ l.log.Errorf(format, args...)
+}
+
+// Errorw logs a message with some additional context. The variadic key-value
+// pairs are treated as they are in With.
+func (l logger) Errorw(msg string, keysAndValues Fields) {
+ l.log.Errorw(msg, serializeMap(keysAndValues)...)
+}
+
+// Fatal logs a message at level Fatal on the standard logger.
+func (l logger) Fatal(args ...interface{}) {
+ l.log.Fatal(args...)
+}
+
+// Fatalln logs a message at level Fatal on the standard logger with a line feed. Default in any case.
+func (l logger) Fatalln(args ...interface{}) {
+ l.log.Fatal(args...)
+}
+
+// Fatalf logs a message at level Fatal on the standard logger.
+func (l logger) Fatalf(format string, args ...interface{}) {
+ l.log.Fatalf(format, args...)
+}
+
+// Fatalw logs a message with some additional context. The variadic key-value
+// pairs are treated as they are in With.
+func (l logger) Fatalw(msg string, keysAndValues Fields) {
+ l.log.Fatalw(msg, serializeMap(keysAndValues)...)
+}
+
+// Warning logs a message at level Warn on the standard logger.
+func (l logger) Warning(args ...interface{}) {
+ l.log.Warn(args...)
+}
+
+// Warningln logs a message at level Warn on the standard logger with a line feed. Default in any case.
+func (l logger) Warningln(args ...interface{}) {
+ l.log.Warn(args...)
+}
+
+// Warningf logs a message at level Warn on the standard logger.
+func (l logger) Warningf(format string, args ...interface{}) {
+ l.log.Warnf(format, args...)
+}
+
+// V reports whether verbosity level l is at least the requested verbose level.
+func (l logger) V(level int) bool {
+ return l.parent.Core().Enabled(intToLevel(level))
+}
+
+// GetLogLevel returns the current level of the logger
+func (l logger) GetLogLevel() int {
+ return levelToInt(cfgs[l.packageName].Level.Level())
+}
+
+// With returns a logger initialized with the key-value pairs
+func With(keysAndValues Fields) Logger {
+ return logger{log: getPackageLevelSugaredLogger().With(serializeMap(keysAndValues)...), parent: defaultLogger.parent}
+}
+
+// Debug logs a message at level Debug on the standard logger.
+func Debug(args ...interface{}) {
+ getPackageLevelSugaredLogger().Debug(args...)
+}
+
+// Debugln logs a message at level Debug on the standard logger.
+func Debugln(args ...interface{}) {
+ getPackageLevelSugaredLogger().Debug(args...)
+}
+
+// Debugf logs a message at level Debug on the standard logger.
+func Debugf(format string, args ...interface{}) {
+ getPackageLevelSugaredLogger().Debugf(format, args...)
+}
+
+// Debugw logs a message with some additional context. The variadic key-value
+// pairs are treated as they are in With.
+func Debugw(msg string, keysAndValues Fields) {
+ getPackageLevelSugaredLogger().Debugw(msg, serializeMap(keysAndValues)...)
+}
+
+// Info logs a message at level Info on the standard logger.
+func Info(args ...interface{}) {
+ getPackageLevelSugaredLogger().Info(args...)
+}
+
+// Infoln logs a message at level Info on the standard logger.
+func Infoln(args ...interface{}) {
+ getPackageLevelSugaredLogger().Info(args...)
+}
+
+// Infof logs a message at level Info on the standard logger.
+func Infof(format string, args ...interface{}) {
+ getPackageLevelSugaredLogger().Infof(format, args...)
+}
+
+//Infow logs a message with some additional context. The variadic key-value
+//pairs are treated as they are in With.
+func Infow(msg string, keysAndValues Fields) {
+ getPackageLevelSugaredLogger().Infow(msg, serializeMap(keysAndValues)...)
+}
+
+// Warn logs a message at level Warn on the standard logger.
+func Warn(args ...interface{}) {
+ getPackageLevelSugaredLogger().Warn(args...)
+}
+
+// Warnln logs a message at level Warn on the standard logger.
+func Warnln(args ...interface{}) {
+ getPackageLevelSugaredLogger().Warn(args...)
+}
+
+// Warnf logs a message at level Warn on the standard logger.
+func Warnf(format string, args ...interface{}) {
+ getPackageLevelSugaredLogger().Warnf(format, args...)
+}
+
+// Warnw logs a message with some additional context. The variadic key-value
+// pairs are treated as they are in With.
+func Warnw(msg string, keysAndValues Fields) {
+ getPackageLevelSugaredLogger().Warnw(msg, serializeMap(keysAndValues)...)
+}
+
+// Error logs a message at level Error on the standard logger.
+func Error(args ...interface{}) {
+ getPackageLevelSugaredLogger().Error(args...)
+}
+
+// Errorln logs a message at level Error on the standard logger.
+func Errorln(args ...interface{}) {
+ getPackageLevelSugaredLogger().Error(args...)
+}
+
+// Errorf logs a message at level Error on the standard logger.
+func Errorf(format string, args ...interface{}) {
+ getPackageLevelSugaredLogger().Errorf(format, args...)
+}
+
+// Errorw logs a message with some additional context. The variadic key-value
+// pairs are treated as they are in With.
+func Errorw(msg string, keysAndValues Fields) {
+ getPackageLevelSugaredLogger().Errorw(msg, serializeMap(keysAndValues)...)
+}
+
+// Fatal logs a message at level Fatal on the standard logger.
+func Fatal(args ...interface{}) {
+ getPackageLevelSugaredLogger().Fatal(args...)
+}
+
+// Fatalln logs a message at level Fatal on the standard logger.
+func Fatalln(args ...interface{}) {
+ getPackageLevelSugaredLogger().Fatal(args...)
+}
+
+// Fatalf logs a message at level Fatal on the standard logger.
+func Fatalf(format string, args ...interface{}) {
+ getPackageLevelSugaredLogger().Fatalf(format, args...)
+}
+
+// Fatalw logs a message with some additional context. The variadic key-value
+// pairs are treated as they are in With.
+func Fatalw(msg string, keysAndValues Fields) {
+ getPackageLevelSugaredLogger().Fatalw(msg, serializeMap(keysAndValues)...)
+}
+
+// Warning logs a message at level Warn on the standard logger.
+func Warning(args ...interface{}) {
+ getPackageLevelSugaredLogger().Warn(args...)
+}
+
+// Warningln logs a message at level Warn on the standard logger.
+func Warningln(args ...interface{}) {
+ getPackageLevelSugaredLogger().Warn(args...)
+}
+
+// Warningf logs a message at level Warn on the standard logger.
+func Warningf(format string, args ...interface{}) {
+ getPackageLevelSugaredLogger().Warnf(format, args...)
+}
+
+// V reports whether verbosity level l is at least the requested verbose level.
+func V(level int) bool {
+ return getPackageLevelLogger().V(level)
+}
+
+//GetLogLevel returns the log level of the invoking package
+func GetLogLevel() int {
+ return getPackageLevelLogger().GetLogLevel()
+}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/probe/probe.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/probe/probe.go
new file mode 100644
index 0000000..9f00953
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/probe/probe.go
@@ -0,0 +1,293 @@
+/*
+ * Copyright 2019-present Open Networking Foundation
+ *
+ * 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.
+ */
+package probe
+
+import (
+ "context"
+ "fmt"
+ "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "net/http"
+ "sync"
+)
+
+// ProbeContextKey used to fetch the Probe instance from a context
+type ProbeContextKeyType string
+
+// ServiceStatus typed values for service status
+type ServiceStatus int
+
+const (
+ // ServiceStatusUnknown initial state of services
+ ServiceStatusUnknown ServiceStatus = iota
+
+ // ServiceStatusPreparing to optionally be used for prep, such as connecting
+ ServiceStatusPreparing
+
+ // ServiceStatusPrepared to optionally be used when prep is complete, but before run
+ ServiceStatusPrepared
+
+ // ServiceStatusRunning service is functional
+ ServiceStatusRunning
+
+ // ServiceStatusStopped service has stopped, but not because of error
+ ServiceStatusStopped
+
+ // ServiceStatusFailed service has stopped because of an error
+ ServiceStatusFailed
+
+ // ServiceStatusNotReady service has started but is unable to accept requests
+ ServiceStatusNotReady
+)
+
+const (
+ // ProbeContextKey value of context key to fetch probe
+ ProbeContextKey = ProbeContextKeyType("status-update-probe")
+)
+
+// String convert ServiceStatus values to strings
+func (s ServiceStatus) String() string {
+ switch s {
+ default:
+ fallthrough
+ case ServiceStatusUnknown:
+ return "Unknown"
+ case ServiceStatusPreparing:
+ return "Preparing"
+ case ServiceStatusPrepared:
+ return "Prepared"
+ case ServiceStatusRunning:
+ return "Running"
+ case ServiceStatusStopped:
+ return "Stopped"
+ case ServiceStatusFailed:
+ return "Failed"
+ case ServiceStatusNotReady:
+ return "NotReady"
+ }
+}
+
+// ServiceStatusUpdate status update event
+type ServiceStatusUpdate struct {
+ Name string
+ Status ServiceStatus
+}
+
+// Probe reciever on which to implement probe capabilities
+type Probe struct {
+ readyFunc func(map[string]ServiceStatus) bool
+ healthFunc func(map[string]ServiceStatus) bool
+
+ mutex sync.RWMutex
+ status map[string]ServiceStatus
+ isReady bool
+ isHealthy bool
+}
+
+// WithReadyFunc override the default ready calculation function
+func (p *Probe) WithReadyFunc(readyFunc func(map[string]ServiceStatus) bool) *Probe {
+ p.readyFunc = readyFunc
+ return p
+}
+
+// WithHealthFunc override the default health calculation function
+func (p *Probe) WithHealthFunc(healthFunc func(map[string]ServiceStatus) bool) *Probe {
+ p.healthFunc = healthFunc
+ return p
+}
+
+// RegisterService register one or more service names with the probe, status will be track against service name
+func (p *Probe) RegisterService(names ...string) {
+ p.mutex.Lock()
+ defer p.mutex.Unlock()
+ if p.status == nil {
+ p.status = make(map[string]ServiceStatus)
+ }
+ for _, name := range names {
+ if _, ok := p.status[name]; !ok {
+ p.status[name] = ServiceStatusUnknown
+ log.Debugw("probe-service-registered", log.Fields{"service-name": name})
+ }
+ }
+
+ if p.readyFunc != nil {
+ p.isReady = p.readyFunc(p.status)
+ } else {
+ p.isReady = defaultReadyFunc(p.status)
+ }
+
+ if p.healthFunc != nil {
+ p.isHealthy = p.healthFunc(p.status)
+ } else {
+ p.isHealthy = defaultHealthFunc(p.status)
+ }
+}
+
+// UpdateStatus utility function to send a service update to the probe
+func (p *Probe) UpdateStatus(name string, status ServiceStatus) {
+ p.mutex.Lock()
+ defer p.mutex.Unlock()
+ if p.status == nil {
+ p.status = make(map[string]ServiceStatus)
+ }
+
+ // if status hasn't changed, avoid doing useless work
+ existingStatus, ok := p.status[name]
+ if ok && (existingStatus == status) {
+ return
+ }
+
+ p.status[name] = status
+ if p.readyFunc != nil {
+ p.isReady = p.readyFunc(p.status)
+ } else {
+ p.isReady = defaultReadyFunc(p.status)
+ }
+
+ if p.healthFunc != nil {
+ p.isHealthy = p.healthFunc(p.status)
+ } else {
+ p.isHealthy = defaultHealthFunc(p.status)
+ }
+ log.Debugw("probe-service-status-updated",
+ log.Fields{
+ "service-name": name,
+ "status": status.String(),
+ "ready": p.isReady,
+ "health": p.isHealthy,
+ })
+}
+
+func (p *Probe) GetStatus(name string) ServiceStatus {
+ p.mutex.Lock()
+ defer p.mutex.Unlock()
+
+ if p.status == nil {
+ p.status = make(map[string]ServiceStatus)
+ }
+
+ currentStatus, ok := p.status[name]
+ if ok {
+ return currentStatus
+ }
+
+ return ServiceStatusUnknown
+}
+
+func GetProbeFromContext(ctx context.Context) *Probe {
+ if ctx != nil {
+ if value := ctx.Value(ProbeContextKey); value != nil {
+ if p, ok := value.(*Probe); ok {
+ return p
+ }
+ }
+ }
+ return nil
+}
+
+// UpdateStatusFromContext a convenience function to pull the Probe reference from the
+// Context, if it exists, and then calling UpdateStatus on that Probe reference. If Context
+// is nil or if a Probe reference is not associated with the ProbeContextKey then nothing
+// happens
+func UpdateStatusFromContext(ctx context.Context, name string, status ServiceStatus) {
+ p := GetProbeFromContext(ctx)
+ if p != nil {
+ p.UpdateStatus(name, status)
+ }
+}
+
+// pulled out to a function to help better enable unit testing
+func (p *Probe) readzFunc(w http.ResponseWriter, req *http.Request) {
+ p.mutex.RLock()
+ defer p.mutex.RUnlock()
+ if p.isReady {
+ w.WriteHeader(http.StatusOK)
+ } else {
+ w.WriteHeader(http.StatusTeapot)
+ }
+}
+func (p *Probe) healthzFunc(w http.ResponseWriter, req *http.Request) {
+ p.mutex.RLock()
+ defer p.mutex.RUnlock()
+ if p.isHealthy {
+ w.WriteHeader(http.StatusOK)
+ } else {
+ w.WriteHeader(http.StatusTeapot)
+ }
+}
+func (p *Probe) detailzFunc(w http.ResponseWriter, req *http.Request) {
+ p.mutex.RLock()
+ defer p.mutex.RUnlock()
+ w.Header().Set("Content-Type", "application/json")
+ w.Write([]byte("{"))
+ comma := ""
+ for c, s := range p.status {
+ w.Write([]byte(fmt.Sprintf("%s\"%s\": \"%s\"", comma, c, s.String())))
+ comma = ", "
+ }
+ w.Write([]byte("}"))
+ w.WriteHeader(http.StatusOK)
+
+}
+
+// ListenAndServe implements 3 HTTP endpoints on the given port for healthz, readz, and detailz. Returns only on error
+func (p *Probe) ListenAndServe(address string) {
+ mux := http.NewServeMux()
+
+ // Returns the result of the readyFunc calculation
+ mux.HandleFunc("/readz", p.readzFunc)
+
+ // Returns the result of the healthFunc calculation
+ mux.HandleFunc("/healthz", p.healthzFunc)
+
+ // Returns the details of the services and their status as JSON
+ mux.HandleFunc("/detailz", p.detailzFunc)
+ s := &http.Server{
+ Addr: address,
+ Handler: mux,
+ }
+ log.Fatal(s.ListenAndServe())
+}
+
+func (p *Probe) IsReady() bool {
+ return p.isReady
+}
+
+// defaultReadyFunc if all services are running then ready, else not
+func defaultReadyFunc(services map[string]ServiceStatus) bool {
+ if len(services) == 0 {
+ return false
+ }
+ for _, status := range services {
+ if status != ServiceStatusRunning {
+ return false
+ }
+ }
+ return true
+}
+
+// defaultHealthFunc if no service is stopped or failed, then healthy, else not.
+// service is start as unknown, so they are considered healthy
+func defaultHealthFunc(services map[string]ServiceStatus) bool {
+ if len(services) == 0 {
+ return false
+ }
+ for _, status := range services {
+ if status == ServiceStatusStopped || status == ServiceStatusFailed {
+ return false
+ }
+ }
+ return true
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/common/common.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/common/common.pb.go
new file mode 100644
index 0000000..96d2f34
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/common/common.pb.go
@@ -0,0 +1,683 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: voltha_protos/common.proto
+
+package common
+
+import (
+ fmt "fmt"
+ proto "github.com/golang/protobuf/proto"
+ math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+type TestModeKeys int32
+
+const (
+ TestModeKeys_api_test TestModeKeys = 0
+)
+
+var TestModeKeys_name = map[int32]string{
+ 0: "api_test",
+}
+
+var TestModeKeys_value = map[string]int32{
+ "api_test": 0,
+}
+
+func (x TestModeKeys) String() string {
+ return proto.EnumName(TestModeKeys_name, int32(x))
+}
+
+func (TestModeKeys) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_c2e3fd231961e826, []int{0}
+}
+
+// Logging verbosity level
+type LogLevel_Types int32
+
+const (
+ LogLevel_DEBUG LogLevel_Types = 0
+ LogLevel_INFO LogLevel_Types = 1
+ LogLevel_WARNING LogLevel_Types = 2
+ LogLevel_ERROR LogLevel_Types = 3
+ LogLevel_CRITICAL LogLevel_Types = 4
+ LogLevel_FATAL LogLevel_Types = 5
+)
+
+var LogLevel_Types_name = map[int32]string{
+ 0: "DEBUG",
+ 1: "INFO",
+ 2: "WARNING",
+ 3: "ERROR",
+ 4: "CRITICAL",
+ 5: "FATAL",
+}
+
+var LogLevel_Types_value = map[string]int32{
+ "DEBUG": 0,
+ "INFO": 1,
+ "WARNING": 2,
+ "ERROR": 3,
+ "CRITICAL": 4,
+ "FATAL": 5,
+}
+
+func (x LogLevel_Types) String() string {
+ return proto.EnumName(LogLevel_Types_name, int32(x))
+}
+
+func (LogLevel_Types) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_c2e3fd231961e826, []int{2, 0}
+}
+
+// Administrative State
+type AdminState_Types int32
+
+const (
+ // The administrative state of the device is unknown
+ AdminState_UNKNOWN AdminState_Types = 0
+ // The device is pre-provisioned into Voltha, but not contacted by it
+ AdminState_PREPROVISIONED AdminState_Types = 1
+ // The device is enabled for activation and operation
+ AdminState_ENABLED AdminState_Types = 2
+ // The device is disabled and shall not perform its intended forwarding
+ // functions other than being available for re-activation.
+ AdminState_DISABLED AdminState_Types = 3
+ // The device is in the state of image download
+ AdminState_DOWNLOADING_IMAGE AdminState_Types = 4
+ // The device is marked to be deleted
+ AdminState_DELETED AdminState_Types = 5
+)
+
+var AdminState_Types_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "PREPROVISIONED",
+ 2: "ENABLED",
+ 3: "DISABLED",
+ 4: "DOWNLOADING_IMAGE",
+ 5: "DELETED",
+}
+
+var AdminState_Types_value = map[string]int32{
+ "UNKNOWN": 0,
+ "PREPROVISIONED": 1,
+ "ENABLED": 2,
+ "DISABLED": 3,
+ "DOWNLOADING_IMAGE": 4,
+ "DELETED": 5,
+}
+
+func (x AdminState_Types) String() string {
+ return proto.EnumName(AdminState_Types_name, int32(x))
+}
+
+func (AdminState_Types) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_c2e3fd231961e826, []int{6, 0}
+}
+
+// Operational Status
+type OperStatus_Types int32
+
+const (
+ // The status of the device is unknown at this point
+ OperStatus_UNKNOWN OperStatus_Types = 0
+ // The device has been discovered, but not yet activated
+ OperStatus_DISCOVERED OperStatus_Types = 1
+ // The device is being activated (booted, rebooted, upgraded, etc.)
+ OperStatus_ACTIVATING OperStatus_Types = 2
+ // Service impacting tests are being conducted
+ OperStatus_TESTING OperStatus_Types = 3
+ // The device is up and active
+ OperStatus_ACTIVE OperStatus_Types = 4
+ // The device has failed and cannot fulfill its intended role
+ OperStatus_FAILED OperStatus_Types = 5
+)
+
+var OperStatus_Types_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "DISCOVERED",
+ 2: "ACTIVATING",
+ 3: "TESTING",
+ 4: "ACTIVE",
+ 5: "FAILED",
+}
+
+var OperStatus_Types_value = map[string]int32{
+ "UNKNOWN": 0,
+ "DISCOVERED": 1,
+ "ACTIVATING": 2,
+ "TESTING": 3,
+ "ACTIVE": 4,
+ "FAILED": 5,
+}
+
+func (x OperStatus_Types) String() string {
+ return proto.EnumName(OperStatus_Types_name, int32(x))
+}
+
+func (OperStatus_Types) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_c2e3fd231961e826, []int{7, 0}
+}
+
+// Connectivity Status
+type ConnectStatus_Types int32
+
+const (
+ // The device connectivity status is unknown
+ ConnectStatus_UNKNOWN ConnectStatus_Types = 0
+ // The device cannot be reached by Voltha
+ ConnectStatus_UNREACHABLE ConnectStatus_Types = 1
+ // There is live communication between device and Voltha
+ ConnectStatus_REACHABLE ConnectStatus_Types = 2
+)
+
+var ConnectStatus_Types_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "UNREACHABLE",
+ 2: "REACHABLE",
+}
+
+var ConnectStatus_Types_value = map[string]int32{
+ "UNKNOWN": 0,
+ "UNREACHABLE": 1,
+ "REACHABLE": 2,
+}
+
+func (x ConnectStatus_Types) String() string {
+ return proto.EnumName(ConnectStatus_Types_name, int32(x))
+}
+
+func (ConnectStatus_Types) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_c2e3fd231961e826, []int{8, 0}
+}
+
+type OperationResp_OperationReturnCode int32
+
+const (
+ OperationResp_OPERATION_SUCCESS OperationResp_OperationReturnCode = 0
+ OperationResp_OPERATION_FAILURE OperationResp_OperationReturnCode = 1
+ OperationResp_OPERATION_UNSUPPORTED OperationResp_OperationReturnCode = 2
+)
+
+var OperationResp_OperationReturnCode_name = map[int32]string{
+ 0: "OPERATION_SUCCESS",
+ 1: "OPERATION_FAILURE",
+ 2: "OPERATION_UNSUPPORTED",
+}
+
+var OperationResp_OperationReturnCode_value = map[string]int32{
+ "OPERATION_SUCCESS": 0,
+ "OPERATION_FAILURE": 1,
+ "OPERATION_UNSUPPORTED": 2,
+}
+
+func (x OperationResp_OperationReturnCode) String() string {
+ return proto.EnumName(OperationResp_OperationReturnCode_name, int32(x))
+}
+
+func (OperationResp_OperationReturnCode) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_c2e3fd231961e826, []int{9, 0}
+}
+
+// Convey a resource identifier
+type ID struct {
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *ID) Reset() { *m = ID{} }
+func (m *ID) String() string { return proto.CompactTextString(m) }
+func (*ID) ProtoMessage() {}
+func (*ID) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c2e3fd231961e826, []int{0}
+}
+
+func (m *ID) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_ID.Unmarshal(m, b)
+}
+func (m *ID) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_ID.Marshal(b, m, deterministic)
+}
+func (m *ID) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ID.Merge(m, src)
+}
+func (m *ID) XXX_Size() int {
+ return xxx_messageInfo_ID.Size(m)
+}
+func (m *ID) XXX_DiscardUnknown() {
+ xxx_messageInfo_ID.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ID proto.InternalMessageInfo
+
+func (m *ID) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+// Represents a list of IDs
+type IDs struct {
+ Items []*ID `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *IDs) Reset() { *m = IDs{} }
+func (m *IDs) String() string { return proto.CompactTextString(m) }
+func (*IDs) ProtoMessage() {}
+func (*IDs) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c2e3fd231961e826, []int{1}
+}
+
+func (m *IDs) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_IDs.Unmarshal(m, b)
+}
+func (m *IDs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_IDs.Marshal(b, m, deterministic)
+}
+func (m *IDs) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_IDs.Merge(m, src)
+}
+func (m *IDs) XXX_Size() int {
+ return xxx_messageInfo_IDs.Size(m)
+}
+func (m *IDs) XXX_DiscardUnknown() {
+ xxx_messageInfo_IDs.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_IDs proto.InternalMessageInfo
+
+func (m *IDs) GetItems() []*ID {
+ if m != nil {
+ return m.Items
+ }
+ return nil
+}
+
+type LogLevel struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *LogLevel) Reset() { *m = LogLevel{} }
+func (m *LogLevel) String() string { return proto.CompactTextString(m) }
+func (*LogLevel) ProtoMessage() {}
+func (*LogLevel) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c2e3fd231961e826, []int{2}
+}
+
+func (m *LogLevel) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_LogLevel.Unmarshal(m, b)
+}
+func (m *LogLevel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_LogLevel.Marshal(b, m, deterministic)
+}
+func (m *LogLevel) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_LogLevel.Merge(m, src)
+}
+func (m *LogLevel) XXX_Size() int {
+ return xxx_messageInfo_LogLevel.Size(m)
+}
+func (m *LogLevel) XXX_DiscardUnknown() {
+ xxx_messageInfo_LogLevel.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_LogLevel proto.InternalMessageInfo
+
+type Logging struct {
+ Level LogLevel_Types `protobuf:"varint,1,opt,name=level,proto3,enum=common.LogLevel_Types" json:"level,omitempty"`
+ PackageName string `protobuf:"bytes,2,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"`
+ ComponentName string `protobuf:"bytes,3,opt,name=component_name,json=componentName,proto3" json:"component_name,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Logging) Reset() { *m = Logging{} }
+func (m *Logging) String() string { return proto.CompactTextString(m) }
+func (*Logging) ProtoMessage() {}
+func (*Logging) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c2e3fd231961e826, []int{3}
+}
+
+func (m *Logging) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Logging.Unmarshal(m, b)
+}
+func (m *Logging) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Logging.Marshal(b, m, deterministic)
+}
+func (m *Logging) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Logging.Merge(m, src)
+}
+func (m *Logging) XXX_Size() int {
+ return xxx_messageInfo_Logging.Size(m)
+}
+func (m *Logging) XXX_DiscardUnknown() {
+ xxx_messageInfo_Logging.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Logging proto.InternalMessageInfo
+
+func (m *Logging) GetLevel() LogLevel_Types {
+ if m != nil {
+ return m.Level
+ }
+ return LogLevel_DEBUG
+}
+
+func (m *Logging) GetPackageName() string {
+ if m != nil {
+ return m.PackageName
+ }
+ return ""
+}
+
+func (m *Logging) GetComponentName() string {
+ if m != nil {
+ return m.ComponentName
+ }
+ return ""
+}
+
+// For GetLogLevels(), select component to query
+type LoggingComponent struct {
+ ComponentName string `protobuf:"bytes,1,opt,name=component_name,json=componentName,proto3" json:"component_name,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *LoggingComponent) Reset() { *m = LoggingComponent{} }
+func (m *LoggingComponent) String() string { return proto.CompactTextString(m) }
+func (*LoggingComponent) ProtoMessage() {}
+func (*LoggingComponent) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c2e3fd231961e826, []int{4}
+}
+
+func (m *LoggingComponent) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_LoggingComponent.Unmarshal(m, b)
+}
+func (m *LoggingComponent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_LoggingComponent.Marshal(b, m, deterministic)
+}
+func (m *LoggingComponent) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_LoggingComponent.Merge(m, src)
+}
+func (m *LoggingComponent) XXX_Size() int {
+ return xxx_messageInfo_LoggingComponent.Size(m)
+}
+func (m *LoggingComponent) XXX_DiscardUnknown() {
+ xxx_messageInfo_LoggingComponent.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_LoggingComponent proto.InternalMessageInfo
+
+func (m *LoggingComponent) GetComponentName() string {
+ if m != nil {
+ return m.ComponentName
+ }
+ return ""
+}
+
+// For returning multiple log levels
+type Loggings struct {
+ Items []*Logging `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Loggings) Reset() { *m = Loggings{} }
+func (m *Loggings) String() string { return proto.CompactTextString(m) }
+func (*Loggings) ProtoMessage() {}
+func (*Loggings) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c2e3fd231961e826, []int{5}
+}
+
+func (m *Loggings) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Loggings.Unmarshal(m, b)
+}
+func (m *Loggings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Loggings.Marshal(b, m, deterministic)
+}
+func (m *Loggings) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Loggings.Merge(m, src)
+}
+func (m *Loggings) XXX_Size() int {
+ return xxx_messageInfo_Loggings.Size(m)
+}
+func (m *Loggings) XXX_DiscardUnknown() {
+ xxx_messageInfo_Loggings.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Loggings proto.InternalMessageInfo
+
+func (m *Loggings) GetItems() []*Logging {
+ if m != nil {
+ return m.Items
+ }
+ return nil
+}
+
+type AdminState struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *AdminState) Reset() { *m = AdminState{} }
+func (m *AdminState) String() string { return proto.CompactTextString(m) }
+func (*AdminState) ProtoMessage() {}
+func (*AdminState) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c2e3fd231961e826, []int{6}
+}
+
+func (m *AdminState) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_AdminState.Unmarshal(m, b)
+}
+func (m *AdminState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_AdminState.Marshal(b, m, deterministic)
+}
+func (m *AdminState) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_AdminState.Merge(m, src)
+}
+func (m *AdminState) XXX_Size() int {
+ return xxx_messageInfo_AdminState.Size(m)
+}
+func (m *AdminState) XXX_DiscardUnknown() {
+ xxx_messageInfo_AdminState.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AdminState proto.InternalMessageInfo
+
+type OperStatus struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OperStatus) Reset() { *m = OperStatus{} }
+func (m *OperStatus) String() string { return proto.CompactTextString(m) }
+func (*OperStatus) ProtoMessage() {}
+func (*OperStatus) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c2e3fd231961e826, []int{7}
+}
+
+func (m *OperStatus) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OperStatus.Unmarshal(m, b)
+}
+func (m *OperStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OperStatus.Marshal(b, m, deterministic)
+}
+func (m *OperStatus) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OperStatus.Merge(m, src)
+}
+func (m *OperStatus) XXX_Size() int {
+ return xxx_messageInfo_OperStatus.Size(m)
+}
+func (m *OperStatus) XXX_DiscardUnknown() {
+ xxx_messageInfo_OperStatus.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OperStatus proto.InternalMessageInfo
+
+type ConnectStatus struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *ConnectStatus) Reset() { *m = ConnectStatus{} }
+func (m *ConnectStatus) String() string { return proto.CompactTextString(m) }
+func (*ConnectStatus) ProtoMessage() {}
+func (*ConnectStatus) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c2e3fd231961e826, []int{8}
+}
+
+func (m *ConnectStatus) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_ConnectStatus.Unmarshal(m, b)
+}
+func (m *ConnectStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_ConnectStatus.Marshal(b, m, deterministic)
+}
+func (m *ConnectStatus) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ConnectStatus.Merge(m, src)
+}
+func (m *ConnectStatus) XXX_Size() int {
+ return xxx_messageInfo_ConnectStatus.Size(m)
+}
+func (m *ConnectStatus) XXX_DiscardUnknown() {
+ xxx_messageInfo_ConnectStatus.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ConnectStatus proto.InternalMessageInfo
+
+type OperationResp struct {
+ // Return code
+ Code OperationResp_OperationReturnCode `protobuf:"varint,1,opt,name=code,proto3,enum=common.OperationResp_OperationReturnCode" json:"code,omitempty"`
+ // Additional Info
+ AdditionalInfo string `protobuf:"bytes,2,opt,name=additional_info,json=additionalInfo,proto3" json:"additional_info,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OperationResp) Reset() { *m = OperationResp{} }
+func (m *OperationResp) String() string { return proto.CompactTextString(m) }
+func (*OperationResp) ProtoMessage() {}
+func (*OperationResp) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c2e3fd231961e826, []int{9}
+}
+
+func (m *OperationResp) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OperationResp.Unmarshal(m, b)
+}
+func (m *OperationResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OperationResp.Marshal(b, m, deterministic)
+}
+func (m *OperationResp) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OperationResp.Merge(m, src)
+}
+func (m *OperationResp) XXX_Size() int {
+ return xxx_messageInfo_OperationResp.Size(m)
+}
+func (m *OperationResp) XXX_DiscardUnknown() {
+ xxx_messageInfo_OperationResp.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OperationResp proto.InternalMessageInfo
+
+func (m *OperationResp) GetCode() OperationResp_OperationReturnCode {
+ if m != nil {
+ return m.Code
+ }
+ return OperationResp_OPERATION_SUCCESS
+}
+
+func (m *OperationResp) GetAdditionalInfo() string {
+ if m != nil {
+ return m.AdditionalInfo
+ }
+ return ""
+}
+
+func init() {
+ proto.RegisterEnum("common.TestModeKeys", TestModeKeys_name, TestModeKeys_value)
+ proto.RegisterEnum("common.LogLevel_Types", LogLevel_Types_name, LogLevel_Types_value)
+ proto.RegisterEnum("common.AdminState_Types", AdminState_Types_name, AdminState_Types_value)
+ proto.RegisterEnum("common.OperStatus_Types", OperStatus_Types_name, OperStatus_Types_value)
+ proto.RegisterEnum("common.ConnectStatus_Types", ConnectStatus_Types_name, ConnectStatus_Types_value)
+ proto.RegisterEnum("common.OperationResp_OperationReturnCode", OperationResp_OperationReturnCode_name, OperationResp_OperationReturnCode_value)
+ proto.RegisterType((*ID)(nil), "common.ID")
+ proto.RegisterType((*IDs)(nil), "common.IDs")
+ proto.RegisterType((*LogLevel)(nil), "common.LogLevel")
+ proto.RegisterType((*Logging)(nil), "common.Logging")
+ proto.RegisterType((*LoggingComponent)(nil), "common.LoggingComponent")
+ proto.RegisterType((*Loggings)(nil), "common.Loggings")
+ proto.RegisterType((*AdminState)(nil), "common.AdminState")
+ proto.RegisterType((*OperStatus)(nil), "common.OperStatus")
+ proto.RegisterType((*ConnectStatus)(nil), "common.ConnectStatus")
+ proto.RegisterType((*OperationResp)(nil), "common.OperationResp")
+}
+
+func init() { proto.RegisterFile("voltha_protos/common.proto", fileDescriptor_c2e3fd231961e826) }
+
+var fileDescriptor_c2e3fd231961e826 = []byte{
+ // 640 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x53, 0x5d, 0x4f, 0xdb, 0x4a,
+ 0x10, 0x8d, 0x9d, 0x2f, 0x98, 0x90, 0xb0, 0x77, 0xb9, 0x5c, 0x71, 0xab, 0x3e, 0x50, 0x4b, 0x08,
+ 0x5a, 0xb5, 0x89, 0x0a, 0x7d, 0xe9, 0x43, 0x1f, 0x8c, 0xbd, 0xa4, 0x2b, 0xcc, 0x3a, 0x5a, 0x3b,
+ 0xa0, 0xf6, 0xa1, 0x91, 0x89, 0x17, 0x63, 0x35, 0xf1, 0x5a, 0xb1, 0x83, 0xc4, 0x63, 0x7f, 0x65,
+ 0xff, 0x4e, 0xb5, 0xfe, 0x28, 0x20, 0xe5, 0x71, 0xce, 0x9c, 0xd9, 0x33, 0x73, 0x66, 0x07, 0x5e,
+ 0x3d, 0xc8, 0x45, 0x7e, 0x1f, 0xcc, 0xd2, 0x95, 0xcc, 0x65, 0x36, 0x9a, 0xcb, 0xe5, 0x52, 0x26,
+ 0xc3, 0x22, 0xc2, 0x9d, 0x32, 0x32, 0xfe, 0x05, 0x9d, 0xda, 0x78, 0x00, 0x7a, 0x1c, 0x1e, 0x68,
+ 0x87, 0xda, 0xc9, 0x36, 0xd7, 0xe3, 0xd0, 0x38, 0x86, 0x26, 0xb5, 0x33, 0x7c, 0x08, 0xed, 0x38,
+ 0x17, 0xcb, 0xec, 0x40, 0x3b, 0x6c, 0x9e, 0xf4, 0x4e, 0x61, 0x58, 0x3d, 0x41, 0x6d, 0x5e, 0x26,
+ 0x8c, 0x6f, 0xb0, 0xe5, 0xc8, 0xc8, 0x11, 0x0f, 0x62, 0x61, 0x5c, 0x41, 0xdb, 0x7f, 0x4c, 0x45,
+ 0x86, 0xb7, 0xa1, 0x6d, 0x93, 0xf3, 0xe9, 0x18, 0x35, 0xf0, 0x16, 0xb4, 0x28, 0xbb, 0x70, 0x91,
+ 0x86, 0x7b, 0xd0, 0xbd, 0x31, 0x39, 0xa3, 0x6c, 0x8c, 0x74, 0xc5, 0x20, 0x9c, 0xbb, 0x1c, 0x35,
+ 0xf1, 0x0e, 0x6c, 0x59, 0x9c, 0xfa, 0xd4, 0x32, 0x1d, 0xd4, 0x52, 0x89, 0x0b, 0xd3, 0x37, 0x1d,
+ 0xd4, 0x36, 0x7e, 0x69, 0xd0, 0x75, 0x64, 0x14, 0xc5, 0x49, 0x84, 0xdf, 0x43, 0x7b, 0xa1, 0x34,
+ 0x8a, 0x16, 0x07, 0xa7, 0xff, 0xd5, 0x8d, 0xd4, 0xda, 0xc3, 0x42, 0x98, 0x97, 0x24, 0xfc, 0x06,
+ 0x76, 0xd2, 0x60, 0xfe, 0x33, 0x88, 0xc4, 0x2c, 0x09, 0x96, 0xe2, 0x40, 0x2f, 0xe6, 0xea, 0x55,
+ 0x18, 0x0b, 0x96, 0x02, 0x1f, 0xc1, 0x60, 0x2e, 0x97, 0xa9, 0x4c, 0x44, 0x92, 0x97, 0xa4, 0x66,
+ 0x41, 0xea, 0xff, 0x45, 0x15, 0xcd, 0xf8, 0x0c, 0xa8, 0x6a, 0xc1, 0xaa, 0xf1, 0x0d, 0xa5, 0xda,
+ 0xa6, 0xd2, 0x8f, 0x85, 0x33, 0xaa, 0x34, 0xc3, 0x47, 0x2f, 0x7d, 0xdc, 0x7d, 0xd6, 0xbe, 0x22,
+ 0xd4, 0x66, 0xae, 0x01, 0xcc, 0x70, 0x19, 0x27, 0x5e, 0x1e, 0xe4, 0xc2, 0x88, 0x6a, 0x3b, 0x7b,
+ 0xd0, 0x9d, 0xb2, 0x4b, 0xe6, 0xde, 0x30, 0xd4, 0xc0, 0x18, 0x06, 0x13, 0x4e, 0x26, 0xdc, 0xbd,
+ 0xa6, 0x1e, 0x75, 0x19, 0xb1, 0x4b, 0x6b, 0x09, 0x33, 0xcf, 0x1d, 0x62, 0x23, 0x5d, 0xf9, 0x69,
+ 0x53, 0xaf, 0x8c, 0x9a, 0x78, 0x1f, 0xfe, 0xb1, 0xdd, 0x1b, 0xe6, 0xb8, 0xa6, 0x4d, 0xd9, 0x78,
+ 0x46, 0xaf, 0xcc, 0x31, 0x41, 0x2d, 0x55, 0x61, 0x13, 0x87, 0xf8, 0xc4, 0x46, 0x6d, 0x23, 0x02,
+ 0x70, 0x53, 0xb1, 0x52, 0xaa, 0x6b, 0xb5, 0xd1, 0x4d, 0xb2, 0x03, 0x00, 0x9b, 0x7a, 0x96, 0x7b,
+ 0x4d, 0x78, 0x21, 0x39, 0x00, 0x30, 0x2d, 0x9f, 0x5e, 0x9b, 0x7e, 0xb9, 0xd0, 0x1e, 0x74, 0x7d,
+ 0xe2, 0x15, 0x41, 0x13, 0x03, 0x74, 0x8a, 0xa4, 0x52, 0x02, 0xe8, 0x5c, 0x98, 0xd4, 0x29, 0x84,
+ 0x08, 0xf4, 0x2d, 0x99, 0x24, 0x62, 0x9e, 0x57, 0x5a, 0x9f, 0x36, 0x6a, 0xed, 0x42, 0x6f, 0xca,
+ 0x38, 0x31, 0xad, 0xaf, 0x6a, 0x0a, 0xa4, 0xe1, 0x3e, 0x6c, 0x3f, 0x85, 0xba, 0xf1, 0x5b, 0x83,
+ 0xbe, 0x6a, 0x38, 0xc8, 0x63, 0x99, 0x70, 0x91, 0xa5, 0xf8, 0x0b, 0xb4, 0xe6, 0x32, 0x14, 0xd5,
+ 0xef, 0x78, 0x5b, 0xdb, 0xfb, 0x82, 0xf4, 0x3c, 0xca, 0xd7, 0xab, 0xc4, 0x92, 0xa1, 0xe0, 0x45,
+ 0x19, 0x3e, 0x86, 0xdd, 0x20, 0x0c, 0x63, 0x95, 0x0b, 0x16, 0xb3, 0x38, 0xb9, 0x93, 0xd5, 0x97,
+ 0x19, 0x3c, 0xc1, 0x34, 0xb9, 0x93, 0xc6, 0x0f, 0xd8, 0xdb, 0xf0, 0x8a, 0x32, 0xd9, 0x9d, 0x10,
+ 0x6e, 0xfa, 0xd4, 0x65, 0x33, 0x6f, 0x6a, 0x59, 0xc4, 0xf3, 0x50, 0xe3, 0x25, 0xac, 0x4c, 0x98,
+ 0x72, 0x35, 0xcd, 0xff, 0xb0, 0xff, 0x04, 0x4f, 0x99, 0x37, 0x9d, 0x4c, 0x5c, 0xae, 0x36, 0xa1,
+ 0xbf, 0x7b, 0x0d, 0x3b, 0xbe, 0xc8, 0xf2, 0x2b, 0x19, 0x8a, 0x4b, 0xf1, 0x98, 0xa9, 0x5d, 0x06,
+ 0x69, 0x3c, 0xcb, 0x45, 0x96, 0xa3, 0xc6, 0x39, 0x81, 0x3d, 0xb9, 0x8a, 0x86, 0x32, 0x15, 0xc9,
+ 0x5c, 0xae, 0xc2, 0x61, 0x79, 0xdd, 0xdf, 0x87, 0x51, 0x9c, 0xdf, 0xaf, 0x6f, 0xd5, 0xd0, 0xa3,
+ 0x3a, 0x37, 0x2a, 0x73, 0x1f, 0xaa, 0xcb, 0x7f, 0x38, 0x1b, 0x45, 0xb2, 0xba, 0xff, 0xdb, 0x4e,
+ 0x01, 0x9e, 0xfd, 0x09, 0x00, 0x00, 0xff, 0xff, 0x80, 0xbf, 0xca, 0x42, 0x1e, 0x04, 0x00, 0x00,
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/common/meta.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/common/meta.pb.go
new file mode 100644
index 0000000..8fbd621
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/common/meta.pb.go
@@ -0,0 +1,142 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: voltha_protos/meta.proto
+
+package common
+
+import (
+ fmt "fmt"
+ proto "github.com/golang/protobuf/proto"
+ descriptor "github.com/golang/protobuf/protoc-gen-go/descriptor"
+ math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+type Access int32
+
+const (
+ // read-write, stored attribute
+ Access_CONFIG Access = 0
+ // read-only field, stored with the model, covered by its hash
+ Access_READ_ONLY Access = 1
+ // A read-only attribute that is not stored in the model, not covered
+ // by its hash, its value is filled real-time upon each request.
+ Access_REAL_TIME Access = 2
+)
+
+var Access_name = map[int32]string{
+ 0: "CONFIG",
+ 1: "READ_ONLY",
+ 2: "REAL_TIME",
+}
+
+var Access_value = map[string]int32{
+ "CONFIG": 0,
+ "READ_ONLY": 1,
+ "REAL_TIME": 2,
+}
+
+func (x Access) String() string {
+ return proto.EnumName(Access_name, int32(x))
+}
+
+func (Access) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_96b320e8a67781f3, []int{0}
+}
+
+type ChildNode struct {
+ Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *ChildNode) Reset() { *m = ChildNode{} }
+func (m *ChildNode) String() string { return proto.CompactTextString(m) }
+func (*ChildNode) ProtoMessage() {}
+func (*ChildNode) Descriptor() ([]byte, []int) {
+ return fileDescriptor_96b320e8a67781f3, []int{0}
+}
+
+func (m *ChildNode) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_ChildNode.Unmarshal(m, b)
+}
+func (m *ChildNode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_ChildNode.Marshal(b, m, deterministic)
+}
+func (m *ChildNode) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ChildNode.Merge(m, src)
+}
+func (m *ChildNode) XXX_Size() int {
+ return xxx_messageInfo_ChildNode.Size(m)
+}
+func (m *ChildNode) XXX_DiscardUnknown() {
+ xxx_messageInfo_ChildNode.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ChildNode proto.InternalMessageInfo
+
+func (m *ChildNode) GetKey() string {
+ if m != nil {
+ return m.Key
+ }
+ return ""
+}
+
+var E_ChildNode = &proto.ExtensionDesc{
+ ExtendedType: (*descriptor.FieldOptions)(nil),
+ ExtensionType: (*ChildNode)(nil),
+ Field: 7761772,
+ Name: "voltha.child_node",
+ Tag: "bytes,7761772,opt,name=child_node",
+ Filename: "voltha_protos/meta.proto",
+}
+
+var E_Access = &proto.ExtensionDesc{
+ ExtendedType: (*descriptor.FieldOptions)(nil),
+ ExtensionType: (*Access)(nil),
+ Field: 7761773,
+ Name: "voltha.access",
+ Tag: "varint,7761773,opt,name=access,enum=voltha.Access",
+ Filename: "voltha_protos/meta.proto",
+}
+
+func init() {
+ proto.RegisterEnum("voltha.Access", Access_name, Access_value)
+ proto.RegisterType((*ChildNode)(nil), "voltha.ChildNode")
+ proto.RegisterExtension(E_ChildNode)
+ proto.RegisterExtension(E_Access)
+}
+
+func init() { proto.RegisterFile("voltha_protos/meta.proto", fileDescriptor_96b320e8a67781f3) }
+
+var fileDescriptor_96b320e8a67781f3 = []byte{
+ // 281 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x90, 0xc1, 0x4a, 0xc3, 0x40,
+ 0x10, 0x86, 0x8d, 0x85, 0x40, 0x46, 0x2c, 0x31, 0xa7, 0x52, 0x28, 0x04, 0x4f, 0x45, 0x70, 0x17,
+ 0xd2, 0x5b, 0x6f, 0xb5, 0xb6, 0x5a, 0x88, 0x09, 0x04, 0x2f, 0x7a, 0x09, 0xc9, 0x66, 0x4d, 0x82,
+ 0x49, 0x26, 0x64, 0xb7, 0x05, 0x1f, 0xd5, 0x8b, 0x4f, 0xa0, 0xef, 0x20, 0xc9, 0x66, 0xbd, 0x7a,
+ 0xfb, 0x67, 0xf6, 0xdf, 0x8f, 0x8f, 0x81, 0xd9, 0x09, 0x2b, 0x59, 0x24, 0x71, 0xdb, 0xa1, 0x44,
+ 0x41, 0x6b, 0x2e, 0x13, 0x32, 0x64, 0xc7, 0x54, 0x2f, 0x73, 0x37, 0x47, 0xcc, 0x2b, 0x4e, 0x87,
+ 0x6d, 0x7a, 0x7c, 0xa3, 0x19, 0x17, 0xac, 0x2b, 0x5b, 0x89, 0x9d, 0x6a, 0x5e, 0x2f, 0xc0, 0xda,
+ 0x16, 0x65, 0x95, 0x05, 0x98, 0x71, 0xc7, 0x86, 0xc9, 0x3b, 0xff, 0x98, 0x19, 0xae, 0xb1, 0xb4,
+ 0xa2, 0x3e, 0xde, 0x78, 0x60, 0x6e, 0x18, 0xe3, 0x42, 0x38, 0x00, 0xe6, 0x36, 0x0c, 0xf6, 0x87,
+ 0x07, 0xfb, 0xcc, 0xb9, 0x04, 0x2b, 0xda, 0x6d, 0xee, 0xe3, 0x30, 0xf0, 0x5f, 0x6c, 0x63, 0x1c,
+ 0xfd, 0xf8, 0xf9, 0xf0, 0xb4, 0xb3, 0xcf, 0xd7, 0x11, 0x00, 0xeb, 0x91, 0x71, 0xd3, 0x33, 0x17,
+ 0x44, 0x39, 0x10, 0xed, 0x40, 0xf6, 0x25, 0xaf, 0xb2, 0xb0, 0x95, 0x25, 0x36, 0x62, 0xf6, 0xfd,
+ 0xf5, 0x39, 0x71, 0x8d, 0xe5, 0x85, 0x77, 0x45, 0x94, 0x33, 0xf9, 0xd3, 0x89, 0x2c, 0xa6, 0xe3,
+ 0xfa, 0x11, 0xcc, 0x44, 0x79, 0xfc, 0xc3, 0xfb, 0x51, 0xbc, 0xa9, 0x37, 0xd5, 0x3c, 0xe5, 0x1f,
+ 0x8d, 0xff, 0xef, 0x7c, 0x98, 0x63, 0x97, 0x13, 0x6c, 0x79, 0xc3, 0xb0, 0xcb, 0x74, 0x8b, 0x61,
+ 0x5d, 0x63, 0xf3, 0x4a, 0xf2, 0x52, 0x16, 0xc7, 0xb4, 0x1f, 0xa9, 0xae, 0x50, 0x55, 0xb9, 0x1d,
+ 0xcf, 0x7c, 0x5a, 0xd1, 0x1c, 0xa9, 0xea, 0xa7, 0xe6, 0xb0, 0x5c, 0xfd, 0x06, 0x00, 0x00, 0xff,
+ 0xff, 0x45, 0x61, 0x57, 0xbf, 0x8b, 0x01, 0x00, 0x00,
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/inter_container/inter_container.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/inter_container/inter_container.pb.go
new file mode 100644
index 0000000..880a0a2
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/inter_container/inter_container.pb.go
@@ -0,0 +1,1561 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: voltha_protos/inter_container.proto
+
+package inter_container
+
+import (
+ fmt "fmt"
+ proto "github.com/golang/protobuf/proto"
+ any "github.com/golang/protobuf/ptypes/any"
+ common "github.com/opencord/voltha-protos/v3/go/common"
+ openflow_13 "github.com/opencord/voltha-protos/v3/go/openflow_13"
+ voltha "github.com/opencord/voltha-protos/v3/go/voltha"
+ math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// ID from public import voltha_protos/common.proto
+type ID = common.ID
+
+// IDs from public import voltha_protos/common.proto
+type IDs = common.IDs
+
+// LogLevel from public import voltha_protos/common.proto
+type LogLevel = common.LogLevel
+
+// Logging from public import voltha_protos/common.proto
+type Logging = common.Logging
+
+// LoggingComponent from public import voltha_protos/common.proto
+type LoggingComponent = common.LoggingComponent
+
+// Loggings from public import voltha_protos/common.proto
+type Loggings = common.Loggings
+
+// AdminState from public import voltha_protos/common.proto
+type AdminState = common.AdminState
+
+// OperStatus from public import voltha_protos/common.proto
+type OperStatus = common.OperStatus
+
+// ConnectStatus from public import voltha_protos/common.proto
+type ConnectStatus = common.ConnectStatus
+
+// OperationResp from public import voltha_protos/common.proto
+type OperationResp = common.OperationResp
+
+// TestModeKeys from public import voltha_protos/common.proto
+type TestModeKeys = common.TestModeKeys
+
+var TestModeKeys_name = common.TestModeKeys_name
+var TestModeKeys_value = common.TestModeKeys_value
+
+const TestModeKeys_api_test = TestModeKeys(common.TestModeKeys_api_test)
+
+// LogLevel_Types from public import voltha_protos/common.proto
+type LogLevel_Types = common.LogLevel_Types
+
+var LogLevel_Types_name = common.LogLevel_Types_name
+var LogLevel_Types_value = common.LogLevel_Types_value
+
+const LogLevel_DEBUG = LogLevel_Types(common.LogLevel_DEBUG)
+const LogLevel_INFO = LogLevel_Types(common.LogLevel_INFO)
+const LogLevel_WARNING = LogLevel_Types(common.LogLevel_WARNING)
+const LogLevel_ERROR = LogLevel_Types(common.LogLevel_ERROR)
+const LogLevel_CRITICAL = LogLevel_Types(common.LogLevel_CRITICAL)
+const LogLevel_FATAL = LogLevel_Types(common.LogLevel_FATAL)
+
+// AdminState_Types from public import voltha_protos/common.proto
+type AdminState_Types = common.AdminState_Types
+
+var AdminState_Types_name = common.AdminState_Types_name
+var AdminState_Types_value = common.AdminState_Types_value
+
+const AdminState_UNKNOWN = AdminState_Types(common.AdminState_UNKNOWN)
+const AdminState_PREPROVISIONED = AdminState_Types(common.AdminState_PREPROVISIONED)
+const AdminState_ENABLED = AdminState_Types(common.AdminState_ENABLED)
+const AdminState_DISABLED = AdminState_Types(common.AdminState_DISABLED)
+const AdminState_DOWNLOADING_IMAGE = AdminState_Types(common.AdminState_DOWNLOADING_IMAGE)
+const AdminState_DELETED = AdminState_Types(common.AdminState_DELETED)
+
+// OperStatus_Types from public import voltha_protos/common.proto
+type OperStatus_Types = common.OperStatus_Types
+
+var OperStatus_Types_name = common.OperStatus_Types_name
+var OperStatus_Types_value = common.OperStatus_Types_value
+
+const OperStatus_UNKNOWN = OperStatus_Types(common.OperStatus_UNKNOWN)
+const OperStatus_DISCOVERED = OperStatus_Types(common.OperStatus_DISCOVERED)
+const OperStatus_ACTIVATING = OperStatus_Types(common.OperStatus_ACTIVATING)
+const OperStatus_TESTING = OperStatus_Types(common.OperStatus_TESTING)
+const OperStatus_ACTIVE = OperStatus_Types(common.OperStatus_ACTIVE)
+const OperStatus_FAILED = OperStatus_Types(common.OperStatus_FAILED)
+
+// ConnectStatus_Types from public import voltha_protos/common.proto
+type ConnectStatus_Types = common.ConnectStatus_Types
+
+var ConnectStatus_Types_name = common.ConnectStatus_Types_name
+var ConnectStatus_Types_value = common.ConnectStatus_Types_value
+
+const ConnectStatus_UNKNOWN = ConnectStatus_Types(common.ConnectStatus_UNKNOWN)
+const ConnectStatus_UNREACHABLE = ConnectStatus_Types(common.ConnectStatus_UNREACHABLE)
+const ConnectStatus_REACHABLE = ConnectStatus_Types(common.ConnectStatus_REACHABLE)
+
+// OperationResp_OperationReturnCode from public import voltha_protos/common.proto
+type OperationResp_OperationReturnCode = common.OperationResp_OperationReturnCode
+
+var OperationResp_OperationReturnCode_name = common.OperationResp_OperationReturnCode_name
+var OperationResp_OperationReturnCode_value = common.OperationResp_OperationReturnCode_value
+
+const OperationResp_OPERATION_SUCCESS = OperationResp_OperationReturnCode(common.OperationResp_OPERATION_SUCCESS)
+const OperationResp_OPERATION_FAILURE = OperationResp_OperationReturnCode(common.OperationResp_OPERATION_FAILURE)
+const OperationResp_OPERATION_UNSUPPORTED = OperationResp_OperationReturnCode(common.OperationResp_OPERATION_UNSUPPORTED)
+
+// DeviceGroup from public import voltha_protos/voltha.proto
+type DeviceGroup = voltha.DeviceGroup
+
+// DeviceGroups from public import voltha_protos/voltha.proto
+type DeviceGroups = voltha.DeviceGroups
+
+// EventFilterRuleKey from public import voltha_protos/voltha.proto
+type EventFilterRuleKey = voltha.EventFilterRuleKey
+
+// EventFilterRule from public import voltha_protos/voltha.proto
+type EventFilterRule = voltha.EventFilterRule
+
+// EventFilter from public import voltha_protos/voltha.proto
+type EventFilter = voltha.EventFilter
+
+// EventFilters from public import voltha_protos/voltha.proto
+type EventFilters = voltha.EventFilters
+
+// CoreInstance from public import voltha_protos/voltha.proto
+type CoreInstance = voltha.CoreInstance
+
+// CoreInstances from public import voltha_protos/voltha.proto
+type CoreInstances = voltha.CoreInstances
+
+// Voltha from public import voltha_protos/voltha.proto
+type Voltha = voltha.Voltha
+
+// SelfTestResponse from public import voltha_protos/voltha.proto
+type SelfTestResponse = voltha.SelfTestResponse
+
+// OfAgentSubscriber from public import voltha_protos/voltha.proto
+type OfAgentSubscriber = voltha.OfAgentSubscriber
+
+// Membership from public import voltha_protos/voltha.proto
+type Membership = voltha.Membership
+
+// FlowMetadata from public import voltha_protos/voltha.proto
+type FlowMetadata = voltha.FlowMetadata
+
+// EventFilterRuleKey_EventFilterRuleType from public import voltha_protos/voltha.proto
+type EventFilterRuleKey_EventFilterRuleType = voltha.EventFilterRuleKey_EventFilterRuleType
+
+var EventFilterRuleKey_EventFilterRuleType_name = voltha.EventFilterRuleKey_EventFilterRuleType_name
+var EventFilterRuleKey_EventFilterRuleType_value = voltha.EventFilterRuleKey_EventFilterRuleType_value
+
+const EventFilterRuleKey_filter_all = EventFilterRuleKey_EventFilterRuleType(voltha.EventFilterRuleKey_filter_all)
+const EventFilterRuleKey_category = EventFilterRuleKey_EventFilterRuleType(voltha.EventFilterRuleKey_category)
+const EventFilterRuleKey_sub_category = EventFilterRuleKey_EventFilterRuleType(voltha.EventFilterRuleKey_sub_category)
+const EventFilterRuleKey_kpi_event_type = EventFilterRuleKey_EventFilterRuleType(voltha.EventFilterRuleKey_kpi_event_type)
+const EventFilterRuleKey_config_event_type = EventFilterRuleKey_EventFilterRuleType(voltha.EventFilterRuleKey_config_event_type)
+const EventFilterRuleKey_device_event_type = EventFilterRuleKey_EventFilterRuleType(voltha.EventFilterRuleKey_device_event_type)
+
+// SelfTestResponse_SelfTestResult from public import voltha_protos/voltha.proto
+type SelfTestResponse_SelfTestResult = voltha.SelfTestResponse_SelfTestResult
+
+var SelfTestResponse_SelfTestResult_name = voltha.SelfTestResponse_SelfTestResult_name
+var SelfTestResponse_SelfTestResult_value = voltha.SelfTestResponse_SelfTestResult_value
+
+const SelfTestResponse_SUCCESS = SelfTestResponse_SelfTestResult(voltha.SelfTestResponse_SUCCESS)
+const SelfTestResponse_FAILURE = SelfTestResponse_SelfTestResult(voltha.SelfTestResponse_FAILURE)
+const SelfTestResponse_NOT_SUPPORTED = SelfTestResponse_SelfTestResult(voltha.SelfTestResponse_NOT_SUPPORTED)
+const SelfTestResponse_UNKNOWN_ERROR = SelfTestResponse_SelfTestResult(voltha.SelfTestResponse_UNKNOWN_ERROR)
+
+// LogicalPortId from public import voltha_protos/logical_device.proto
+type LogicalPortId = voltha.LogicalPortId
+
+// LogicalPort from public import voltha_protos/logical_device.proto
+type LogicalPort = voltha.LogicalPort
+
+// LogicalPorts from public import voltha_protos/logical_device.proto
+type LogicalPorts = voltha.LogicalPorts
+
+// LogicalDevice from public import voltha_protos/logical_device.proto
+type LogicalDevice = voltha.LogicalDevice
+
+// LogicalDevices from public import voltha_protos/logical_device.proto
+type LogicalDevices = voltha.LogicalDevices
+
+type MessageType int32
+
+const (
+ MessageType_REQUEST MessageType = 0
+ MessageType_RESPONSE MessageType = 1
+ MessageType_DEVICE_DISCOVERED MessageType = 2
+)
+
+var MessageType_name = map[int32]string{
+ 0: "REQUEST",
+ 1: "RESPONSE",
+ 2: "DEVICE_DISCOVERED",
+}
+
+var MessageType_value = map[string]int32{
+ "REQUEST": 0,
+ "RESPONSE": 1,
+ "DEVICE_DISCOVERED": 2,
+}
+
+func (x MessageType) String() string {
+ return proto.EnumName(MessageType_name, int32(x))
+}
+
+func (MessageType) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_941f0031a549667f, []int{0}
+}
+
+type ErrorCodeCodes int32
+
+const (
+ ErrorCode_UNSUPPORTED_REQUEST ErrorCodeCodes = 0
+ ErrorCode_INVALID_PARAMETERS ErrorCodeCodes = 1
+ ErrorCode_DEADLINE_EXCEEDED ErrorCodeCodes = 2
+)
+
+var ErrorCodeCodes_name = map[int32]string{
+ 0: "UNSUPPORTED_REQUEST",
+ 1: "INVALID_PARAMETERS",
+ 2: "DEADLINE_EXCEEDED",
+}
+
+var ErrorCodeCodes_value = map[string]int32{
+ "UNSUPPORTED_REQUEST": 0,
+ "INVALID_PARAMETERS": 1,
+ "DEADLINE_EXCEEDED": 2,
+}
+
+func (x ErrorCodeCodes) String() string {
+ return proto.EnumName(ErrorCodeCodes_name, int32(x))
+}
+
+func (ErrorCodeCodes) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_941f0031a549667f, []int{4, 0}
+}
+
+type InterAdapterMessageType_Types int32
+
+const (
+ InterAdapterMessageType_FLOW_REQUEST InterAdapterMessageType_Types = 0
+ InterAdapterMessageType_FLOW_RESPONSE InterAdapterMessageType_Types = 1
+ InterAdapterMessageType_OMCI_REQUEST InterAdapterMessageType_Types = 2
+ InterAdapterMessageType_OMCI_RESPONSE InterAdapterMessageType_Types = 3
+ InterAdapterMessageType_METRICS_REQUEST InterAdapterMessageType_Types = 4
+ InterAdapterMessageType_METRICS_RESPONSE InterAdapterMessageType_Types = 5
+ InterAdapterMessageType_ONU_IND_REQUEST InterAdapterMessageType_Types = 6
+ InterAdapterMessageType_ONU_IND_RESPONSE InterAdapterMessageType_Types = 7
+ InterAdapterMessageType_TECH_PROFILE_DOWNLOAD_REQUEST InterAdapterMessageType_Types = 8
+ InterAdapterMessageType_DELETE_GEM_PORT_REQUEST InterAdapterMessageType_Types = 9
+ InterAdapterMessageType_DELETE_TCONT_REQUEST InterAdapterMessageType_Types = 10
+)
+
+var InterAdapterMessageType_Types_name = map[int32]string{
+ 0: "FLOW_REQUEST",
+ 1: "FLOW_RESPONSE",
+ 2: "OMCI_REQUEST",
+ 3: "OMCI_RESPONSE",
+ 4: "METRICS_REQUEST",
+ 5: "METRICS_RESPONSE",
+ 6: "ONU_IND_REQUEST",
+ 7: "ONU_IND_RESPONSE",
+ 8: "TECH_PROFILE_DOWNLOAD_REQUEST",
+ 9: "DELETE_GEM_PORT_REQUEST",
+ 10: "DELETE_TCONT_REQUEST",
+}
+
+var InterAdapterMessageType_Types_value = map[string]int32{
+ "FLOW_REQUEST": 0,
+ "FLOW_RESPONSE": 1,
+ "OMCI_REQUEST": 2,
+ "OMCI_RESPONSE": 3,
+ "METRICS_REQUEST": 4,
+ "METRICS_RESPONSE": 5,
+ "ONU_IND_REQUEST": 6,
+ "ONU_IND_RESPONSE": 7,
+ "TECH_PROFILE_DOWNLOAD_REQUEST": 8,
+ "DELETE_GEM_PORT_REQUEST": 9,
+ "DELETE_TCONT_REQUEST": 10,
+}
+
+func (x InterAdapterMessageType_Types) String() string {
+ return proto.EnumName(InterAdapterMessageType_Types_name, int32(x))
+}
+
+func (InterAdapterMessageType_Types) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_941f0031a549667f, []int{14, 0}
+}
+
+type StrType struct {
+ Val string `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *StrType) Reset() { *m = StrType{} }
+func (m *StrType) String() string { return proto.CompactTextString(m) }
+func (*StrType) ProtoMessage() {}
+func (*StrType) Descriptor() ([]byte, []int) {
+ return fileDescriptor_941f0031a549667f, []int{0}
+}
+
+func (m *StrType) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_StrType.Unmarshal(m, b)
+}
+func (m *StrType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_StrType.Marshal(b, m, deterministic)
+}
+func (m *StrType) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_StrType.Merge(m, src)
+}
+func (m *StrType) XXX_Size() int {
+ return xxx_messageInfo_StrType.Size(m)
+}
+func (m *StrType) XXX_DiscardUnknown() {
+ xxx_messageInfo_StrType.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_StrType proto.InternalMessageInfo
+
+func (m *StrType) GetVal() string {
+ if m != nil {
+ return m.Val
+ }
+ return ""
+}
+
+type IntType struct {
+ Val int64 `protobuf:"varint,1,opt,name=val,proto3" json:"val,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *IntType) Reset() { *m = IntType{} }
+func (m *IntType) String() string { return proto.CompactTextString(m) }
+func (*IntType) ProtoMessage() {}
+func (*IntType) Descriptor() ([]byte, []int) {
+ return fileDescriptor_941f0031a549667f, []int{1}
+}
+
+func (m *IntType) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_IntType.Unmarshal(m, b)
+}
+func (m *IntType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_IntType.Marshal(b, m, deterministic)
+}
+func (m *IntType) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_IntType.Merge(m, src)
+}
+func (m *IntType) XXX_Size() int {
+ return xxx_messageInfo_IntType.Size(m)
+}
+func (m *IntType) XXX_DiscardUnknown() {
+ xxx_messageInfo_IntType.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_IntType proto.InternalMessageInfo
+
+func (m *IntType) GetVal() int64 {
+ if m != nil {
+ return m.Val
+ }
+ return 0
+}
+
+type BoolType struct {
+ Val bool `protobuf:"varint,1,opt,name=val,proto3" json:"val,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BoolType) Reset() { *m = BoolType{} }
+func (m *BoolType) String() string { return proto.CompactTextString(m) }
+func (*BoolType) ProtoMessage() {}
+func (*BoolType) Descriptor() ([]byte, []int) {
+ return fileDescriptor_941f0031a549667f, []int{2}
+}
+
+func (m *BoolType) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BoolType.Unmarshal(m, b)
+}
+func (m *BoolType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BoolType.Marshal(b, m, deterministic)
+}
+func (m *BoolType) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BoolType.Merge(m, src)
+}
+func (m *BoolType) XXX_Size() int {
+ return xxx_messageInfo_BoolType.Size(m)
+}
+func (m *BoolType) XXX_DiscardUnknown() {
+ xxx_messageInfo_BoolType.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BoolType proto.InternalMessageInfo
+
+func (m *BoolType) GetVal() bool {
+ if m != nil {
+ return m.Val
+ }
+ return false
+}
+
+type Packet struct {
+ Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Packet) Reset() { *m = Packet{} }
+func (m *Packet) String() string { return proto.CompactTextString(m) }
+func (*Packet) ProtoMessage() {}
+func (*Packet) Descriptor() ([]byte, []int) {
+ return fileDescriptor_941f0031a549667f, []int{3}
+}
+
+func (m *Packet) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Packet.Unmarshal(m, b)
+}
+func (m *Packet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Packet.Marshal(b, m, deterministic)
+}
+func (m *Packet) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Packet.Merge(m, src)
+}
+func (m *Packet) XXX_Size() int {
+ return xxx_messageInfo_Packet.Size(m)
+}
+func (m *Packet) XXX_DiscardUnknown() {
+ xxx_messageInfo_Packet.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Packet proto.InternalMessageInfo
+
+func (m *Packet) GetPayload() []byte {
+ if m != nil {
+ return m.Payload
+ }
+ return nil
+}
+
+type ErrorCode struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *ErrorCode) Reset() { *m = ErrorCode{} }
+func (m *ErrorCode) String() string { return proto.CompactTextString(m) }
+func (*ErrorCode) ProtoMessage() {}
+func (*ErrorCode) Descriptor() ([]byte, []int) {
+ return fileDescriptor_941f0031a549667f, []int{4}
+}
+
+func (m *ErrorCode) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_ErrorCode.Unmarshal(m, b)
+}
+func (m *ErrorCode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_ErrorCode.Marshal(b, m, deterministic)
+}
+func (m *ErrorCode) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ErrorCode.Merge(m, src)
+}
+func (m *ErrorCode) XXX_Size() int {
+ return xxx_messageInfo_ErrorCode.Size(m)
+}
+func (m *ErrorCode) XXX_DiscardUnknown() {
+ xxx_messageInfo_ErrorCode.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ErrorCode proto.InternalMessageInfo
+
+type Error struct {
+ Code ErrorCodeCodes `protobuf:"varint,1,opt,name=code,proto3,enum=voltha.ErrorCodeCodes" json:"code,omitempty"`
+ Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Error) Reset() { *m = Error{} }
+func (m *Error) String() string { return proto.CompactTextString(m) }
+func (*Error) ProtoMessage() {}
+func (*Error) Descriptor() ([]byte, []int) {
+ return fileDescriptor_941f0031a549667f, []int{5}
+}
+
+func (m *Error) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Error.Unmarshal(m, b)
+}
+func (m *Error) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Error.Marshal(b, m, deterministic)
+}
+func (m *Error) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Error.Merge(m, src)
+}
+func (m *Error) XXX_Size() int {
+ return xxx_messageInfo_Error.Size(m)
+}
+func (m *Error) XXX_DiscardUnknown() {
+ xxx_messageInfo_Error.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Error proto.InternalMessageInfo
+
+func (m *Error) GetCode() ErrorCodeCodes {
+ if m != nil {
+ return m.Code
+ }
+ return ErrorCode_UNSUPPORTED_REQUEST
+}
+
+func (m *Error) GetReason() string {
+ if m != nil {
+ return m.Reason
+ }
+ return ""
+}
+
+type Header struct {
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Type MessageType `protobuf:"varint,2,opt,name=type,proto3,enum=voltha.MessageType" json:"type,omitempty"`
+ FromTopic string `protobuf:"bytes,3,opt,name=from_topic,json=fromTopic,proto3" json:"from_topic,omitempty"`
+ ToTopic string `protobuf:"bytes,4,opt,name=to_topic,json=toTopic,proto3" json:"to_topic,omitempty"`
+ KeyTopic string `protobuf:"bytes,5,opt,name=key_topic,json=keyTopic,proto3" json:"key_topic,omitempty"`
+ Timestamp int64 `protobuf:"varint,6,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Header) Reset() { *m = Header{} }
+func (m *Header) String() string { return proto.CompactTextString(m) }
+func (*Header) ProtoMessage() {}
+func (*Header) Descriptor() ([]byte, []int) {
+ return fileDescriptor_941f0031a549667f, []int{6}
+}
+
+func (m *Header) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Header.Unmarshal(m, b)
+}
+func (m *Header) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Header.Marshal(b, m, deterministic)
+}
+func (m *Header) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Header.Merge(m, src)
+}
+func (m *Header) XXX_Size() int {
+ return xxx_messageInfo_Header.Size(m)
+}
+func (m *Header) XXX_DiscardUnknown() {
+ xxx_messageInfo_Header.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Header proto.InternalMessageInfo
+
+func (m *Header) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *Header) GetType() MessageType {
+ if m != nil {
+ return m.Type
+ }
+ return MessageType_REQUEST
+}
+
+func (m *Header) GetFromTopic() string {
+ if m != nil {
+ return m.FromTopic
+ }
+ return ""
+}
+
+func (m *Header) GetToTopic() string {
+ if m != nil {
+ return m.ToTopic
+ }
+ return ""
+}
+
+func (m *Header) GetKeyTopic() string {
+ if m != nil {
+ return m.KeyTopic
+ }
+ return ""
+}
+
+func (m *Header) GetTimestamp() int64 {
+ if m != nil {
+ return m.Timestamp
+ }
+ return 0
+}
+
+type Argument struct {
+ Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+ Value *any.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Argument) Reset() { *m = Argument{} }
+func (m *Argument) String() string { return proto.CompactTextString(m) }
+func (*Argument) ProtoMessage() {}
+func (*Argument) Descriptor() ([]byte, []int) {
+ return fileDescriptor_941f0031a549667f, []int{7}
+}
+
+func (m *Argument) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Argument.Unmarshal(m, b)
+}
+func (m *Argument) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Argument.Marshal(b, m, deterministic)
+}
+func (m *Argument) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Argument.Merge(m, src)
+}
+func (m *Argument) XXX_Size() int {
+ return xxx_messageInfo_Argument.Size(m)
+}
+func (m *Argument) XXX_DiscardUnknown() {
+ xxx_messageInfo_Argument.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Argument proto.InternalMessageInfo
+
+func (m *Argument) GetKey() string {
+ if m != nil {
+ return m.Key
+ }
+ return ""
+}
+
+func (m *Argument) GetValue() *any.Any {
+ if m != nil {
+ return m.Value
+ }
+ return nil
+}
+
+type InterContainerMessage struct {
+ Header *Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`
+ Body *any.Any `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *InterContainerMessage) Reset() { *m = InterContainerMessage{} }
+func (m *InterContainerMessage) String() string { return proto.CompactTextString(m) }
+func (*InterContainerMessage) ProtoMessage() {}
+func (*InterContainerMessage) Descriptor() ([]byte, []int) {
+ return fileDescriptor_941f0031a549667f, []int{8}
+}
+
+func (m *InterContainerMessage) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_InterContainerMessage.Unmarshal(m, b)
+}
+func (m *InterContainerMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_InterContainerMessage.Marshal(b, m, deterministic)
+}
+func (m *InterContainerMessage) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_InterContainerMessage.Merge(m, src)
+}
+func (m *InterContainerMessage) XXX_Size() int {
+ return xxx_messageInfo_InterContainerMessage.Size(m)
+}
+func (m *InterContainerMessage) XXX_DiscardUnknown() {
+ xxx_messageInfo_InterContainerMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_InterContainerMessage proto.InternalMessageInfo
+
+func (m *InterContainerMessage) GetHeader() *Header {
+ if m != nil {
+ return m.Header
+ }
+ return nil
+}
+
+func (m *InterContainerMessage) GetBody() *any.Any {
+ if m != nil {
+ return m.Body
+ }
+ return nil
+}
+
+type InterContainerRequestBody struct {
+ Rpc string `protobuf:"bytes,2,opt,name=rpc,proto3" json:"rpc,omitempty"`
+ Args []*Argument `protobuf:"bytes,3,rep,name=args,proto3" json:"args,omitempty"`
+ ResponseRequired bool `protobuf:"varint,4,opt,name=response_required,json=responseRequired,proto3" json:"response_required,omitempty"`
+ ReplyToTopic string `protobuf:"bytes,5,opt,name=reply_to_topic,json=replyToTopic,proto3" json:"reply_to_topic,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *InterContainerRequestBody) Reset() { *m = InterContainerRequestBody{} }
+func (m *InterContainerRequestBody) String() string { return proto.CompactTextString(m) }
+func (*InterContainerRequestBody) ProtoMessage() {}
+func (*InterContainerRequestBody) Descriptor() ([]byte, []int) {
+ return fileDescriptor_941f0031a549667f, []int{9}
+}
+
+func (m *InterContainerRequestBody) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_InterContainerRequestBody.Unmarshal(m, b)
+}
+func (m *InterContainerRequestBody) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_InterContainerRequestBody.Marshal(b, m, deterministic)
+}
+func (m *InterContainerRequestBody) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_InterContainerRequestBody.Merge(m, src)
+}
+func (m *InterContainerRequestBody) XXX_Size() int {
+ return xxx_messageInfo_InterContainerRequestBody.Size(m)
+}
+func (m *InterContainerRequestBody) XXX_DiscardUnknown() {
+ xxx_messageInfo_InterContainerRequestBody.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_InterContainerRequestBody proto.InternalMessageInfo
+
+func (m *InterContainerRequestBody) GetRpc() string {
+ if m != nil {
+ return m.Rpc
+ }
+ return ""
+}
+
+func (m *InterContainerRequestBody) GetArgs() []*Argument {
+ if m != nil {
+ return m.Args
+ }
+ return nil
+}
+
+func (m *InterContainerRequestBody) GetResponseRequired() bool {
+ if m != nil {
+ return m.ResponseRequired
+ }
+ return false
+}
+
+func (m *InterContainerRequestBody) GetReplyToTopic() string {
+ if m != nil {
+ return m.ReplyToTopic
+ }
+ return ""
+}
+
+type InterContainerResponseBody struct {
+ Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
+ Result *any.Any `protobuf:"bytes,3,opt,name=result,proto3" json:"result,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *InterContainerResponseBody) Reset() { *m = InterContainerResponseBody{} }
+func (m *InterContainerResponseBody) String() string { return proto.CompactTextString(m) }
+func (*InterContainerResponseBody) ProtoMessage() {}
+func (*InterContainerResponseBody) Descriptor() ([]byte, []int) {
+ return fileDescriptor_941f0031a549667f, []int{10}
+}
+
+func (m *InterContainerResponseBody) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_InterContainerResponseBody.Unmarshal(m, b)
+}
+func (m *InterContainerResponseBody) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_InterContainerResponseBody.Marshal(b, m, deterministic)
+}
+func (m *InterContainerResponseBody) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_InterContainerResponseBody.Merge(m, src)
+}
+func (m *InterContainerResponseBody) XXX_Size() int {
+ return xxx_messageInfo_InterContainerResponseBody.Size(m)
+}
+func (m *InterContainerResponseBody) XXX_DiscardUnknown() {
+ xxx_messageInfo_InterContainerResponseBody.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_InterContainerResponseBody proto.InternalMessageInfo
+
+func (m *InterContainerResponseBody) GetSuccess() bool {
+ if m != nil {
+ return m.Success
+ }
+ return false
+}
+
+func (m *InterContainerResponseBody) GetResult() *any.Any {
+ if m != nil {
+ return m.Result
+ }
+ return nil
+}
+
+type SwitchCapability struct {
+ Desc *openflow_13.OfpDesc `protobuf:"bytes,1,opt,name=desc,proto3" json:"desc,omitempty"`
+ SwitchFeatures *openflow_13.OfpSwitchFeatures `protobuf:"bytes,2,opt,name=switch_features,json=switchFeatures,proto3" json:"switch_features,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *SwitchCapability) Reset() { *m = SwitchCapability{} }
+func (m *SwitchCapability) String() string { return proto.CompactTextString(m) }
+func (*SwitchCapability) ProtoMessage() {}
+func (*SwitchCapability) Descriptor() ([]byte, []int) {
+ return fileDescriptor_941f0031a549667f, []int{11}
+}
+
+func (m *SwitchCapability) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_SwitchCapability.Unmarshal(m, b)
+}
+func (m *SwitchCapability) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_SwitchCapability.Marshal(b, m, deterministic)
+}
+func (m *SwitchCapability) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_SwitchCapability.Merge(m, src)
+}
+func (m *SwitchCapability) XXX_Size() int {
+ return xxx_messageInfo_SwitchCapability.Size(m)
+}
+func (m *SwitchCapability) XXX_DiscardUnknown() {
+ xxx_messageInfo_SwitchCapability.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SwitchCapability proto.InternalMessageInfo
+
+func (m *SwitchCapability) GetDesc() *openflow_13.OfpDesc {
+ if m != nil {
+ return m.Desc
+ }
+ return nil
+}
+
+func (m *SwitchCapability) GetSwitchFeatures() *openflow_13.OfpSwitchFeatures {
+ if m != nil {
+ return m.SwitchFeatures
+ }
+ return nil
+}
+
+type PortCapability struct {
+ Port *voltha.LogicalPort `protobuf:"bytes,1,opt,name=port,proto3" json:"port,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *PortCapability) Reset() { *m = PortCapability{} }
+func (m *PortCapability) String() string { return proto.CompactTextString(m) }
+func (*PortCapability) ProtoMessage() {}
+func (*PortCapability) Descriptor() ([]byte, []int) {
+ return fileDescriptor_941f0031a549667f, []int{12}
+}
+
+func (m *PortCapability) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_PortCapability.Unmarshal(m, b)
+}
+func (m *PortCapability) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_PortCapability.Marshal(b, m, deterministic)
+}
+func (m *PortCapability) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_PortCapability.Merge(m, src)
+}
+func (m *PortCapability) XXX_Size() int {
+ return xxx_messageInfo_PortCapability.Size(m)
+}
+func (m *PortCapability) XXX_DiscardUnknown() {
+ xxx_messageInfo_PortCapability.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PortCapability proto.InternalMessageInfo
+
+func (m *PortCapability) GetPort() *voltha.LogicalPort {
+ if m != nil {
+ return m.Port
+ }
+ return nil
+}
+
+type DeviceDiscovered struct {
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ ParentId string `protobuf:"bytes,2,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
+ DeviceType string `protobuf:"bytes,3,opt,name=device_type,json=deviceType,proto3" json:"device_type,omitempty"`
+ Publisher string `protobuf:"bytes,4,opt,name=publisher,proto3" json:"publisher,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *DeviceDiscovered) Reset() { *m = DeviceDiscovered{} }
+func (m *DeviceDiscovered) String() string { return proto.CompactTextString(m) }
+func (*DeviceDiscovered) ProtoMessage() {}
+func (*DeviceDiscovered) Descriptor() ([]byte, []int) {
+ return fileDescriptor_941f0031a549667f, []int{13}
+}
+
+func (m *DeviceDiscovered) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_DeviceDiscovered.Unmarshal(m, b)
+}
+func (m *DeviceDiscovered) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_DeviceDiscovered.Marshal(b, m, deterministic)
+}
+func (m *DeviceDiscovered) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_DeviceDiscovered.Merge(m, src)
+}
+func (m *DeviceDiscovered) XXX_Size() int {
+ return xxx_messageInfo_DeviceDiscovered.Size(m)
+}
+func (m *DeviceDiscovered) XXX_DiscardUnknown() {
+ xxx_messageInfo_DeviceDiscovered.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeviceDiscovered proto.InternalMessageInfo
+
+func (m *DeviceDiscovered) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *DeviceDiscovered) GetParentId() string {
+ if m != nil {
+ return m.ParentId
+ }
+ return ""
+}
+
+func (m *DeviceDiscovered) GetDeviceType() string {
+ if m != nil {
+ return m.DeviceType
+ }
+ return ""
+}
+
+func (m *DeviceDiscovered) GetPublisher() string {
+ if m != nil {
+ return m.Publisher
+ }
+ return ""
+}
+
+type InterAdapterMessageType struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *InterAdapterMessageType) Reset() { *m = InterAdapterMessageType{} }
+func (m *InterAdapterMessageType) String() string { return proto.CompactTextString(m) }
+func (*InterAdapterMessageType) ProtoMessage() {}
+func (*InterAdapterMessageType) Descriptor() ([]byte, []int) {
+ return fileDescriptor_941f0031a549667f, []int{14}
+}
+
+func (m *InterAdapterMessageType) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_InterAdapterMessageType.Unmarshal(m, b)
+}
+func (m *InterAdapterMessageType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_InterAdapterMessageType.Marshal(b, m, deterministic)
+}
+func (m *InterAdapterMessageType) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_InterAdapterMessageType.Merge(m, src)
+}
+func (m *InterAdapterMessageType) XXX_Size() int {
+ return xxx_messageInfo_InterAdapterMessageType.Size(m)
+}
+func (m *InterAdapterMessageType) XXX_DiscardUnknown() {
+ xxx_messageInfo_InterAdapterMessageType.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_InterAdapterMessageType proto.InternalMessageInfo
+
+type InterAdapterHeader struct {
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Type InterAdapterMessageType_Types `protobuf:"varint,2,opt,name=type,proto3,enum=voltha.InterAdapterMessageType_Types" json:"type,omitempty"`
+ FromTopic string `protobuf:"bytes,3,opt,name=from_topic,json=fromTopic,proto3" json:"from_topic,omitempty"`
+ ToTopic string `protobuf:"bytes,4,opt,name=to_topic,json=toTopic,proto3" json:"to_topic,omitempty"`
+ ToDeviceId string `protobuf:"bytes,5,opt,name=to_device_id,json=toDeviceId,proto3" json:"to_device_id,omitempty"`
+ ProxyDeviceId string `protobuf:"bytes,6,opt,name=proxy_device_id,json=proxyDeviceId,proto3" json:"proxy_device_id,omitempty"`
+ Timestamp int64 `protobuf:"varint,7,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *InterAdapterHeader) Reset() { *m = InterAdapterHeader{} }
+func (m *InterAdapterHeader) String() string { return proto.CompactTextString(m) }
+func (*InterAdapterHeader) ProtoMessage() {}
+func (*InterAdapterHeader) Descriptor() ([]byte, []int) {
+ return fileDescriptor_941f0031a549667f, []int{15}
+}
+
+func (m *InterAdapterHeader) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_InterAdapterHeader.Unmarshal(m, b)
+}
+func (m *InterAdapterHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_InterAdapterHeader.Marshal(b, m, deterministic)
+}
+func (m *InterAdapterHeader) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_InterAdapterHeader.Merge(m, src)
+}
+func (m *InterAdapterHeader) XXX_Size() int {
+ return xxx_messageInfo_InterAdapterHeader.Size(m)
+}
+func (m *InterAdapterHeader) XXX_DiscardUnknown() {
+ xxx_messageInfo_InterAdapterHeader.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_InterAdapterHeader proto.InternalMessageInfo
+
+func (m *InterAdapterHeader) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *InterAdapterHeader) GetType() InterAdapterMessageType_Types {
+ if m != nil {
+ return m.Type
+ }
+ return InterAdapterMessageType_FLOW_REQUEST
+}
+
+func (m *InterAdapterHeader) GetFromTopic() string {
+ if m != nil {
+ return m.FromTopic
+ }
+ return ""
+}
+
+func (m *InterAdapterHeader) GetToTopic() string {
+ if m != nil {
+ return m.ToTopic
+ }
+ return ""
+}
+
+func (m *InterAdapterHeader) GetToDeviceId() string {
+ if m != nil {
+ return m.ToDeviceId
+ }
+ return ""
+}
+
+func (m *InterAdapterHeader) GetProxyDeviceId() string {
+ if m != nil {
+ return m.ProxyDeviceId
+ }
+ return ""
+}
+
+func (m *InterAdapterHeader) GetTimestamp() int64 {
+ if m != nil {
+ return m.Timestamp
+ }
+ return 0
+}
+
+type InterAdapterOmciMessage struct {
+ Message []byte `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
+ ConnectStatus common.ConnectStatus_Types `protobuf:"varint,2,opt,name=connect_status,json=connectStatus,proto3,enum=common.ConnectStatus_Types" json:"connect_status,omitempty"`
+ ProxyAddress *voltha.Device_ProxyAddress `protobuf:"bytes,3,opt,name=proxy_address,json=proxyAddress,proto3" json:"proxy_address,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *InterAdapterOmciMessage) Reset() { *m = InterAdapterOmciMessage{} }
+func (m *InterAdapterOmciMessage) String() string { return proto.CompactTextString(m) }
+func (*InterAdapterOmciMessage) ProtoMessage() {}
+func (*InterAdapterOmciMessage) Descriptor() ([]byte, []int) {
+ return fileDescriptor_941f0031a549667f, []int{16}
+}
+
+func (m *InterAdapterOmciMessage) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_InterAdapterOmciMessage.Unmarshal(m, b)
+}
+func (m *InterAdapterOmciMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_InterAdapterOmciMessage.Marshal(b, m, deterministic)
+}
+func (m *InterAdapterOmciMessage) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_InterAdapterOmciMessage.Merge(m, src)
+}
+func (m *InterAdapterOmciMessage) XXX_Size() int {
+ return xxx_messageInfo_InterAdapterOmciMessage.Size(m)
+}
+func (m *InterAdapterOmciMessage) XXX_DiscardUnknown() {
+ xxx_messageInfo_InterAdapterOmciMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_InterAdapterOmciMessage proto.InternalMessageInfo
+
+func (m *InterAdapterOmciMessage) GetMessage() []byte {
+ if m != nil {
+ return m.Message
+ }
+ return nil
+}
+
+func (m *InterAdapterOmciMessage) GetConnectStatus() common.ConnectStatus_Types {
+ if m != nil {
+ return m.ConnectStatus
+ }
+ return common.ConnectStatus_UNKNOWN
+}
+
+func (m *InterAdapterOmciMessage) GetProxyAddress() *voltha.Device_ProxyAddress {
+ if m != nil {
+ return m.ProxyAddress
+ }
+ return nil
+}
+
+type InterAdapterTechProfileDownloadMessage struct {
+ UniId uint32 `protobuf:"varint,1,opt,name=uni_id,json=uniId,proto3" json:"uni_id,omitempty"`
+ Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *InterAdapterTechProfileDownloadMessage) Reset() {
+ *m = InterAdapterTechProfileDownloadMessage{}
+}
+func (m *InterAdapterTechProfileDownloadMessage) String() string { return proto.CompactTextString(m) }
+func (*InterAdapterTechProfileDownloadMessage) ProtoMessage() {}
+func (*InterAdapterTechProfileDownloadMessage) Descriptor() ([]byte, []int) {
+ return fileDescriptor_941f0031a549667f, []int{17}
+}
+
+func (m *InterAdapterTechProfileDownloadMessage) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_InterAdapterTechProfileDownloadMessage.Unmarshal(m, b)
+}
+func (m *InterAdapterTechProfileDownloadMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_InterAdapterTechProfileDownloadMessage.Marshal(b, m, deterministic)
+}
+func (m *InterAdapterTechProfileDownloadMessage) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_InterAdapterTechProfileDownloadMessage.Merge(m, src)
+}
+func (m *InterAdapterTechProfileDownloadMessage) XXX_Size() int {
+ return xxx_messageInfo_InterAdapterTechProfileDownloadMessage.Size(m)
+}
+func (m *InterAdapterTechProfileDownloadMessage) XXX_DiscardUnknown() {
+ xxx_messageInfo_InterAdapterTechProfileDownloadMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_InterAdapterTechProfileDownloadMessage proto.InternalMessageInfo
+
+func (m *InterAdapterTechProfileDownloadMessage) GetUniId() uint32 {
+ if m != nil {
+ return m.UniId
+ }
+ return 0
+}
+
+func (m *InterAdapterTechProfileDownloadMessage) GetPath() string {
+ if m != nil {
+ return m.Path
+ }
+ return ""
+}
+
+type InterAdapterDeleteGemPortMessage struct {
+ UniId uint32 `protobuf:"varint,1,opt,name=uni_id,json=uniId,proto3" json:"uni_id,omitempty"`
+ TpPath string `protobuf:"bytes,2,opt,name=tp_path,json=tpPath,proto3" json:"tp_path,omitempty"`
+ GemPortId uint32 `protobuf:"varint,3,opt,name=gem_port_id,json=gemPortId,proto3" json:"gem_port_id,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *InterAdapterDeleteGemPortMessage) Reset() { *m = InterAdapterDeleteGemPortMessage{} }
+func (m *InterAdapterDeleteGemPortMessage) String() string { return proto.CompactTextString(m) }
+func (*InterAdapterDeleteGemPortMessage) ProtoMessage() {}
+func (*InterAdapterDeleteGemPortMessage) Descriptor() ([]byte, []int) {
+ return fileDescriptor_941f0031a549667f, []int{18}
+}
+
+func (m *InterAdapterDeleteGemPortMessage) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_InterAdapterDeleteGemPortMessage.Unmarshal(m, b)
+}
+func (m *InterAdapterDeleteGemPortMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_InterAdapterDeleteGemPortMessage.Marshal(b, m, deterministic)
+}
+func (m *InterAdapterDeleteGemPortMessage) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_InterAdapterDeleteGemPortMessage.Merge(m, src)
+}
+func (m *InterAdapterDeleteGemPortMessage) XXX_Size() int {
+ return xxx_messageInfo_InterAdapterDeleteGemPortMessage.Size(m)
+}
+func (m *InterAdapterDeleteGemPortMessage) XXX_DiscardUnknown() {
+ xxx_messageInfo_InterAdapterDeleteGemPortMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_InterAdapterDeleteGemPortMessage proto.InternalMessageInfo
+
+func (m *InterAdapterDeleteGemPortMessage) GetUniId() uint32 {
+ if m != nil {
+ return m.UniId
+ }
+ return 0
+}
+
+func (m *InterAdapterDeleteGemPortMessage) GetTpPath() string {
+ if m != nil {
+ return m.TpPath
+ }
+ return ""
+}
+
+func (m *InterAdapterDeleteGemPortMessage) GetGemPortId() uint32 {
+ if m != nil {
+ return m.GemPortId
+ }
+ return 0
+}
+
+type InterAdapterDeleteTcontMessage struct {
+ UniId uint32 `protobuf:"varint,1,opt,name=uni_id,json=uniId,proto3" json:"uni_id,omitempty"`
+ TpPath string `protobuf:"bytes,2,opt,name=tp_path,json=tpPath,proto3" json:"tp_path,omitempty"`
+ AllocId uint32 `protobuf:"varint,3,opt,name=alloc_id,json=allocId,proto3" json:"alloc_id,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *InterAdapterDeleteTcontMessage) Reset() { *m = InterAdapterDeleteTcontMessage{} }
+func (m *InterAdapterDeleteTcontMessage) String() string { return proto.CompactTextString(m) }
+func (*InterAdapterDeleteTcontMessage) ProtoMessage() {}
+func (*InterAdapterDeleteTcontMessage) Descriptor() ([]byte, []int) {
+ return fileDescriptor_941f0031a549667f, []int{19}
+}
+
+func (m *InterAdapterDeleteTcontMessage) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_InterAdapterDeleteTcontMessage.Unmarshal(m, b)
+}
+func (m *InterAdapterDeleteTcontMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_InterAdapterDeleteTcontMessage.Marshal(b, m, deterministic)
+}
+func (m *InterAdapterDeleteTcontMessage) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_InterAdapterDeleteTcontMessage.Merge(m, src)
+}
+func (m *InterAdapterDeleteTcontMessage) XXX_Size() int {
+ return xxx_messageInfo_InterAdapterDeleteTcontMessage.Size(m)
+}
+func (m *InterAdapterDeleteTcontMessage) XXX_DiscardUnknown() {
+ xxx_messageInfo_InterAdapterDeleteTcontMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_InterAdapterDeleteTcontMessage proto.InternalMessageInfo
+
+func (m *InterAdapterDeleteTcontMessage) GetUniId() uint32 {
+ if m != nil {
+ return m.UniId
+ }
+ return 0
+}
+
+func (m *InterAdapterDeleteTcontMessage) GetTpPath() string {
+ if m != nil {
+ return m.TpPath
+ }
+ return ""
+}
+
+func (m *InterAdapterDeleteTcontMessage) GetAllocId() uint32 {
+ if m != nil {
+ return m.AllocId
+ }
+ return 0
+}
+
+type InterAdapterResponseBody struct {
+ Status bool `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
+ // Types that are valid to be assigned to Payload:
+ // *InterAdapterResponseBody_Body
+ // *InterAdapterResponseBody_Omci
+ Payload isInterAdapterResponseBody_Payload `protobuf_oneof:"payload"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *InterAdapterResponseBody) Reset() { *m = InterAdapterResponseBody{} }
+func (m *InterAdapterResponseBody) String() string { return proto.CompactTextString(m) }
+func (*InterAdapterResponseBody) ProtoMessage() {}
+func (*InterAdapterResponseBody) Descriptor() ([]byte, []int) {
+ return fileDescriptor_941f0031a549667f, []int{20}
+}
+
+func (m *InterAdapterResponseBody) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_InterAdapterResponseBody.Unmarshal(m, b)
+}
+func (m *InterAdapterResponseBody) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_InterAdapterResponseBody.Marshal(b, m, deterministic)
+}
+func (m *InterAdapterResponseBody) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_InterAdapterResponseBody.Merge(m, src)
+}
+func (m *InterAdapterResponseBody) XXX_Size() int {
+ return xxx_messageInfo_InterAdapterResponseBody.Size(m)
+}
+func (m *InterAdapterResponseBody) XXX_DiscardUnknown() {
+ xxx_messageInfo_InterAdapterResponseBody.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_InterAdapterResponseBody proto.InternalMessageInfo
+
+func (m *InterAdapterResponseBody) GetStatus() bool {
+ if m != nil {
+ return m.Status
+ }
+ return false
+}
+
+type isInterAdapterResponseBody_Payload interface {
+ isInterAdapterResponseBody_Payload()
+}
+
+type InterAdapterResponseBody_Body struct {
+ Body *any.Any `protobuf:"bytes,2,opt,name=body,proto3,oneof"`
+}
+
+type InterAdapterResponseBody_Omci struct {
+ Omci *InterAdapterOmciMessage `protobuf:"bytes,3,opt,name=omci,proto3,oneof"`
+}
+
+func (*InterAdapterResponseBody_Body) isInterAdapterResponseBody_Payload() {}
+
+func (*InterAdapterResponseBody_Omci) isInterAdapterResponseBody_Payload() {}
+
+func (m *InterAdapterResponseBody) GetPayload() isInterAdapterResponseBody_Payload {
+ if m != nil {
+ return m.Payload
+ }
+ return nil
+}
+
+func (m *InterAdapterResponseBody) GetBody() *any.Any {
+ if x, ok := m.GetPayload().(*InterAdapterResponseBody_Body); ok {
+ return x.Body
+ }
+ return nil
+}
+
+func (m *InterAdapterResponseBody) GetOmci() *InterAdapterOmciMessage {
+ if x, ok := m.GetPayload().(*InterAdapterResponseBody_Omci); ok {
+ return x.Omci
+ }
+ return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*InterAdapterResponseBody) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*InterAdapterResponseBody_Body)(nil),
+ (*InterAdapterResponseBody_Omci)(nil),
+ }
+}
+
+type InterAdapterMessage struct {
+ Header *InterAdapterHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`
+ Body *any.Any `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *InterAdapterMessage) Reset() { *m = InterAdapterMessage{} }
+func (m *InterAdapterMessage) String() string { return proto.CompactTextString(m) }
+func (*InterAdapterMessage) ProtoMessage() {}
+func (*InterAdapterMessage) Descriptor() ([]byte, []int) {
+ return fileDescriptor_941f0031a549667f, []int{21}
+}
+
+func (m *InterAdapterMessage) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_InterAdapterMessage.Unmarshal(m, b)
+}
+func (m *InterAdapterMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_InterAdapterMessage.Marshal(b, m, deterministic)
+}
+func (m *InterAdapterMessage) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_InterAdapterMessage.Merge(m, src)
+}
+func (m *InterAdapterMessage) XXX_Size() int {
+ return xxx_messageInfo_InterAdapterMessage.Size(m)
+}
+func (m *InterAdapterMessage) XXX_DiscardUnknown() {
+ xxx_messageInfo_InterAdapterMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_InterAdapterMessage proto.InternalMessageInfo
+
+func (m *InterAdapterMessage) GetHeader() *InterAdapterHeader {
+ if m != nil {
+ return m.Header
+ }
+ return nil
+}
+
+func (m *InterAdapterMessage) GetBody() *any.Any {
+ if m != nil {
+ return m.Body
+ }
+ return nil
+}
+
+func init() {
+ proto.RegisterEnum("voltha.MessageType", MessageType_name, MessageType_value)
+ proto.RegisterEnum("voltha.ErrorCodeCodes", ErrorCodeCodes_name, ErrorCodeCodes_value)
+ proto.RegisterEnum("voltha.InterAdapterMessageType_Types", InterAdapterMessageType_Types_name, InterAdapterMessageType_Types_value)
+ proto.RegisterType((*StrType)(nil), "voltha.StrType")
+ proto.RegisterType((*IntType)(nil), "voltha.IntType")
+ proto.RegisterType((*BoolType)(nil), "voltha.BoolType")
+ proto.RegisterType((*Packet)(nil), "voltha.Packet")
+ proto.RegisterType((*ErrorCode)(nil), "voltha.ErrorCode")
+ proto.RegisterType((*Error)(nil), "voltha.Error")
+ proto.RegisterType((*Header)(nil), "voltha.Header")
+ proto.RegisterType((*Argument)(nil), "voltha.Argument")
+ proto.RegisterType((*InterContainerMessage)(nil), "voltha.InterContainerMessage")
+ proto.RegisterType((*InterContainerRequestBody)(nil), "voltha.InterContainerRequestBody")
+ proto.RegisterType((*InterContainerResponseBody)(nil), "voltha.InterContainerResponseBody")
+ proto.RegisterType((*SwitchCapability)(nil), "voltha.SwitchCapability")
+ proto.RegisterType((*PortCapability)(nil), "voltha.PortCapability")
+ proto.RegisterType((*DeviceDiscovered)(nil), "voltha.DeviceDiscovered")
+ proto.RegisterType((*InterAdapterMessageType)(nil), "voltha.InterAdapterMessageType")
+ proto.RegisterType((*InterAdapterHeader)(nil), "voltha.InterAdapterHeader")
+ proto.RegisterType((*InterAdapterOmciMessage)(nil), "voltha.InterAdapterOmciMessage")
+ proto.RegisterType((*InterAdapterTechProfileDownloadMessage)(nil), "voltha.InterAdapterTechProfileDownloadMessage")
+ proto.RegisterType((*InterAdapterDeleteGemPortMessage)(nil), "voltha.InterAdapterDeleteGemPortMessage")
+ proto.RegisterType((*InterAdapterDeleteTcontMessage)(nil), "voltha.InterAdapterDeleteTcontMessage")
+ proto.RegisterType((*InterAdapterResponseBody)(nil), "voltha.InterAdapterResponseBody")
+ proto.RegisterType((*InterAdapterMessage)(nil), "voltha.InterAdapterMessage")
+}
+
+func init() {
+ proto.RegisterFile("voltha_protos/inter_container.proto", fileDescriptor_941f0031a549667f)
+}
+
+var fileDescriptor_941f0031a549667f = []byte{
+ // 1335 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xcb, 0x6e, 0xdb, 0x46,
+ 0x17, 0x8e, 0xee, 0xd2, 0x91, 0xad, 0x28, 0xe3, 0x38, 0x96, 0xed, 0x5c, 0xfc, 0xf3, 0x4f, 0x93,
+ 0x34, 0x69, 0x65, 0xd4, 0x41, 0x51, 0x64, 0xd5, 0xca, 0x12, 0x13, 0x13, 0x90, 0x25, 0x95, 0x92,
+ 0x93, 0xa2, 0x28, 0x40, 0xd0, 0xe4, 0x58, 0x22, 0x4c, 0x71, 0x98, 0xe1, 0xd0, 0x29, 0x37, 0x05,
+ 0xba, 0xeb, 0x4b, 0x14, 0xe8, 0xaa, 0x8f, 0x50, 0xa0, 0x6f, 0x57, 0xcc, 0x85, 0x12, 0xa5, 0xc4,
+ 0x0d, 0x90, 0xee, 0x38, 0xe7, 0xfb, 0xe6, 0x9c, 0xe1, 0xb9, 0x7c, 0x33, 0xf0, 0xff, 0x2b, 0xe2,
+ 0xb3, 0x99, 0x6d, 0x85, 0x94, 0x30, 0x12, 0x1d, 0x7a, 0x01, 0xc3, 0xd4, 0x72, 0x48, 0xc0, 0x6c,
+ 0x2f, 0xc0, 0xb4, 0x2d, 0xcc, 0xa8, 0x2c, 0x49, 0x7b, 0x7b, 0xab, 0x64, 0x87, 0xcc, 0xe7, 0x24,
+ 0x90, 0x9c, 0x75, 0x4c, 0xae, 0x14, 0xb6, 0x3b, 0x25, 0x64, 0xea, 0xe3, 0x43, 0xb1, 0x3a, 0x8f,
+ 0x2f, 0x0e, 0xed, 0x20, 0x51, 0xd0, 0x83, 0xd5, 0x6d, 0x24, 0xc4, 0xc1, 0x85, 0x4f, 0xde, 0x59,
+ 0x5f, 0x3d, 0x57, 0x04, 0x6d, 0x95, 0xe0, 0x93, 0xa9, 0xe7, 0xd8, 0xbe, 0xe5, 0xe2, 0x2b, 0xcf,
+ 0xc1, 0x92, 0xa3, 0xed, 0x43, 0x65, 0xcc, 0xe8, 0x24, 0x09, 0x31, 0x6a, 0x42, 0xe1, 0xca, 0xf6,
+ 0x5b, 0xb9, 0x83, 0xdc, 0x93, 0x9a, 0xc9, 0x3f, 0x39, 0x68, 0x04, 0x6c, 0x1d, 0x2c, 0x48, 0xf0,
+ 0x2e, 0x54, 0x8f, 0x09, 0xf1, 0xd7, 0xd1, 0xaa, 0x44, 0x35, 0x28, 0x8f, 0x6c, 0xe7, 0x12, 0x33,
+ 0xd4, 0x82, 0x4a, 0x68, 0x27, 0x3e, 0xb1, 0x5d, 0x81, 0x6f, 0x98, 0xe9, 0x52, 0xfb, 0x09, 0x6a,
+ 0x3a, 0xa5, 0x84, 0x76, 0x89, 0x8b, 0xb5, 0x21, 0x94, 0x1c, 0xe2, 0xe2, 0x08, 0xed, 0xc0, 0xd6,
+ 0xd9, 0x60, 0x7c, 0x36, 0x1a, 0x0d, 0xcd, 0x89, 0xde, 0xb3, 0x4c, 0xfd, 0xfb, 0x33, 0x7d, 0x3c,
+ 0x69, 0xde, 0x40, 0x77, 0x00, 0x19, 0x83, 0xd7, 0x9d, 0xbe, 0xd1, 0xb3, 0x46, 0x1d, 0xb3, 0x73,
+ 0xaa, 0x4f, 0x74, 0x73, 0xdc, 0xcc, 0xa1, 0x6d, 0xb8, 0xd5, 0xd3, 0x3b, 0xbd, 0xbe, 0x31, 0xd0,
+ 0x2d, 0xfd, 0x87, 0xae, 0xae, 0xf7, 0xf4, 0x5e, 0x33, 0xaf, 0xf5, 0xa1, 0x24, 0xbc, 0xa3, 0x67,
+ 0x50, 0xe4, 0x9e, 0x45, 0xf4, 0xc6, 0xd1, 0x4e, 0x5b, 0xe5, 0x77, 0x11, 0xba, 0x2d, 0xe2, 0x9a,
+ 0x82, 0x84, 0xee, 0x40, 0x99, 0x62, 0x3b, 0x22, 0x41, 0x2b, 0x2f, 0xf2, 0xa0, 0x56, 0xda, 0x5f,
+ 0x39, 0x28, 0x9f, 0x60, 0xdb, 0xc5, 0x14, 0x35, 0x20, 0xef, 0xb9, 0x2a, 0x4d, 0x79, 0xcf, 0x45,
+ 0x8f, 0xa1, 0xc8, 0x92, 0x10, 0x8b, 0x0d, 0x8d, 0xa3, 0xad, 0xd4, 0xff, 0x29, 0x8e, 0x22, 0x7b,
+ 0x8a, 0x79, 0x7e, 0x4c, 0x41, 0x40, 0xf7, 0x00, 0x2e, 0x28, 0x99, 0x5b, 0x8c, 0x84, 0x9e, 0xd3,
+ 0x2a, 0x08, 0x07, 0x35, 0x6e, 0x99, 0x70, 0x03, 0xda, 0x85, 0x2a, 0x23, 0x0a, 0x2c, 0x0a, 0xb0,
+ 0xc2, 0x88, 0x84, 0xf6, 0xa1, 0x76, 0x89, 0x13, 0x85, 0x95, 0x04, 0x56, 0xbd, 0xc4, 0x89, 0x04,
+ 0xef, 0x42, 0x8d, 0x79, 0x73, 0x1c, 0x31, 0x7b, 0x1e, 0xb6, 0xca, 0xa2, 0x40, 0x4b, 0x83, 0x76,
+ 0x02, 0xd5, 0x0e, 0x9d, 0xc6, 0x73, 0x1c, 0x30, 0x5e, 0xa6, 0x4b, 0x9c, 0xa4, 0x15, 0xbe, 0xc4,
+ 0x09, 0x7a, 0x0a, 0xa5, 0x2b, 0xdb, 0x8f, 0xe5, 0xe1, 0xeb, 0x47, 0xb7, 0xdb, 0xb2, 0xdd, 0xda,
+ 0x69, 0xbb, 0xb5, 0x3b, 0x41, 0x62, 0x4a, 0x8a, 0xe6, 0xc1, 0xb6, 0xc1, 0x7b, 0xbc, 0x9b, 0xb6,
+ 0xb8, 0xfa, 0x43, 0xf4, 0x08, 0xca, 0x33, 0x91, 0x1a, 0xe1, 0xb9, 0x7e, 0xd4, 0x48, 0x53, 0x20,
+ 0x13, 0x66, 0x2a, 0x14, 0x3d, 0x81, 0xe2, 0x39, 0x71, 0x93, 0x7f, 0x8d, 0x25, 0x18, 0xda, 0x9f,
+ 0x39, 0xd8, 0x5d, 0x8d, 0x65, 0xe2, 0xb7, 0x31, 0x8e, 0xd8, 0x31, 0x71, 0x13, 0xfe, 0x1b, 0x34,
+ 0x74, 0x54, 0x81, 0xf8, 0x27, 0x7a, 0x08, 0x45, 0x9b, 0x4e, 0xa3, 0x56, 0xe1, 0xa0, 0xf0, 0xa4,
+ 0x7e, 0xd4, 0x4c, 0xe3, 0xa7, 0x3f, 0x6e, 0x0a, 0x14, 0x3d, 0x83, 0x5b, 0x14, 0x47, 0x21, 0x09,
+ 0x22, 0x6c, 0x51, 0xfc, 0x36, 0xf6, 0x28, 0x76, 0x45, 0xa6, 0xab, 0x66, 0x33, 0x05, 0x4c, 0x65,
+ 0x47, 0x0f, 0xa1, 0x41, 0x71, 0xe8, 0xf3, 0xa4, 0xaf, 0xe4, 0x7d, 0x43, 0x58, 0x27, 0xb2, 0x30,
+ 0x9a, 0x0b, 0x7b, 0xeb, 0xe7, 0x94, 0x7e, 0xc4, 0x41, 0x5b, 0x50, 0x89, 0x62, 0xc7, 0xc1, 0x51,
+ 0xa4, 0x46, 0x23, 0x5d, 0xa2, 0x2f, 0x78, 0x9b, 0x45, 0xb1, 0xcf, 0x44, 0x1b, 0x5c, 0x97, 0x0c,
+ 0xc5, 0xd1, 0x7e, 0xcb, 0x41, 0x73, 0xfc, 0xce, 0x63, 0xce, 0xac, 0x6b, 0x87, 0xf6, 0xb9, 0xe7,
+ 0x7b, 0x2c, 0x41, 0x9f, 0x43, 0xd1, 0xc5, 0x91, 0xa3, 0x72, 0xbe, 0xdd, 0xce, 0xce, 0x3f, 0xb9,
+ 0x08, 0x2d, 0x0e, 0x9a, 0x82, 0x82, 0x0c, 0xb8, 0x19, 0x89, 0xed, 0xd6, 0x05, 0xb6, 0x59, 0x4c,
+ 0x71, 0xa4, 0x6a, 0x70, 0xf0, 0xde, 0xae, 0x35, 0x9e, 0xd9, 0x90, 0x86, 0x97, 0x6a, 0xad, 0xbd,
+ 0x80, 0xc6, 0x88, 0x50, 0x96, 0x39, 0xc7, 0x63, 0x28, 0x86, 0x84, 0x32, 0x75, 0x8e, 0x45, 0xfb,
+ 0xf7, 0xa5, 0xda, 0x70, 0xb2, 0x29, 0x08, 0xda, 0x2f, 0xd0, 0xec, 0x09, 0xe9, 0xe9, 0x79, 0x91,
+ 0x43, 0xae, 0x30, 0xcf, 0xf2, 0xfa, 0x2c, 0xed, 0x43, 0x2d, 0xb4, 0x29, 0x0e, 0x98, 0xe5, 0xb9,
+ 0xaa, 0xc0, 0x55, 0x69, 0x30, 0x5c, 0xf4, 0x00, 0xea, 0x52, 0xbb, 0x2c, 0x31, 0x6f, 0x72, 0x80,
+ 0x40, 0x9a, 0x84, 0x0c, 0xdd, 0x85, 0x5a, 0x18, 0x9f, 0xfb, 0x5e, 0x34, 0xc3, 0x54, 0x8d, 0xd0,
+ 0xd2, 0xa0, 0xfd, 0x9e, 0x87, 0x1d, 0x51, 0xac, 0x8e, 0x6b, 0x87, 0x6c, 0xd1, 0xbe, 0x7c, 0xa7,
+ 0xf6, 0x6b, 0x1e, 0x4a, 0xfc, 0x23, 0x42, 0x4d, 0xd8, 0x78, 0xd9, 0x1f, 0xbe, 0xc9, 0xe8, 0xce,
+ 0x2d, 0xd8, 0x54, 0x96, 0xf1, 0x68, 0x38, 0x18, 0xeb, 0xcd, 0x1c, 0x27, 0x0d, 0x4f, 0xbb, 0xc6,
+ 0x82, 0x94, 0xe7, 0x24, 0x65, 0x51, 0xa4, 0x02, 0xda, 0x82, 0x9b, 0xa7, 0xfa, 0xc4, 0x34, 0xba,
+ 0xe3, 0x05, 0xaf, 0x88, 0x6e, 0x43, 0x73, 0x69, 0x54, 0xd4, 0x12, 0xa7, 0x0e, 0x07, 0x67, 0x96,
+ 0x31, 0x58, 0xea, 0x5d, 0x99, 0x53, 0x97, 0x46, 0x45, 0xad, 0xa0, 0xff, 0xc1, 0xbd, 0x89, 0xde,
+ 0x3d, 0xb1, 0x46, 0xe6, 0xf0, 0xa5, 0xd1, 0xd7, 0xad, 0xde, 0xf0, 0xcd, 0xa0, 0x3f, 0xec, 0x2c,
+ 0x37, 0x56, 0xd1, 0x3e, 0xec, 0xf4, 0xf4, 0xbe, 0x3e, 0xd1, 0xad, 0x57, 0xfa, 0xa9, 0xc5, 0x75,
+ 0x74, 0x01, 0xd6, 0x50, 0x0b, 0x6e, 0x2b, 0x70, 0xd2, 0x1d, 0x0e, 0x96, 0x08, 0xf0, 0x1c, 0xa0,
+ 0x6c, 0x7e, 0xae, 0x91, 0xbb, 0x17, 0x2b, 0x72, 0xf7, 0x59, 0x5a, 0xef, 0x6b, 0x32, 0xdb, 0x16,
+ 0x59, 0xfd, 0xcf, 0x02, 0x78, 0x00, 0x1b, 0x8c, 0xa8, 0x9b, 0x8b, 0xb7, 0x86, 0x9c, 0x45, 0x60,
+ 0x44, 0x76, 0x94, 0xe1, 0xa2, 0x47, 0x70, 0x33, 0xa4, 0xe4, 0xe7, 0x24, 0x43, 0x2a, 0x0b, 0xd2,
+ 0xa6, 0x30, 0x2f, 0x78, 0x2b, 0x6a, 0x59, 0x59, 0x57, 0xcb, 0xbf, 0x73, 0xab, 0x3d, 0x32, 0x9c,
+ 0x3b, 0x5e, 0x2a, 0x73, 0x2d, 0xa8, 0xcc, 0xe5, 0x67, 0x7a, 0x91, 0xa9, 0x25, 0x3a, 0x86, 0x86,
+ 0x43, 0x82, 0x00, 0x3b, 0xcc, 0x8a, 0x98, 0xcd, 0xe2, 0x48, 0x25, 0x67, 0xbf, 0xad, 0xee, 0xf9,
+ 0xae, 0x44, 0xc7, 0x02, 0x54, 0x29, 0xd9, 0x74, 0xb2, 0x46, 0xf4, 0x1d, 0xc8, 0x83, 0x5a, 0xb6,
+ 0xeb, 0x52, 0xae, 0x18, 0x52, 0x18, 0xf6, 0xd3, 0xfc, 0xca, 0x1f, 0x68, 0x8f, 0x38, 0xa7, 0x23,
+ 0x29, 0xe6, 0x46, 0x98, 0x59, 0x69, 0x63, 0x78, 0x94, 0x3d, 0xfa, 0x04, 0x3b, 0xb3, 0x11, 0x25,
+ 0x17, 0x9e, 0x8f, 0x7b, 0xe4, 0x5d, 0xc0, 0x6f, 0xdc, 0xf4, 0x4f, 0xb6, 0xa1, 0x1c, 0x07, 0x9e,
+ 0xa5, 0xca, 0xba, 0x69, 0x96, 0xe2, 0xc0, 0x33, 0x5c, 0x84, 0xa0, 0x18, 0xda, 0x6c, 0xa6, 0xe6,
+ 0x4e, 0x7c, 0x6b, 0x14, 0x0e, 0xb2, 0x4e, 0x7b, 0xd8, 0xc7, 0x0c, 0xbf, 0xc2, 0x73, 0x3e, 0xd7,
+ 0x1f, 0x71, 0xb7, 0x03, 0x15, 0x16, 0x5a, 0x19, 0x8f, 0x65, 0x16, 0x8e, 0x6c, 0x36, 0x43, 0xf7,
+ 0xa1, 0x3e, 0xc5, 0x73, 0x8b, 0x8b, 0x02, 0xdf, 0x54, 0x10, 0x9b, 0x6a, 0x53, 0xe9, 0xd4, 0x70,
+ 0xb5, 0x4b, 0xb8, 0xff, 0x7e, 0xcc, 0x09, 0x7f, 0x59, 0x7d, 0x6a, 0xc4, 0x5d, 0xa8, 0xda, 0xbe,
+ 0x4f, 0x9c, 0x65, 0xb8, 0x8a, 0x58, 0x1b, 0xae, 0xf6, 0x47, 0x0e, 0x5a, 0xd9, 0x68, 0x2b, 0x02,
+ 0x7e, 0x07, 0xca, 0xaa, 0xa0, 0x52, 0xbf, 0xd5, 0x0a, 0x3d, 0xfd, 0xf8, 0x4d, 0x76, 0x72, 0x43,
+ 0xde, 0x65, 0xe8, 0x6b, 0x28, 0x92, 0xb9, 0xe3, 0xa9, 0x7a, 0x3e, 0xf8, 0xd0, 0xbc, 0x64, 0xba,
+ 0x8c, 0x6f, 0xe3, 0xf4, 0xe3, 0xda, 0xe2, 0xd9, 0xa4, 0x45, 0xb0, 0xf5, 0x81, 0xe9, 0x42, 0x47,
+ 0x6b, 0xd7, 0xee, 0xde, 0x87, 0x5c, 0x7f, 0xea, 0x15, 0xfc, 0xf4, 0x5b, 0xa8, 0x67, 0xc6, 0x18,
+ 0xd5, 0xa1, 0xb2, 0x54, 0xc4, 0x0d, 0xa8, 0x66, 0xc4, 0x50, 0xbc, 0xbf, 0x5e, 0x1b, 0x5d, 0xdd,
+ 0xea, 0x19, 0xe3, 0xee, 0xf0, 0xb5, 0x6e, 0xf2, 0xf7, 0xd7, 0xf1, 0x00, 0xb6, 0x08, 0x9d, 0x8a,
+ 0x0b, 0xc6, 0x21, 0xd4, 0x55, 0x87, 0xfb, 0xf1, 0x9b, 0xa9, 0xc7, 0x66, 0xf1, 0x39, 0x9f, 0x8c,
+ 0xc3, 0x14, 0x53, 0x4f, 0xde, 0x2f, 0xd3, 0x07, 0xf0, 0xf3, 0xc3, 0x29, 0x59, 0x7f, 0x4f, 0x8f,
+ 0x6e, 0x8c, 0x72, 0xa3, 0xe2, 0x79, 0x59, 0x70, 0x9e, 0xff, 0x13, 0x00, 0x00, 0xff, 0xff, 0xd4,
+ 0x59, 0x12, 0xf3, 0x7d, 0x0b, 0x00, 0x00,
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/omci/omci_alarm_db.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/omci/omci_alarm_db.pb.go
new file mode 100644
index 0000000..3d20894
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/omci/omci_alarm_db.pb.go
@@ -0,0 +1,516 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: voltha_protos/omci_alarm_db.proto
+
+package omci
+
+import (
+ fmt "fmt"
+ proto "github.com/golang/protobuf/proto"
+ _ "github.com/opencord/voltha-protos/v3/go/common"
+ math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+type AlarmOpenOmciEventType_OpenOmciEventType int32
+
+const (
+ AlarmOpenOmciEventType_state_change AlarmOpenOmciEventType_OpenOmciEventType = 0
+)
+
+var AlarmOpenOmciEventType_OpenOmciEventType_name = map[int32]string{
+ 0: "state_change",
+}
+
+var AlarmOpenOmciEventType_OpenOmciEventType_value = map[string]int32{
+ "state_change": 0,
+}
+
+func (x AlarmOpenOmciEventType_OpenOmciEventType) String() string {
+ return proto.EnumName(AlarmOpenOmciEventType_OpenOmciEventType_name, int32(x))
+}
+
+func (AlarmOpenOmciEventType_OpenOmciEventType) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_8d41f1e38aadb08d, []int{6, 0}
+}
+
+type AlarmAttributeData struct {
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *AlarmAttributeData) Reset() { *m = AlarmAttributeData{} }
+func (m *AlarmAttributeData) String() string { return proto.CompactTextString(m) }
+func (*AlarmAttributeData) ProtoMessage() {}
+func (*AlarmAttributeData) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8d41f1e38aadb08d, []int{0}
+}
+
+func (m *AlarmAttributeData) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_AlarmAttributeData.Unmarshal(m, b)
+}
+func (m *AlarmAttributeData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_AlarmAttributeData.Marshal(b, m, deterministic)
+}
+func (m *AlarmAttributeData) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_AlarmAttributeData.Merge(m, src)
+}
+func (m *AlarmAttributeData) XXX_Size() int {
+ return xxx_messageInfo_AlarmAttributeData.Size(m)
+}
+func (m *AlarmAttributeData) XXX_DiscardUnknown() {
+ xxx_messageInfo_AlarmAttributeData.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AlarmAttributeData proto.InternalMessageInfo
+
+func (m *AlarmAttributeData) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *AlarmAttributeData) GetValue() string {
+ if m != nil {
+ return m.Value
+ }
+ return ""
+}
+
+type AlarmInstanceData struct {
+ InstanceId uint32 `protobuf:"varint,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
+ Created string `protobuf:"bytes,2,opt,name=created,proto3" json:"created,omitempty"`
+ Modified string `protobuf:"bytes,3,opt,name=modified,proto3" json:"modified,omitempty"`
+ Attributes []*AlarmAttributeData `protobuf:"bytes,4,rep,name=attributes,proto3" json:"attributes,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *AlarmInstanceData) Reset() { *m = AlarmInstanceData{} }
+func (m *AlarmInstanceData) String() string { return proto.CompactTextString(m) }
+func (*AlarmInstanceData) ProtoMessage() {}
+func (*AlarmInstanceData) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8d41f1e38aadb08d, []int{1}
+}
+
+func (m *AlarmInstanceData) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_AlarmInstanceData.Unmarshal(m, b)
+}
+func (m *AlarmInstanceData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_AlarmInstanceData.Marshal(b, m, deterministic)
+}
+func (m *AlarmInstanceData) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_AlarmInstanceData.Merge(m, src)
+}
+func (m *AlarmInstanceData) XXX_Size() int {
+ return xxx_messageInfo_AlarmInstanceData.Size(m)
+}
+func (m *AlarmInstanceData) XXX_DiscardUnknown() {
+ xxx_messageInfo_AlarmInstanceData.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AlarmInstanceData proto.InternalMessageInfo
+
+func (m *AlarmInstanceData) GetInstanceId() uint32 {
+ if m != nil {
+ return m.InstanceId
+ }
+ return 0
+}
+
+func (m *AlarmInstanceData) GetCreated() string {
+ if m != nil {
+ return m.Created
+ }
+ return ""
+}
+
+func (m *AlarmInstanceData) GetModified() string {
+ if m != nil {
+ return m.Modified
+ }
+ return ""
+}
+
+func (m *AlarmInstanceData) GetAttributes() []*AlarmAttributeData {
+ if m != nil {
+ return m.Attributes
+ }
+ return nil
+}
+
+type AlarmClassData struct {
+ ClassId uint32 `protobuf:"varint,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"`
+ Instances []*AlarmInstanceData `protobuf:"bytes,2,rep,name=instances,proto3" json:"instances,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *AlarmClassData) Reset() { *m = AlarmClassData{} }
+func (m *AlarmClassData) String() string { return proto.CompactTextString(m) }
+func (*AlarmClassData) ProtoMessage() {}
+func (*AlarmClassData) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8d41f1e38aadb08d, []int{2}
+}
+
+func (m *AlarmClassData) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_AlarmClassData.Unmarshal(m, b)
+}
+func (m *AlarmClassData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_AlarmClassData.Marshal(b, m, deterministic)
+}
+func (m *AlarmClassData) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_AlarmClassData.Merge(m, src)
+}
+func (m *AlarmClassData) XXX_Size() int {
+ return xxx_messageInfo_AlarmClassData.Size(m)
+}
+func (m *AlarmClassData) XXX_DiscardUnknown() {
+ xxx_messageInfo_AlarmClassData.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AlarmClassData proto.InternalMessageInfo
+
+func (m *AlarmClassData) GetClassId() uint32 {
+ if m != nil {
+ return m.ClassId
+ }
+ return 0
+}
+
+func (m *AlarmClassData) GetInstances() []*AlarmInstanceData {
+ if m != nil {
+ return m.Instances
+ }
+ return nil
+}
+
+type AlarmManagedEntity struct {
+ ClassId uint32 `protobuf:"varint,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *AlarmManagedEntity) Reset() { *m = AlarmManagedEntity{} }
+func (m *AlarmManagedEntity) String() string { return proto.CompactTextString(m) }
+func (*AlarmManagedEntity) ProtoMessage() {}
+func (*AlarmManagedEntity) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8d41f1e38aadb08d, []int{3}
+}
+
+func (m *AlarmManagedEntity) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_AlarmManagedEntity.Unmarshal(m, b)
+}
+func (m *AlarmManagedEntity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_AlarmManagedEntity.Marshal(b, m, deterministic)
+}
+func (m *AlarmManagedEntity) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_AlarmManagedEntity.Merge(m, src)
+}
+func (m *AlarmManagedEntity) XXX_Size() int {
+ return xxx_messageInfo_AlarmManagedEntity.Size(m)
+}
+func (m *AlarmManagedEntity) XXX_DiscardUnknown() {
+ xxx_messageInfo_AlarmManagedEntity.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AlarmManagedEntity proto.InternalMessageInfo
+
+func (m *AlarmManagedEntity) GetClassId() uint32 {
+ if m != nil {
+ return m.ClassId
+ }
+ return 0
+}
+
+func (m *AlarmManagedEntity) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+type AlarmMessageType struct {
+ MessageType uint32 `protobuf:"varint,1,opt,name=message_type,json=messageType,proto3" json:"message_type,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *AlarmMessageType) Reset() { *m = AlarmMessageType{} }
+func (m *AlarmMessageType) String() string { return proto.CompactTextString(m) }
+func (*AlarmMessageType) ProtoMessage() {}
+func (*AlarmMessageType) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8d41f1e38aadb08d, []int{4}
+}
+
+func (m *AlarmMessageType) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_AlarmMessageType.Unmarshal(m, b)
+}
+func (m *AlarmMessageType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_AlarmMessageType.Marshal(b, m, deterministic)
+}
+func (m *AlarmMessageType) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_AlarmMessageType.Merge(m, src)
+}
+func (m *AlarmMessageType) XXX_Size() int {
+ return xxx_messageInfo_AlarmMessageType.Size(m)
+}
+func (m *AlarmMessageType) XXX_DiscardUnknown() {
+ xxx_messageInfo_AlarmMessageType.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AlarmMessageType proto.InternalMessageInfo
+
+func (m *AlarmMessageType) GetMessageType() uint32 {
+ if m != nil {
+ return m.MessageType
+ }
+ return 0
+}
+
+type AlarmDeviceData struct {
+ DeviceId string `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+ Created string `protobuf:"bytes,2,opt,name=created,proto3" json:"created,omitempty"`
+ LastAlarmSequence uint32 `protobuf:"varint,3,opt,name=last_alarm_sequence,json=lastAlarmSequence,proto3" json:"last_alarm_sequence,omitempty"`
+ LastSyncTime string `protobuf:"bytes,4,opt,name=last_sync_time,json=lastSyncTime,proto3" json:"last_sync_time,omitempty"`
+ Version uint32 `protobuf:"varint,5,opt,name=version,proto3" json:"version,omitempty"`
+ Classes []*AlarmClassData `protobuf:"bytes,6,rep,name=classes,proto3" json:"classes,omitempty"`
+ ManagedEntities []*AlarmManagedEntity `protobuf:"bytes,7,rep,name=managed_entities,json=managedEntities,proto3" json:"managed_entities,omitempty"`
+ MessageTypes []*AlarmMessageType `protobuf:"bytes,8,rep,name=message_types,json=messageTypes,proto3" json:"message_types,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *AlarmDeviceData) Reset() { *m = AlarmDeviceData{} }
+func (m *AlarmDeviceData) String() string { return proto.CompactTextString(m) }
+func (*AlarmDeviceData) ProtoMessage() {}
+func (*AlarmDeviceData) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8d41f1e38aadb08d, []int{5}
+}
+
+func (m *AlarmDeviceData) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_AlarmDeviceData.Unmarshal(m, b)
+}
+func (m *AlarmDeviceData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_AlarmDeviceData.Marshal(b, m, deterministic)
+}
+func (m *AlarmDeviceData) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_AlarmDeviceData.Merge(m, src)
+}
+func (m *AlarmDeviceData) XXX_Size() int {
+ return xxx_messageInfo_AlarmDeviceData.Size(m)
+}
+func (m *AlarmDeviceData) XXX_DiscardUnknown() {
+ xxx_messageInfo_AlarmDeviceData.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AlarmDeviceData proto.InternalMessageInfo
+
+func (m *AlarmDeviceData) GetDeviceId() string {
+ if m != nil {
+ return m.DeviceId
+ }
+ return ""
+}
+
+func (m *AlarmDeviceData) GetCreated() string {
+ if m != nil {
+ return m.Created
+ }
+ return ""
+}
+
+func (m *AlarmDeviceData) GetLastAlarmSequence() uint32 {
+ if m != nil {
+ return m.LastAlarmSequence
+ }
+ return 0
+}
+
+func (m *AlarmDeviceData) GetLastSyncTime() string {
+ if m != nil {
+ return m.LastSyncTime
+ }
+ return ""
+}
+
+func (m *AlarmDeviceData) GetVersion() uint32 {
+ if m != nil {
+ return m.Version
+ }
+ return 0
+}
+
+func (m *AlarmDeviceData) GetClasses() []*AlarmClassData {
+ if m != nil {
+ return m.Classes
+ }
+ return nil
+}
+
+func (m *AlarmDeviceData) GetManagedEntities() []*AlarmManagedEntity {
+ if m != nil {
+ return m.ManagedEntities
+ }
+ return nil
+}
+
+func (m *AlarmDeviceData) GetMessageTypes() []*AlarmMessageType {
+ if m != nil {
+ return m.MessageTypes
+ }
+ return nil
+}
+
+type AlarmOpenOmciEventType struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *AlarmOpenOmciEventType) Reset() { *m = AlarmOpenOmciEventType{} }
+func (m *AlarmOpenOmciEventType) String() string { return proto.CompactTextString(m) }
+func (*AlarmOpenOmciEventType) ProtoMessage() {}
+func (*AlarmOpenOmciEventType) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8d41f1e38aadb08d, []int{6}
+}
+
+func (m *AlarmOpenOmciEventType) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_AlarmOpenOmciEventType.Unmarshal(m, b)
+}
+func (m *AlarmOpenOmciEventType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_AlarmOpenOmciEventType.Marshal(b, m, deterministic)
+}
+func (m *AlarmOpenOmciEventType) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_AlarmOpenOmciEventType.Merge(m, src)
+}
+func (m *AlarmOpenOmciEventType) XXX_Size() int {
+ return xxx_messageInfo_AlarmOpenOmciEventType.Size(m)
+}
+func (m *AlarmOpenOmciEventType) XXX_DiscardUnknown() {
+ xxx_messageInfo_AlarmOpenOmciEventType.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AlarmOpenOmciEventType proto.InternalMessageInfo
+
+type AlarmOpenOmciEvent struct {
+ Type AlarmOpenOmciEventType_OpenOmciEventType `protobuf:"varint,1,opt,name=type,proto3,enum=omci.AlarmOpenOmciEventType_OpenOmciEventType" json:"type,omitempty"`
+ Data string `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *AlarmOpenOmciEvent) Reset() { *m = AlarmOpenOmciEvent{} }
+func (m *AlarmOpenOmciEvent) String() string { return proto.CompactTextString(m) }
+func (*AlarmOpenOmciEvent) ProtoMessage() {}
+func (*AlarmOpenOmciEvent) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8d41f1e38aadb08d, []int{7}
+}
+
+func (m *AlarmOpenOmciEvent) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_AlarmOpenOmciEvent.Unmarshal(m, b)
+}
+func (m *AlarmOpenOmciEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_AlarmOpenOmciEvent.Marshal(b, m, deterministic)
+}
+func (m *AlarmOpenOmciEvent) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_AlarmOpenOmciEvent.Merge(m, src)
+}
+func (m *AlarmOpenOmciEvent) XXX_Size() int {
+ return xxx_messageInfo_AlarmOpenOmciEvent.Size(m)
+}
+func (m *AlarmOpenOmciEvent) XXX_DiscardUnknown() {
+ xxx_messageInfo_AlarmOpenOmciEvent.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AlarmOpenOmciEvent proto.InternalMessageInfo
+
+func (m *AlarmOpenOmciEvent) GetType() AlarmOpenOmciEventType_OpenOmciEventType {
+ if m != nil {
+ return m.Type
+ }
+ return AlarmOpenOmciEventType_state_change
+}
+
+func (m *AlarmOpenOmciEvent) GetData() string {
+ if m != nil {
+ return m.Data
+ }
+ return ""
+}
+
+func init() {
+ proto.RegisterEnum("omci.AlarmOpenOmciEventType_OpenOmciEventType", AlarmOpenOmciEventType_OpenOmciEventType_name, AlarmOpenOmciEventType_OpenOmciEventType_value)
+ proto.RegisterType((*AlarmAttributeData)(nil), "omci.AlarmAttributeData")
+ proto.RegisterType((*AlarmInstanceData)(nil), "omci.AlarmInstanceData")
+ proto.RegisterType((*AlarmClassData)(nil), "omci.AlarmClassData")
+ proto.RegisterType((*AlarmManagedEntity)(nil), "omci.AlarmManagedEntity")
+ proto.RegisterType((*AlarmMessageType)(nil), "omci.AlarmMessageType")
+ proto.RegisterType((*AlarmDeviceData)(nil), "omci.AlarmDeviceData")
+ proto.RegisterType((*AlarmOpenOmciEventType)(nil), "omci.AlarmOpenOmciEventType")
+ proto.RegisterType((*AlarmOpenOmciEvent)(nil), "omci.AlarmOpenOmciEvent")
+}
+
+func init() { proto.RegisterFile("voltha_protos/omci_alarm_db.proto", fileDescriptor_8d41f1e38aadb08d) }
+
+var fileDescriptor_8d41f1e38aadb08d = []byte{
+ // 605 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xc1, 0x4e, 0xdb, 0x40,
+ 0x10, 0x6d, 0x20, 0x40, 0x98, 0x24, 0x10, 0xb6, 0x88, 0x6e, 0x91, 0x90, 0xa8, 0xd5, 0x56, 0x1c,
+ 0x5a, 0x47, 0x82, 0x63, 0x2b, 0x21, 0x02, 0x91, 0x9a, 0x43, 0x85, 0x6a, 0x38, 0xf5, 0x62, 0x6d,
+ 0xec, 0xa9, 0x59, 0xc9, 0xbb, 0x4e, 0xbd, 0x1b, 0x4b, 0x39, 0xf4, 0xd2, 0xaf, 0xea, 0x4f, 0xf0,
+ 0x13, 0x3d, 0xf5, 0x0b, 0x38, 0x57, 0x1e, 0xdb, 0x89, 0x23, 0x4b, 0x55, 0x6f, 0xfb, 0xde, 0xcc,
+ 0xbc, 0x99, 0x9d, 0xb7, 0x5a, 0x78, 0x95, 0x25, 0xb1, 0x7d, 0x10, 0xfe, 0x2c, 0x4d, 0x6c, 0x62,
+ 0x86, 0x89, 0x0a, 0xa4, 0x2f, 0x62, 0x91, 0x2a, 0x3f, 0x9c, 0xba, 0x44, 0xb2, 0x76, 0x4e, 0x1e,
+ 0xf3, 0xf5, 0x44, 0x85, 0x56, 0x14, 0x71, 0x67, 0x0c, 0xec, 0x2a, 0xaf, 0xb8, 0xb2, 0x36, 0x95,
+ 0xd3, 0xb9, 0xc5, 0x1b, 0x61, 0x05, 0x7b, 0x09, 0x6d, 0x2d, 0x14, 0xf2, 0xd6, 0x69, 0xeb, 0x6c,
+ 0x77, 0xb4, 0xf5, 0xe7, 0xe9, 0xf1, 0xa4, 0xe5, 0x11, 0xc5, 0x0e, 0x61, 0x2b, 0x13, 0xf1, 0x1c,
+ 0xf9, 0x46, 0x1e, 0xf3, 0x0a, 0xe0, 0xfc, 0x6a, 0xc1, 0x01, 0xe9, 0x4c, 0xb4, 0xb1, 0x42, 0x07,
+ 0x85, 0xcc, 0x5b, 0xe8, 0xca, 0x12, 0xfb, 0x32, 0x24, 0xb5, 0x7e, 0xa5, 0x06, 0x55, 0x64, 0x12,
+ 0x32, 0x0e, 0x3b, 0x41, 0x8a, 0xc2, 0x62, 0x58, 0xaa, 0x56, 0x90, 0x1d, 0x43, 0x47, 0x25, 0xa1,
+ 0xfc, 0x26, 0x31, 0xe4, 0x9b, 0x14, 0x5a, 0x62, 0x36, 0x06, 0x10, 0xd5, 0xd4, 0x86, 0xb7, 0x4f,
+ 0x37, 0xcf, 0xba, 0xe7, 0xdc, 0xcd, 0xef, 0xeb, 0x36, 0xaf, 0x34, 0xea, 0xfe, 0x7e, 0x7a, 0x3c,
+ 0xd9, 0x2e, 0xee, 0xe5, 0xd5, 0x0a, 0x9d, 0x1f, 0xb0, 0x47, 0xe9, 0xd7, 0xb1, 0x30, 0x86, 0xc6,
+ 0x3e, 0x85, 0x4e, 0x90, 0x83, 0xc6, 0xcc, 0x3b, 0x44, 0x4f, 0x42, 0x36, 0x81, 0xdd, 0x6a, 0x7c,
+ 0xc3, 0x37, 0xa8, 0xf3, 0x8b, 0x5a, 0xe7, 0xfa, 0x12, 0x46, 0x2c, 0x6f, 0xdc, 0x5f, 0xdb, 0x84,
+ 0xb7, 0xaa, 0x76, 0xbe, 0x94, 0x06, 0x7c, 0x16, 0x5a, 0x44, 0x18, 0x8e, 0xb5, 0x95, 0x76, 0xf1,
+ 0x1f, 0x23, 0x54, 0x16, 0x6d, 0x34, 0x2c, 0x72, 0x3e, 0xc2, 0xa0, 0x90, 0x44, 0x63, 0x44, 0x84,
+ 0xf7, 0x8b, 0x19, 0xb2, 0x33, 0xe8, 0xa9, 0x02, 0xfa, 0x76, 0x31, 0xc3, 0x75, 0xd1, 0xae, 0x5a,
+ 0x65, 0x3a, 0x3f, 0x37, 0x61, 0x9f, 0xca, 0x6f, 0x30, 0x93, 0xa5, 0x91, 0x0e, 0xec, 0x86, 0x84,
+ 0xaa, 0x79, 0x96, 0x1d, 0x3b, 0x05, 0xff, 0x4f, 0x13, 0x5d, 0x78, 0x1e, 0x0b, 0x63, 0xcb, 0xa7,
+ 0x69, 0xf0, 0xfb, 0x1c, 0x75, 0x80, 0xe4, 0x67, 0xdf, 0x3b, 0xc8, 0x43, 0xd4, 0xef, 0xae, 0x0c,
+ 0xb0, 0xd7, 0xb0, 0x47, 0xf9, 0x66, 0xa1, 0x03, 0xdf, 0x4a, 0x85, 0xbc, 0x4d, 0x82, 0xbd, 0x9c,
+ 0xbd, 0x5b, 0xe8, 0xe0, 0x5e, 0x2a, 0xcc, 0xfb, 0x65, 0x98, 0x1a, 0x99, 0x68, 0xbe, 0x45, 0x4a,
+ 0x15, 0x64, 0x97, 0x50, 0x6c, 0x09, 0x0d, 0xdf, 0x26, 0x6f, 0x0e, 0x6b, 0xde, 0x2c, 0x6d, 0x1e,
+ 0xed, 0xe7, 0xc6, 0xc0, 0x6a, 0xd1, 0x5e, 0x55, 0xc5, 0xae, 0x61, 0xa0, 0x0a, 0x3b, 0x7c, 0xcc,
+ 0xfd, 0x90, 0x68, 0xf8, 0x4e, 0xe3, 0x7d, 0xad, 0x39, 0xe6, 0xed, 0xab, 0x1a, 0x94, 0x68, 0xd8,
+ 0x07, 0xe8, 0xd7, 0x37, 0x6e, 0x78, 0x87, 0x14, 0x8e, 0xea, 0x0a, 0xab, 0xb5, 0x7b, 0xbd, 0x9a,
+ 0x07, 0xc6, 0xb9, 0x84, 0x23, 0xca, 0xb8, 0x9d, 0xa1, 0xbe, 0x55, 0x81, 0x1c, 0x67, 0xa8, 0x2d,
+ 0xd9, 0xf3, 0x06, 0x0e, 0x1a, 0x24, 0x1b, 0x40, 0xcf, 0x58, 0x61, 0xd1, 0x0f, 0x1e, 0x84, 0x8e,
+ 0x70, 0xf0, 0xcc, 0x89, 0xcb, 0x67, 0xb5, 0x96, 0xcb, 0x46, 0xd0, 0x5e, 0xba, 0xbf, 0x77, 0xee,
+ 0xd6, 0x46, 0x69, 0x68, 0xba, 0x0d, 0xc6, 0xa3, 0x5a, 0xc6, 0xa0, 0x1d, 0x0a, 0x2b, 0x4a, 0x93,
+ 0xe9, 0x3c, 0xfa, 0x04, 0x3c, 0x49, 0x23, 0x37, 0x99, 0xa1, 0x0e, 0x92, 0x34, 0x74, 0x8b, 0xef,
+ 0x86, 0xe4, 0xbf, 0xbe, 0x8b, 0xa4, 0x7d, 0x98, 0x4f, 0xdd, 0x20, 0x51, 0xc3, 0x2a, 0x61, 0x58,
+ 0x24, 0xbc, 0x2f, 0xff, 0xa3, 0xec, 0x62, 0x18, 0x25, 0xf4, 0x7d, 0x4d, 0xb7, 0x89, 0xba, 0xf8,
+ 0x1b, 0x00, 0x00, 0xff, 0xff, 0x79, 0xe4, 0xce, 0x1a, 0xdb, 0x04, 0x00, 0x00,
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/omci/omci_mib_db.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/omci/omci_mib_db.pb.go
new file mode 100644
index 0000000..a3f23af
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/omci/omci_mib_db.pb.go
@@ -0,0 +1,516 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: voltha_protos/omci_mib_db.proto
+
+package omci
+
+import (
+ fmt "fmt"
+ proto "github.com/golang/protobuf/proto"
+ _ "github.com/opencord/voltha-protos/v3/go/common"
+ math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+type OpenOmciEventType_Types int32
+
+const (
+ OpenOmciEventType_state_change OpenOmciEventType_Types = 0
+)
+
+var OpenOmciEventType_Types_name = map[int32]string{
+ 0: "state_change",
+}
+
+var OpenOmciEventType_Types_value = map[string]int32{
+ "state_change": 0,
+}
+
+func (x OpenOmciEventType_Types) String() string {
+ return proto.EnumName(OpenOmciEventType_Types_name, int32(x))
+}
+
+func (OpenOmciEventType_Types) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_4fa402a2df36dcc1, []int{6, 0}
+}
+
+type MibAttributeData struct {
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *MibAttributeData) Reset() { *m = MibAttributeData{} }
+func (m *MibAttributeData) String() string { return proto.CompactTextString(m) }
+func (*MibAttributeData) ProtoMessage() {}
+func (*MibAttributeData) Descriptor() ([]byte, []int) {
+ return fileDescriptor_4fa402a2df36dcc1, []int{0}
+}
+
+func (m *MibAttributeData) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_MibAttributeData.Unmarshal(m, b)
+}
+func (m *MibAttributeData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_MibAttributeData.Marshal(b, m, deterministic)
+}
+func (m *MibAttributeData) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_MibAttributeData.Merge(m, src)
+}
+func (m *MibAttributeData) XXX_Size() int {
+ return xxx_messageInfo_MibAttributeData.Size(m)
+}
+func (m *MibAttributeData) XXX_DiscardUnknown() {
+ xxx_messageInfo_MibAttributeData.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MibAttributeData proto.InternalMessageInfo
+
+func (m *MibAttributeData) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *MibAttributeData) GetValue() string {
+ if m != nil {
+ return m.Value
+ }
+ return ""
+}
+
+type MibInstanceData struct {
+ InstanceId uint32 `protobuf:"varint,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
+ Created string `protobuf:"bytes,2,opt,name=created,proto3" json:"created,omitempty"`
+ Modified string `protobuf:"bytes,3,opt,name=modified,proto3" json:"modified,omitempty"`
+ Attributes []*MibAttributeData `protobuf:"bytes,4,rep,name=attributes,proto3" json:"attributes,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *MibInstanceData) Reset() { *m = MibInstanceData{} }
+func (m *MibInstanceData) String() string { return proto.CompactTextString(m) }
+func (*MibInstanceData) ProtoMessage() {}
+func (*MibInstanceData) Descriptor() ([]byte, []int) {
+ return fileDescriptor_4fa402a2df36dcc1, []int{1}
+}
+
+func (m *MibInstanceData) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_MibInstanceData.Unmarshal(m, b)
+}
+func (m *MibInstanceData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_MibInstanceData.Marshal(b, m, deterministic)
+}
+func (m *MibInstanceData) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_MibInstanceData.Merge(m, src)
+}
+func (m *MibInstanceData) XXX_Size() int {
+ return xxx_messageInfo_MibInstanceData.Size(m)
+}
+func (m *MibInstanceData) XXX_DiscardUnknown() {
+ xxx_messageInfo_MibInstanceData.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MibInstanceData proto.InternalMessageInfo
+
+func (m *MibInstanceData) GetInstanceId() uint32 {
+ if m != nil {
+ return m.InstanceId
+ }
+ return 0
+}
+
+func (m *MibInstanceData) GetCreated() string {
+ if m != nil {
+ return m.Created
+ }
+ return ""
+}
+
+func (m *MibInstanceData) GetModified() string {
+ if m != nil {
+ return m.Modified
+ }
+ return ""
+}
+
+func (m *MibInstanceData) GetAttributes() []*MibAttributeData {
+ if m != nil {
+ return m.Attributes
+ }
+ return nil
+}
+
+type MibClassData struct {
+ ClassId uint32 `protobuf:"varint,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"`
+ Instances []*MibInstanceData `protobuf:"bytes,2,rep,name=instances,proto3" json:"instances,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *MibClassData) Reset() { *m = MibClassData{} }
+func (m *MibClassData) String() string { return proto.CompactTextString(m) }
+func (*MibClassData) ProtoMessage() {}
+func (*MibClassData) Descriptor() ([]byte, []int) {
+ return fileDescriptor_4fa402a2df36dcc1, []int{2}
+}
+
+func (m *MibClassData) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_MibClassData.Unmarshal(m, b)
+}
+func (m *MibClassData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_MibClassData.Marshal(b, m, deterministic)
+}
+func (m *MibClassData) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_MibClassData.Merge(m, src)
+}
+func (m *MibClassData) XXX_Size() int {
+ return xxx_messageInfo_MibClassData.Size(m)
+}
+func (m *MibClassData) XXX_DiscardUnknown() {
+ xxx_messageInfo_MibClassData.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MibClassData proto.InternalMessageInfo
+
+func (m *MibClassData) GetClassId() uint32 {
+ if m != nil {
+ return m.ClassId
+ }
+ return 0
+}
+
+func (m *MibClassData) GetInstances() []*MibInstanceData {
+ if m != nil {
+ return m.Instances
+ }
+ return nil
+}
+
+type ManagedEntity struct {
+ ClassId uint32 `protobuf:"varint,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *ManagedEntity) Reset() { *m = ManagedEntity{} }
+func (m *ManagedEntity) String() string { return proto.CompactTextString(m) }
+func (*ManagedEntity) ProtoMessage() {}
+func (*ManagedEntity) Descriptor() ([]byte, []int) {
+ return fileDescriptor_4fa402a2df36dcc1, []int{3}
+}
+
+func (m *ManagedEntity) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_ManagedEntity.Unmarshal(m, b)
+}
+func (m *ManagedEntity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_ManagedEntity.Marshal(b, m, deterministic)
+}
+func (m *ManagedEntity) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ManagedEntity.Merge(m, src)
+}
+func (m *ManagedEntity) XXX_Size() int {
+ return xxx_messageInfo_ManagedEntity.Size(m)
+}
+func (m *ManagedEntity) XXX_DiscardUnknown() {
+ xxx_messageInfo_ManagedEntity.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ManagedEntity proto.InternalMessageInfo
+
+func (m *ManagedEntity) GetClassId() uint32 {
+ if m != nil {
+ return m.ClassId
+ }
+ return 0
+}
+
+func (m *ManagedEntity) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+type MessageType struct {
+ MessageType uint32 `protobuf:"varint,1,opt,name=message_type,json=messageType,proto3" json:"message_type,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *MessageType) Reset() { *m = MessageType{} }
+func (m *MessageType) String() string { return proto.CompactTextString(m) }
+func (*MessageType) ProtoMessage() {}
+func (*MessageType) Descriptor() ([]byte, []int) {
+ return fileDescriptor_4fa402a2df36dcc1, []int{4}
+}
+
+func (m *MessageType) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_MessageType.Unmarshal(m, b)
+}
+func (m *MessageType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_MessageType.Marshal(b, m, deterministic)
+}
+func (m *MessageType) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_MessageType.Merge(m, src)
+}
+func (m *MessageType) XXX_Size() int {
+ return xxx_messageInfo_MessageType.Size(m)
+}
+func (m *MessageType) XXX_DiscardUnknown() {
+ xxx_messageInfo_MessageType.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MessageType proto.InternalMessageInfo
+
+func (m *MessageType) GetMessageType() uint32 {
+ if m != nil {
+ return m.MessageType
+ }
+ return 0
+}
+
+type MibDeviceData struct {
+ DeviceId string `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+ Created string `protobuf:"bytes,2,opt,name=created,proto3" json:"created,omitempty"`
+ LastSyncTime string `protobuf:"bytes,3,opt,name=last_sync_time,json=lastSyncTime,proto3" json:"last_sync_time,omitempty"`
+ MibDataSync uint32 `protobuf:"varint,4,opt,name=mib_data_sync,json=mibDataSync,proto3" json:"mib_data_sync,omitempty"`
+ Version uint32 `protobuf:"varint,5,opt,name=version,proto3" json:"version,omitempty"`
+ Classes []*MibClassData `protobuf:"bytes,6,rep,name=classes,proto3" json:"classes,omitempty"`
+ ManagedEntities []*ManagedEntity `protobuf:"bytes,7,rep,name=managed_entities,json=managedEntities,proto3" json:"managed_entities,omitempty"`
+ MessageTypes []*MessageType `protobuf:"bytes,8,rep,name=message_types,json=messageTypes,proto3" json:"message_types,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *MibDeviceData) Reset() { *m = MibDeviceData{} }
+func (m *MibDeviceData) String() string { return proto.CompactTextString(m) }
+func (*MibDeviceData) ProtoMessage() {}
+func (*MibDeviceData) Descriptor() ([]byte, []int) {
+ return fileDescriptor_4fa402a2df36dcc1, []int{5}
+}
+
+func (m *MibDeviceData) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_MibDeviceData.Unmarshal(m, b)
+}
+func (m *MibDeviceData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_MibDeviceData.Marshal(b, m, deterministic)
+}
+func (m *MibDeviceData) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_MibDeviceData.Merge(m, src)
+}
+func (m *MibDeviceData) XXX_Size() int {
+ return xxx_messageInfo_MibDeviceData.Size(m)
+}
+func (m *MibDeviceData) XXX_DiscardUnknown() {
+ xxx_messageInfo_MibDeviceData.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MibDeviceData proto.InternalMessageInfo
+
+func (m *MibDeviceData) GetDeviceId() string {
+ if m != nil {
+ return m.DeviceId
+ }
+ return ""
+}
+
+func (m *MibDeviceData) GetCreated() string {
+ if m != nil {
+ return m.Created
+ }
+ return ""
+}
+
+func (m *MibDeviceData) GetLastSyncTime() string {
+ if m != nil {
+ return m.LastSyncTime
+ }
+ return ""
+}
+
+func (m *MibDeviceData) GetMibDataSync() uint32 {
+ if m != nil {
+ return m.MibDataSync
+ }
+ return 0
+}
+
+func (m *MibDeviceData) GetVersion() uint32 {
+ if m != nil {
+ return m.Version
+ }
+ return 0
+}
+
+func (m *MibDeviceData) GetClasses() []*MibClassData {
+ if m != nil {
+ return m.Classes
+ }
+ return nil
+}
+
+func (m *MibDeviceData) GetManagedEntities() []*ManagedEntity {
+ if m != nil {
+ return m.ManagedEntities
+ }
+ return nil
+}
+
+func (m *MibDeviceData) GetMessageTypes() []*MessageType {
+ if m != nil {
+ return m.MessageTypes
+ }
+ return nil
+}
+
+type OpenOmciEventType struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OpenOmciEventType) Reset() { *m = OpenOmciEventType{} }
+func (m *OpenOmciEventType) String() string { return proto.CompactTextString(m) }
+func (*OpenOmciEventType) ProtoMessage() {}
+func (*OpenOmciEventType) Descriptor() ([]byte, []int) {
+ return fileDescriptor_4fa402a2df36dcc1, []int{6}
+}
+
+func (m *OpenOmciEventType) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OpenOmciEventType.Unmarshal(m, b)
+}
+func (m *OpenOmciEventType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OpenOmciEventType.Marshal(b, m, deterministic)
+}
+func (m *OpenOmciEventType) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OpenOmciEventType.Merge(m, src)
+}
+func (m *OpenOmciEventType) XXX_Size() int {
+ return xxx_messageInfo_OpenOmciEventType.Size(m)
+}
+func (m *OpenOmciEventType) XXX_DiscardUnknown() {
+ xxx_messageInfo_OpenOmciEventType.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OpenOmciEventType proto.InternalMessageInfo
+
+type OpenOmciEvent struct {
+ Type OpenOmciEventType_Types `protobuf:"varint,1,opt,name=type,proto3,enum=omci.OpenOmciEventType_Types" json:"type,omitempty"`
+ Data string `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OpenOmciEvent) Reset() { *m = OpenOmciEvent{} }
+func (m *OpenOmciEvent) String() string { return proto.CompactTextString(m) }
+func (*OpenOmciEvent) ProtoMessage() {}
+func (*OpenOmciEvent) Descriptor() ([]byte, []int) {
+ return fileDescriptor_4fa402a2df36dcc1, []int{7}
+}
+
+func (m *OpenOmciEvent) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OpenOmciEvent.Unmarshal(m, b)
+}
+func (m *OpenOmciEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OpenOmciEvent.Marshal(b, m, deterministic)
+}
+func (m *OpenOmciEvent) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OpenOmciEvent.Merge(m, src)
+}
+func (m *OpenOmciEvent) XXX_Size() int {
+ return xxx_messageInfo_OpenOmciEvent.Size(m)
+}
+func (m *OpenOmciEvent) XXX_DiscardUnknown() {
+ xxx_messageInfo_OpenOmciEvent.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OpenOmciEvent proto.InternalMessageInfo
+
+func (m *OpenOmciEvent) GetType() OpenOmciEventType_Types {
+ if m != nil {
+ return m.Type
+ }
+ return OpenOmciEventType_state_change
+}
+
+func (m *OpenOmciEvent) GetData() string {
+ if m != nil {
+ return m.Data
+ }
+ return ""
+}
+
+func init() {
+ proto.RegisterEnum("omci.OpenOmciEventType_Types", OpenOmciEventType_Types_name, OpenOmciEventType_Types_value)
+ proto.RegisterType((*MibAttributeData)(nil), "omci.MibAttributeData")
+ proto.RegisterType((*MibInstanceData)(nil), "omci.MibInstanceData")
+ proto.RegisterType((*MibClassData)(nil), "omci.MibClassData")
+ proto.RegisterType((*ManagedEntity)(nil), "omci.ManagedEntity")
+ proto.RegisterType((*MessageType)(nil), "omci.MessageType")
+ proto.RegisterType((*MibDeviceData)(nil), "omci.MibDeviceData")
+ proto.RegisterType((*OpenOmciEventType)(nil), "omci.OpenOmciEventType")
+ proto.RegisterType((*OpenOmciEvent)(nil), "omci.OpenOmciEvent")
+}
+
+func init() { proto.RegisterFile("voltha_protos/omci_mib_db.proto", fileDescriptor_4fa402a2df36dcc1) }
+
+var fileDescriptor_4fa402a2df36dcc1 = []byte{
+ // 598 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xcd, 0x6a, 0xdb, 0x4c,
+ 0x14, 0xfd, 0xec, 0xd8, 0x89, 0x73, 0x6d, 0x25, 0xce, 0x7c, 0x6d, 0x99, 0x04, 0x42, 0x83, 0x28,
+ 0x25, 0x8b, 0x56, 0xa6, 0x09, 0xb4, 0xab, 0x16, 0xea, 0x24, 0xb4, 0x81, 0x8a, 0x80, 0x1a, 0xba,
+ 0xe8, 0x46, 0x8c, 0xa4, 0x5b, 0x65, 0xc0, 0x33, 0x32, 0x9a, 0x89, 0x40, 0xef, 0xd5, 0xd7, 0xc8,
+ 0x4b, 0x74, 0x95, 0x27, 0xc8, 0xba, 0xcc, 0xe8, 0xc7, 0x72, 0x03, 0xa5, 0x3b, 0x9d, 0xfb, 0x73,
+ 0xee, 0xbd, 0xe7, 0x88, 0x81, 0xe7, 0x45, 0xb6, 0xd0, 0x37, 0x2c, 0x5c, 0xe6, 0x99, 0xce, 0xd4,
+ 0x2c, 0x13, 0x31, 0x0f, 0x05, 0x8f, 0xc2, 0x24, 0xf2, 0x6c, 0x88, 0x0c, 0x4c, 0xe8, 0x80, 0xae,
+ 0x97, 0x09, 0xd4, 0xac, 0xca, 0xbb, 0x67, 0x30, 0xf5, 0x79, 0xf4, 0x51, 0xeb, 0x9c, 0x47, 0xb7,
+ 0x1a, 0xcf, 0x99, 0x66, 0x64, 0x1f, 0x06, 0x92, 0x09, 0xa4, 0xbd, 0xa3, 0xde, 0xf1, 0xf6, 0x7c,
+ 0x78, 0xff, 0x70, 0x77, 0xd8, 0x0b, 0x6c, 0x88, 0x3c, 0x81, 0x61, 0xc1, 0x16, 0xb7, 0x48, 0xfb,
+ 0x26, 0x17, 0x54, 0xc0, 0xfd, 0xd9, 0x83, 0x5d, 0x9f, 0x47, 0x97, 0x52, 0x69, 0x26, 0xe3, 0x8a,
+ 0xe4, 0x25, 0x8c, 0x79, 0x8d, 0x43, 0x9e, 0x58, 0x2e, 0xa7, 0xe1, 0x82, 0x26, 0x73, 0x99, 0x10,
+ 0x0a, 0x5b, 0x71, 0x8e, 0x4c, 0x63, 0x52, 0x73, 0x36, 0x90, 0x1c, 0xc0, 0x48, 0x64, 0x09, 0xff,
+ 0xc1, 0x31, 0xa1, 0x1b, 0x36, 0xd5, 0x62, 0x72, 0x06, 0xc0, 0x9a, 0x9d, 0x15, 0x1d, 0x1c, 0x6d,
+ 0x1c, 0x8f, 0x4f, 0x9e, 0x79, 0xe6, 0x56, 0xef, 0xcf, 0x73, 0xe6, 0xe3, 0x5f, 0x0f, 0x77, 0x87,
+ 0x9b, 0xd5, 0x4d, 0x41, 0xa7, 0xcd, 0x2d, 0x61, 0xe2, 0xf3, 0xe8, 0x6c, 0xc1, 0x94, 0xb2, 0x2b,
+ 0x1f, 0xc1, 0x28, 0x36, 0xe0, 0xd1, 0xbe, 0x5b, 0x36, 0x7c, 0x99, 0x90, 0x4f, 0xb0, 0xdd, 0xac,
+ 0xae, 0x68, 0xdf, 0x4e, 0x7d, 0xda, 0x4e, 0xed, 0x9e, 0x3f, 0x27, 0x66, 0xa8, 0xb3, 0xa6, 0x41,
+ 0xb0, 0xea, 0x75, 0xbf, 0x80, 0xe3, 0x33, 0xc9, 0x52, 0x4c, 0x2e, 0xa4, 0xe6, 0xba, 0xfc, 0x87,
+ 0xd9, 0x8d, 0x2b, 0xfd, 0x47, 0xae, 0xb8, 0xef, 0x60, 0xec, 0xa3, 0x52, 0x2c, 0xc5, 0xeb, 0x72,
+ 0x89, 0xe4, 0x18, 0x26, 0xa2, 0x82, 0xa1, 0x2e, 0x97, 0xb8, 0xce, 0x37, 0x16, 0xab, 0x4a, 0xf7,
+ 0xbe, 0x0f, 0x8e, 0xcf, 0xa3, 0x73, 0x2c, 0x78, 0x6d, 0x9b, 0x0b, 0xdb, 0x89, 0x45, 0xcd, 0x22,
+ 0xed, 0xa8, 0x51, 0x15, 0xff, 0xab, 0x65, 0x2f, 0x60, 0x67, 0xc1, 0x94, 0x0e, 0x55, 0x29, 0xe3,
+ 0x50, 0x73, 0x81, 0xb5, 0x71, 0x13, 0x13, 0xfd, 0x5a, 0xca, 0xf8, 0x9a, 0x0b, 0x24, 0x2e, 0x38,
+ 0xf6, 0x1f, 0x65, 0x9a, 0xd9, 0x4a, 0x3a, 0x30, 0x0b, 0x06, 0x63, 0xc1, 0x23, 0xb3, 0x83, 0xa9,
+ 0x33, 0x33, 0x0a, 0xcc, 0x15, 0xcf, 0x24, 0x1d, 0xda, 0x6c, 0x03, 0xc9, 0x7b, 0xa8, 0x24, 0x41,
+ 0x45, 0x37, 0xad, 0x03, 0xa4, 0x75, 0xa0, 0xb5, 0x72, 0xbe, 0x6b, 0xe4, 0x87, 0x95, 0xa6, 0x41,
+ 0xd3, 0x43, 0x3e, 0xc0, 0x54, 0x54, 0xca, 0x87, 0x68, 0xa4, 0xe7, 0xa8, 0xe8, 0x96, 0xe5, 0xf9,
+ 0xbf, 0xe6, 0xe9, 0xfa, 0x12, 0xec, 0x8a, 0x0e, 0xe4, 0xa8, 0xc8, 0x5b, 0x70, 0xba, 0xe2, 0x2a,
+ 0x3a, 0xb2, 0xcd, 0x7b, 0x75, 0xf3, 0x4a, 0xdc, 0x60, 0xd2, 0x51, 0x5a, 0xb9, 0x1e, 0xec, 0x5d,
+ 0x2d, 0x51, 0x5e, 0x89, 0x98, 0x5f, 0x14, 0x28, 0xb5, 0xd5, 0x7f, 0x1f, 0x86, 0x36, 0x4b, 0xa6,
+ 0x30, 0x51, 0x9a, 0x69, 0x0c, 0xe3, 0x1b, 0x26, 0x53, 0x9c, 0xfe, 0xe7, 0x7e, 0x03, 0x67, 0xad,
+ 0x9e, 0xbc, 0x81, 0x41, 0xeb, 0xe6, 0xce, 0xc9, 0x61, 0x35, 0xef, 0x11, 0xa5, 0x67, 0xf9, 0x02,
+ 0x5b, 0x4a, 0x08, 0x0c, 0x8c, 0xc8, 0xb5, 0x4b, 0xf6, 0x7b, 0xfe, 0x19, 0x68, 0x96, 0xa7, 0x5e,
+ 0xb6, 0x44, 0x19, 0x67, 0x79, 0xe2, 0x55, 0x2f, 0x83, 0x65, 0xfb, 0xfe, 0x2a, 0xe5, 0xfa, 0xe6,
+ 0x36, 0xf2, 0xe2, 0x4c, 0xcc, 0x9a, 0x82, 0x59, 0x55, 0xf0, 0xba, 0x7e, 0x3a, 0x8a, 0xd3, 0x59,
+ 0x9a, 0xd9, 0x77, 0x26, 0xda, 0xb4, 0xa1, 0xd3, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x26, 0xab,
+ 0x52, 0x5b, 0x84, 0x04, 0x00, 0x00,
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/openflow_13/openflow_13.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/openflow_13/openflow_13.pb.go
new file mode 100644
index 0000000..e3c00f3
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/openflow_13/openflow_13.pb.go
@@ -0,0 +1,9814 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: voltha_protos/openflow_13.proto
+
+package openflow_13
+
+import (
+ fmt "fmt"
+ proto "github.com/golang/protobuf/proto"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// Port numbering. Ports are numbered starting from 1.
+type OfpPortNo int32
+
+const (
+ OfpPortNo_OFPP_INVALID OfpPortNo = 0
+ // Maximum number of physical and logical switch ports.
+ OfpPortNo_OFPP_MAX OfpPortNo = 2147483392
+ // Reserved OpenFlow Port (fake output "ports").
+ OfpPortNo_OFPP_IN_PORT OfpPortNo = 2147483640
+ OfpPortNo_OFPP_TABLE OfpPortNo = 2147483641
+ OfpPortNo_OFPP_NORMAL OfpPortNo = 2147483642
+ OfpPortNo_OFPP_FLOOD OfpPortNo = 2147483643
+ OfpPortNo_OFPP_ALL OfpPortNo = 2147483644
+ OfpPortNo_OFPP_CONTROLLER OfpPortNo = 2147483645
+ OfpPortNo_OFPP_LOCAL OfpPortNo = 2147483646
+ OfpPortNo_OFPP_ANY OfpPortNo = 2147483647
+)
+
+var OfpPortNo_name = map[int32]string{
+ 0: "OFPP_INVALID",
+ 2147483392: "OFPP_MAX",
+ 2147483640: "OFPP_IN_PORT",
+ 2147483641: "OFPP_TABLE",
+ 2147483642: "OFPP_NORMAL",
+ 2147483643: "OFPP_FLOOD",
+ 2147483644: "OFPP_ALL",
+ 2147483645: "OFPP_CONTROLLER",
+ 2147483646: "OFPP_LOCAL",
+ 2147483647: "OFPP_ANY",
+}
+
+var OfpPortNo_value = map[string]int32{
+ "OFPP_INVALID": 0,
+ "OFPP_MAX": 2147483392,
+ "OFPP_IN_PORT": 2147483640,
+ "OFPP_TABLE": 2147483641,
+ "OFPP_NORMAL": 2147483642,
+ "OFPP_FLOOD": 2147483643,
+ "OFPP_ALL": 2147483644,
+ "OFPP_CONTROLLER": 2147483645,
+ "OFPP_LOCAL": 2147483646,
+ "OFPP_ANY": 2147483647,
+}
+
+func (x OfpPortNo) String() string {
+ return proto.EnumName(OfpPortNo_name, int32(x))
+}
+
+func (OfpPortNo) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{0}
+}
+
+type OfpType int32
+
+const (
+ // Immutable messages.
+ OfpType_OFPT_HELLO OfpType = 0
+ OfpType_OFPT_ERROR OfpType = 1
+ OfpType_OFPT_ECHO_REQUEST OfpType = 2
+ OfpType_OFPT_ECHO_REPLY OfpType = 3
+ OfpType_OFPT_EXPERIMENTER OfpType = 4
+ // Switch configuration messages.
+ OfpType_OFPT_FEATURES_REQUEST OfpType = 5
+ OfpType_OFPT_FEATURES_REPLY OfpType = 6
+ OfpType_OFPT_GET_CONFIG_REQUEST OfpType = 7
+ OfpType_OFPT_GET_CONFIG_REPLY OfpType = 8
+ OfpType_OFPT_SET_CONFIG OfpType = 9
+ // Asynchronous messages.
+ OfpType_OFPT_PACKET_IN OfpType = 10
+ OfpType_OFPT_FLOW_REMOVED OfpType = 11
+ OfpType_OFPT_PORT_STATUS OfpType = 12
+ // Controller command messages.
+ OfpType_OFPT_PACKET_OUT OfpType = 13
+ OfpType_OFPT_FLOW_MOD OfpType = 14
+ OfpType_OFPT_GROUP_MOD OfpType = 15
+ OfpType_OFPT_PORT_MOD OfpType = 16
+ OfpType_OFPT_TABLE_MOD OfpType = 17
+ // Multipart messages.
+ OfpType_OFPT_MULTIPART_REQUEST OfpType = 18
+ OfpType_OFPT_MULTIPART_REPLY OfpType = 19
+ // Barrier messages.
+ OfpType_OFPT_BARRIER_REQUEST OfpType = 20
+ OfpType_OFPT_BARRIER_REPLY OfpType = 21
+ // Queue Configuration messages.
+ OfpType_OFPT_QUEUE_GET_CONFIG_REQUEST OfpType = 22
+ OfpType_OFPT_QUEUE_GET_CONFIG_REPLY OfpType = 23
+ // Controller role change request messages.
+ OfpType_OFPT_ROLE_REQUEST OfpType = 24
+ OfpType_OFPT_ROLE_REPLY OfpType = 25
+ // Asynchronous message configuration.
+ OfpType_OFPT_GET_ASYNC_REQUEST OfpType = 26
+ OfpType_OFPT_GET_ASYNC_REPLY OfpType = 27
+ OfpType_OFPT_SET_ASYNC OfpType = 28
+ // Meters and rate limiters configuration messages.
+ OfpType_OFPT_METER_MOD OfpType = 29
+)
+
+var OfpType_name = map[int32]string{
+ 0: "OFPT_HELLO",
+ 1: "OFPT_ERROR",
+ 2: "OFPT_ECHO_REQUEST",
+ 3: "OFPT_ECHO_REPLY",
+ 4: "OFPT_EXPERIMENTER",
+ 5: "OFPT_FEATURES_REQUEST",
+ 6: "OFPT_FEATURES_REPLY",
+ 7: "OFPT_GET_CONFIG_REQUEST",
+ 8: "OFPT_GET_CONFIG_REPLY",
+ 9: "OFPT_SET_CONFIG",
+ 10: "OFPT_PACKET_IN",
+ 11: "OFPT_FLOW_REMOVED",
+ 12: "OFPT_PORT_STATUS",
+ 13: "OFPT_PACKET_OUT",
+ 14: "OFPT_FLOW_MOD",
+ 15: "OFPT_GROUP_MOD",
+ 16: "OFPT_PORT_MOD",
+ 17: "OFPT_TABLE_MOD",
+ 18: "OFPT_MULTIPART_REQUEST",
+ 19: "OFPT_MULTIPART_REPLY",
+ 20: "OFPT_BARRIER_REQUEST",
+ 21: "OFPT_BARRIER_REPLY",
+ 22: "OFPT_QUEUE_GET_CONFIG_REQUEST",
+ 23: "OFPT_QUEUE_GET_CONFIG_REPLY",
+ 24: "OFPT_ROLE_REQUEST",
+ 25: "OFPT_ROLE_REPLY",
+ 26: "OFPT_GET_ASYNC_REQUEST",
+ 27: "OFPT_GET_ASYNC_REPLY",
+ 28: "OFPT_SET_ASYNC",
+ 29: "OFPT_METER_MOD",
+}
+
+var OfpType_value = map[string]int32{
+ "OFPT_HELLO": 0,
+ "OFPT_ERROR": 1,
+ "OFPT_ECHO_REQUEST": 2,
+ "OFPT_ECHO_REPLY": 3,
+ "OFPT_EXPERIMENTER": 4,
+ "OFPT_FEATURES_REQUEST": 5,
+ "OFPT_FEATURES_REPLY": 6,
+ "OFPT_GET_CONFIG_REQUEST": 7,
+ "OFPT_GET_CONFIG_REPLY": 8,
+ "OFPT_SET_CONFIG": 9,
+ "OFPT_PACKET_IN": 10,
+ "OFPT_FLOW_REMOVED": 11,
+ "OFPT_PORT_STATUS": 12,
+ "OFPT_PACKET_OUT": 13,
+ "OFPT_FLOW_MOD": 14,
+ "OFPT_GROUP_MOD": 15,
+ "OFPT_PORT_MOD": 16,
+ "OFPT_TABLE_MOD": 17,
+ "OFPT_MULTIPART_REQUEST": 18,
+ "OFPT_MULTIPART_REPLY": 19,
+ "OFPT_BARRIER_REQUEST": 20,
+ "OFPT_BARRIER_REPLY": 21,
+ "OFPT_QUEUE_GET_CONFIG_REQUEST": 22,
+ "OFPT_QUEUE_GET_CONFIG_REPLY": 23,
+ "OFPT_ROLE_REQUEST": 24,
+ "OFPT_ROLE_REPLY": 25,
+ "OFPT_GET_ASYNC_REQUEST": 26,
+ "OFPT_GET_ASYNC_REPLY": 27,
+ "OFPT_SET_ASYNC": 28,
+ "OFPT_METER_MOD": 29,
+}
+
+func (x OfpType) String() string {
+ return proto.EnumName(OfpType_name, int32(x))
+}
+
+func (OfpType) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{1}
+}
+
+// Hello elements types.
+type OfpHelloElemType int32
+
+const (
+ OfpHelloElemType_OFPHET_INVALID OfpHelloElemType = 0
+ OfpHelloElemType_OFPHET_VERSIONBITMAP OfpHelloElemType = 1
+)
+
+var OfpHelloElemType_name = map[int32]string{
+ 0: "OFPHET_INVALID",
+ 1: "OFPHET_VERSIONBITMAP",
+}
+
+var OfpHelloElemType_value = map[string]int32{
+ "OFPHET_INVALID": 0,
+ "OFPHET_VERSIONBITMAP": 1,
+}
+
+func (x OfpHelloElemType) String() string {
+ return proto.EnumName(OfpHelloElemType_name, int32(x))
+}
+
+func (OfpHelloElemType) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{2}
+}
+
+type OfpConfigFlags int32
+
+const (
+ // Handling of IP fragments.
+ OfpConfigFlags_OFPC_FRAG_NORMAL OfpConfigFlags = 0
+ OfpConfigFlags_OFPC_FRAG_DROP OfpConfigFlags = 1
+ OfpConfigFlags_OFPC_FRAG_REASM OfpConfigFlags = 2
+ OfpConfigFlags_OFPC_FRAG_MASK OfpConfigFlags = 3
+)
+
+var OfpConfigFlags_name = map[int32]string{
+ 0: "OFPC_FRAG_NORMAL",
+ 1: "OFPC_FRAG_DROP",
+ 2: "OFPC_FRAG_REASM",
+ 3: "OFPC_FRAG_MASK",
+}
+
+var OfpConfigFlags_value = map[string]int32{
+ "OFPC_FRAG_NORMAL": 0,
+ "OFPC_FRAG_DROP": 1,
+ "OFPC_FRAG_REASM": 2,
+ "OFPC_FRAG_MASK": 3,
+}
+
+func (x OfpConfigFlags) String() string {
+ return proto.EnumName(OfpConfigFlags_name, int32(x))
+}
+
+func (OfpConfigFlags) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{3}
+}
+
+// Flags to configure the table. Reserved for future use.
+type OfpTableConfig int32
+
+const (
+ OfpTableConfig_OFPTC_INVALID OfpTableConfig = 0
+ OfpTableConfig_OFPTC_DEPRECATED_MASK OfpTableConfig = 3
+)
+
+var OfpTableConfig_name = map[int32]string{
+ 0: "OFPTC_INVALID",
+ 3: "OFPTC_DEPRECATED_MASK",
+}
+
+var OfpTableConfig_value = map[string]int32{
+ "OFPTC_INVALID": 0,
+ "OFPTC_DEPRECATED_MASK": 3,
+}
+
+func (x OfpTableConfig) String() string {
+ return proto.EnumName(OfpTableConfig_name, int32(x))
+}
+
+func (OfpTableConfig) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{4}
+}
+
+// Table numbering. Tables can use any number up to OFPT_MAX.
+type OfpTable int32
+
+const (
+ OfpTable_OFPTT_INVALID OfpTable = 0
+ // Last usable table number.
+ OfpTable_OFPTT_MAX OfpTable = 254
+ // Fake tables.
+ OfpTable_OFPTT_ALL OfpTable = 255
+)
+
+var OfpTable_name = map[int32]string{
+ 0: "OFPTT_INVALID",
+ 254: "OFPTT_MAX",
+ 255: "OFPTT_ALL",
+}
+
+var OfpTable_value = map[string]int32{
+ "OFPTT_INVALID": 0,
+ "OFPTT_MAX": 254,
+ "OFPTT_ALL": 255,
+}
+
+func (x OfpTable) String() string {
+ return proto.EnumName(OfpTable_name, int32(x))
+}
+
+func (OfpTable) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{5}
+}
+
+// Capabilities supported by the datapath.
+type OfpCapabilities int32
+
+const (
+ OfpCapabilities_OFPC_INVALID OfpCapabilities = 0
+ OfpCapabilities_OFPC_FLOW_STATS OfpCapabilities = 1
+ OfpCapabilities_OFPC_TABLE_STATS OfpCapabilities = 2
+ OfpCapabilities_OFPC_PORT_STATS OfpCapabilities = 4
+ OfpCapabilities_OFPC_GROUP_STATS OfpCapabilities = 8
+ OfpCapabilities_OFPC_IP_REASM OfpCapabilities = 32
+ OfpCapabilities_OFPC_QUEUE_STATS OfpCapabilities = 64
+ OfpCapabilities_OFPC_PORT_BLOCKED OfpCapabilities = 256
+)
+
+var OfpCapabilities_name = map[int32]string{
+ 0: "OFPC_INVALID",
+ 1: "OFPC_FLOW_STATS",
+ 2: "OFPC_TABLE_STATS",
+ 4: "OFPC_PORT_STATS",
+ 8: "OFPC_GROUP_STATS",
+ 32: "OFPC_IP_REASM",
+ 64: "OFPC_QUEUE_STATS",
+ 256: "OFPC_PORT_BLOCKED",
+}
+
+var OfpCapabilities_value = map[string]int32{
+ "OFPC_INVALID": 0,
+ "OFPC_FLOW_STATS": 1,
+ "OFPC_TABLE_STATS": 2,
+ "OFPC_PORT_STATS": 4,
+ "OFPC_GROUP_STATS": 8,
+ "OFPC_IP_REASM": 32,
+ "OFPC_QUEUE_STATS": 64,
+ "OFPC_PORT_BLOCKED": 256,
+}
+
+func (x OfpCapabilities) String() string {
+ return proto.EnumName(OfpCapabilities_name, int32(x))
+}
+
+func (OfpCapabilities) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{6}
+}
+
+// Flags to indicate behavior of the physical port. These flags are
+// used in ofp_port to describe the current configuration. They are
+// used in the ofp_port_mod message to configure the port's behavior.
+type OfpPortConfig int32
+
+const (
+ OfpPortConfig_OFPPC_INVALID OfpPortConfig = 0
+ OfpPortConfig_OFPPC_PORT_DOWN OfpPortConfig = 1
+ OfpPortConfig_OFPPC_NO_RECV OfpPortConfig = 4
+ OfpPortConfig_OFPPC_NO_FWD OfpPortConfig = 32
+ OfpPortConfig_OFPPC_NO_PACKET_IN OfpPortConfig = 64
+)
+
+var OfpPortConfig_name = map[int32]string{
+ 0: "OFPPC_INVALID",
+ 1: "OFPPC_PORT_DOWN",
+ 4: "OFPPC_NO_RECV",
+ 32: "OFPPC_NO_FWD",
+ 64: "OFPPC_NO_PACKET_IN",
+}
+
+var OfpPortConfig_value = map[string]int32{
+ "OFPPC_INVALID": 0,
+ "OFPPC_PORT_DOWN": 1,
+ "OFPPC_NO_RECV": 4,
+ "OFPPC_NO_FWD": 32,
+ "OFPPC_NO_PACKET_IN": 64,
+}
+
+func (x OfpPortConfig) String() string {
+ return proto.EnumName(OfpPortConfig_name, int32(x))
+}
+
+func (OfpPortConfig) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{7}
+}
+
+// Current state of the physical port. These are not configurable from
+// the controller.
+type OfpPortState int32
+
+const (
+ OfpPortState_OFPPS_INVALID OfpPortState = 0
+ OfpPortState_OFPPS_LINK_DOWN OfpPortState = 1
+ OfpPortState_OFPPS_BLOCKED OfpPortState = 2
+ OfpPortState_OFPPS_LIVE OfpPortState = 4
+)
+
+var OfpPortState_name = map[int32]string{
+ 0: "OFPPS_INVALID",
+ 1: "OFPPS_LINK_DOWN",
+ 2: "OFPPS_BLOCKED",
+ 4: "OFPPS_LIVE",
+}
+
+var OfpPortState_value = map[string]int32{
+ "OFPPS_INVALID": 0,
+ "OFPPS_LINK_DOWN": 1,
+ "OFPPS_BLOCKED": 2,
+ "OFPPS_LIVE": 4,
+}
+
+func (x OfpPortState) String() string {
+ return proto.EnumName(OfpPortState_name, int32(x))
+}
+
+func (OfpPortState) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{8}
+}
+
+// Features of ports available in a datapath.
+type OfpPortFeatures int32
+
+const (
+ OfpPortFeatures_OFPPF_INVALID OfpPortFeatures = 0
+ OfpPortFeatures_OFPPF_10MB_HD OfpPortFeatures = 1
+ OfpPortFeatures_OFPPF_10MB_FD OfpPortFeatures = 2
+ OfpPortFeatures_OFPPF_100MB_HD OfpPortFeatures = 4
+ OfpPortFeatures_OFPPF_100MB_FD OfpPortFeatures = 8
+ OfpPortFeatures_OFPPF_1GB_HD OfpPortFeatures = 16
+ OfpPortFeatures_OFPPF_1GB_FD OfpPortFeatures = 32
+ OfpPortFeatures_OFPPF_10GB_FD OfpPortFeatures = 64
+ OfpPortFeatures_OFPPF_40GB_FD OfpPortFeatures = 128
+ OfpPortFeatures_OFPPF_100GB_FD OfpPortFeatures = 256
+ OfpPortFeatures_OFPPF_1TB_FD OfpPortFeatures = 512
+ OfpPortFeatures_OFPPF_OTHER OfpPortFeatures = 1024
+ OfpPortFeatures_OFPPF_COPPER OfpPortFeatures = 2048
+ OfpPortFeatures_OFPPF_FIBER OfpPortFeatures = 4096
+ OfpPortFeatures_OFPPF_AUTONEG OfpPortFeatures = 8192
+ OfpPortFeatures_OFPPF_PAUSE OfpPortFeatures = 16384
+ OfpPortFeatures_OFPPF_PAUSE_ASYM OfpPortFeatures = 32768
+)
+
+var OfpPortFeatures_name = map[int32]string{
+ 0: "OFPPF_INVALID",
+ 1: "OFPPF_10MB_HD",
+ 2: "OFPPF_10MB_FD",
+ 4: "OFPPF_100MB_HD",
+ 8: "OFPPF_100MB_FD",
+ 16: "OFPPF_1GB_HD",
+ 32: "OFPPF_1GB_FD",
+ 64: "OFPPF_10GB_FD",
+ 128: "OFPPF_40GB_FD",
+ 256: "OFPPF_100GB_FD",
+ 512: "OFPPF_1TB_FD",
+ 1024: "OFPPF_OTHER",
+ 2048: "OFPPF_COPPER",
+ 4096: "OFPPF_FIBER",
+ 8192: "OFPPF_AUTONEG",
+ 16384: "OFPPF_PAUSE",
+ 32768: "OFPPF_PAUSE_ASYM",
+}
+
+var OfpPortFeatures_value = map[string]int32{
+ "OFPPF_INVALID": 0,
+ "OFPPF_10MB_HD": 1,
+ "OFPPF_10MB_FD": 2,
+ "OFPPF_100MB_HD": 4,
+ "OFPPF_100MB_FD": 8,
+ "OFPPF_1GB_HD": 16,
+ "OFPPF_1GB_FD": 32,
+ "OFPPF_10GB_FD": 64,
+ "OFPPF_40GB_FD": 128,
+ "OFPPF_100GB_FD": 256,
+ "OFPPF_1TB_FD": 512,
+ "OFPPF_OTHER": 1024,
+ "OFPPF_COPPER": 2048,
+ "OFPPF_FIBER": 4096,
+ "OFPPF_AUTONEG": 8192,
+ "OFPPF_PAUSE": 16384,
+ "OFPPF_PAUSE_ASYM": 32768,
+}
+
+func (x OfpPortFeatures) String() string {
+ return proto.EnumName(OfpPortFeatures_name, int32(x))
+}
+
+func (OfpPortFeatures) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{9}
+}
+
+// What changed about the physical port
+type OfpPortReason int32
+
+const (
+ OfpPortReason_OFPPR_ADD OfpPortReason = 0
+ OfpPortReason_OFPPR_DELETE OfpPortReason = 1
+ OfpPortReason_OFPPR_MODIFY OfpPortReason = 2
+)
+
+var OfpPortReason_name = map[int32]string{
+ 0: "OFPPR_ADD",
+ 1: "OFPPR_DELETE",
+ 2: "OFPPR_MODIFY",
+}
+
+var OfpPortReason_value = map[string]int32{
+ "OFPPR_ADD": 0,
+ "OFPPR_DELETE": 1,
+ "OFPPR_MODIFY": 2,
+}
+
+func (x OfpPortReason) String() string {
+ return proto.EnumName(OfpPortReason_name, int32(x))
+}
+
+func (OfpPortReason) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{10}
+}
+
+// The match type indicates the match structure (set of fields that compose the
+// match) in use. The match type is placed in the type field at the beginning
+// of all match structures. The "OpenFlow Extensible Match" type corresponds
+// to OXM TLV format described below and must be supported by all OpenFlow
+// switches. Extensions that define other match types may be published on the
+// ONF wiki. Support for extensions is optional.
+type OfpMatchType int32
+
+const (
+ OfpMatchType_OFPMT_STANDARD OfpMatchType = 0
+ OfpMatchType_OFPMT_OXM OfpMatchType = 1
+)
+
+var OfpMatchType_name = map[int32]string{
+ 0: "OFPMT_STANDARD",
+ 1: "OFPMT_OXM",
+}
+
+var OfpMatchType_value = map[string]int32{
+ "OFPMT_STANDARD": 0,
+ "OFPMT_OXM": 1,
+}
+
+func (x OfpMatchType) String() string {
+ return proto.EnumName(OfpMatchType_name, int32(x))
+}
+
+func (OfpMatchType) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{11}
+}
+
+// OXM Class IDs.
+// The high order bit differentiate reserved classes from member classes.
+// Classes 0x0000 to 0x7FFF are member classes, allocated by ONF.
+// Classes 0x8000 to 0xFFFE are reserved classes, reserved for standardisation.
+type OfpOxmClass int32
+
+const (
+ OfpOxmClass_OFPXMC_NXM_0 OfpOxmClass = 0
+ OfpOxmClass_OFPXMC_NXM_1 OfpOxmClass = 1
+ OfpOxmClass_OFPXMC_OPENFLOW_BASIC OfpOxmClass = 32768
+ OfpOxmClass_OFPXMC_EXPERIMENTER OfpOxmClass = 65535
+)
+
+var OfpOxmClass_name = map[int32]string{
+ 0: "OFPXMC_NXM_0",
+ 1: "OFPXMC_NXM_1",
+ 32768: "OFPXMC_OPENFLOW_BASIC",
+ 65535: "OFPXMC_EXPERIMENTER",
+}
+
+var OfpOxmClass_value = map[string]int32{
+ "OFPXMC_NXM_0": 0,
+ "OFPXMC_NXM_1": 1,
+ "OFPXMC_OPENFLOW_BASIC": 32768,
+ "OFPXMC_EXPERIMENTER": 65535,
+}
+
+func (x OfpOxmClass) String() string {
+ return proto.EnumName(OfpOxmClass_name, int32(x))
+}
+
+func (OfpOxmClass) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{12}
+}
+
+// OXM Flow field types for OpenFlow basic class.
+type OxmOfbFieldTypes int32
+
+const (
+ OxmOfbFieldTypes_OFPXMT_OFB_IN_PORT OxmOfbFieldTypes = 0
+ OxmOfbFieldTypes_OFPXMT_OFB_IN_PHY_PORT OxmOfbFieldTypes = 1
+ OxmOfbFieldTypes_OFPXMT_OFB_METADATA OxmOfbFieldTypes = 2
+ OxmOfbFieldTypes_OFPXMT_OFB_ETH_DST OxmOfbFieldTypes = 3
+ OxmOfbFieldTypes_OFPXMT_OFB_ETH_SRC OxmOfbFieldTypes = 4
+ OxmOfbFieldTypes_OFPXMT_OFB_ETH_TYPE OxmOfbFieldTypes = 5
+ OxmOfbFieldTypes_OFPXMT_OFB_VLAN_VID OxmOfbFieldTypes = 6
+ OxmOfbFieldTypes_OFPXMT_OFB_VLAN_PCP OxmOfbFieldTypes = 7
+ OxmOfbFieldTypes_OFPXMT_OFB_IP_DSCP OxmOfbFieldTypes = 8
+ OxmOfbFieldTypes_OFPXMT_OFB_IP_ECN OxmOfbFieldTypes = 9
+ OxmOfbFieldTypes_OFPXMT_OFB_IP_PROTO OxmOfbFieldTypes = 10
+ OxmOfbFieldTypes_OFPXMT_OFB_IPV4_SRC OxmOfbFieldTypes = 11
+ OxmOfbFieldTypes_OFPXMT_OFB_IPV4_DST OxmOfbFieldTypes = 12
+ OxmOfbFieldTypes_OFPXMT_OFB_TCP_SRC OxmOfbFieldTypes = 13
+ OxmOfbFieldTypes_OFPXMT_OFB_TCP_DST OxmOfbFieldTypes = 14
+ OxmOfbFieldTypes_OFPXMT_OFB_UDP_SRC OxmOfbFieldTypes = 15
+ OxmOfbFieldTypes_OFPXMT_OFB_UDP_DST OxmOfbFieldTypes = 16
+ OxmOfbFieldTypes_OFPXMT_OFB_SCTP_SRC OxmOfbFieldTypes = 17
+ OxmOfbFieldTypes_OFPXMT_OFB_SCTP_DST OxmOfbFieldTypes = 18
+ OxmOfbFieldTypes_OFPXMT_OFB_ICMPV4_TYPE OxmOfbFieldTypes = 19
+ OxmOfbFieldTypes_OFPXMT_OFB_ICMPV4_CODE OxmOfbFieldTypes = 20
+ OxmOfbFieldTypes_OFPXMT_OFB_ARP_OP OxmOfbFieldTypes = 21
+ OxmOfbFieldTypes_OFPXMT_OFB_ARP_SPA OxmOfbFieldTypes = 22
+ OxmOfbFieldTypes_OFPXMT_OFB_ARP_TPA OxmOfbFieldTypes = 23
+ OxmOfbFieldTypes_OFPXMT_OFB_ARP_SHA OxmOfbFieldTypes = 24
+ OxmOfbFieldTypes_OFPXMT_OFB_ARP_THA OxmOfbFieldTypes = 25
+ OxmOfbFieldTypes_OFPXMT_OFB_IPV6_SRC OxmOfbFieldTypes = 26
+ OxmOfbFieldTypes_OFPXMT_OFB_IPV6_DST OxmOfbFieldTypes = 27
+ OxmOfbFieldTypes_OFPXMT_OFB_IPV6_FLABEL OxmOfbFieldTypes = 28
+ OxmOfbFieldTypes_OFPXMT_OFB_ICMPV6_TYPE OxmOfbFieldTypes = 29
+ OxmOfbFieldTypes_OFPXMT_OFB_ICMPV6_CODE OxmOfbFieldTypes = 30
+ OxmOfbFieldTypes_OFPXMT_OFB_IPV6_ND_TARGET OxmOfbFieldTypes = 31
+ OxmOfbFieldTypes_OFPXMT_OFB_IPV6_ND_SLL OxmOfbFieldTypes = 32
+ OxmOfbFieldTypes_OFPXMT_OFB_IPV6_ND_TLL OxmOfbFieldTypes = 33
+ OxmOfbFieldTypes_OFPXMT_OFB_MPLS_LABEL OxmOfbFieldTypes = 34
+ OxmOfbFieldTypes_OFPXMT_OFB_MPLS_TC OxmOfbFieldTypes = 35
+ OxmOfbFieldTypes_OFPXMT_OFB_MPLS_BOS OxmOfbFieldTypes = 36
+ OxmOfbFieldTypes_OFPXMT_OFB_PBB_ISID OxmOfbFieldTypes = 37
+ OxmOfbFieldTypes_OFPXMT_OFB_TUNNEL_ID OxmOfbFieldTypes = 38
+ OxmOfbFieldTypes_OFPXMT_OFB_IPV6_EXTHDR OxmOfbFieldTypes = 39
+)
+
+var OxmOfbFieldTypes_name = map[int32]string{
+ 0: "OFPXMT_OFB_IN_PORT",
+ 1: "OFPXMT_OFB_IN_PHY_PORT",
+ 2: "OFPXMT_OFB_METADATA",
+ 3: "OFPXMT_OFB_ETH_DST",
+ 4: "OFPXMT_OFB_ETH_SRC",
+ 5: "OFPXMT_OFB_ETH_TYPE",
+ 6: "OFPXMT_OFB_VLAN_VID",
+ 7: "OFPXMT_OFB_VLAN_PCP",
+ 8: "OFPXMT_OFB_IP_DSCP",
+ 9: "OFPXMT_OFB_IP_ECN",
+ 10: "OFPXMT_OFB_IP_PROTO",
+ 11: "OFPXMT_OFB_IPV4_SRC",
+ 12: "OFPXMT_OFB_IPV4_DST",
+ 13: "OFPXMT_OFB_TCP_SRC",
+ 14: "OFPXMT_OFB_TCP_DST",
+ 15: "OFPXMT_OFB_UDP_SRC",
+ 16: "OFPXMT_OFB_UDP_DST",
+ 17: "OFPXMT_OFB_SCTP_SRC",
+ 18: "OFPXMT_OFB_SCTP_DST",
+ 19: "OFPXMT_OFB_ICMPV4_TYPE",
+ 20: "OFPXMT_OFB_ICMPV4_CODE",
+ 21: "OFPXMT_OFB_ARP_OP",
+ 22: "OFPXMT_OFB_ARP_SPA",
+ 23: "OFPXMT_OFB_ARP_TPA",
+ 24: "OFPXMT_OFB_ARP_SHA",
+ 25: "OFPXMT_OFB_ARP_THA",
+ 26: "OFPXMT_OFB_IPV6_SRC",
+ 27: "OFPXMT_OFB_IPV6_DST",
+ 28: "OFPXMT_OFB_IPV6_FLABEL",
+ 29: "OFPXMT_OFB_ICMPV6_TYPE",
+ 30: "OFPXMT_OFB_ICMPV6_CODE",
+ 31: "OFPXMT_OFB_IPV6_ND_TARGET",
+ 32: "OFPXMT_OFB_IPV6_ND_SLL",
+ 33: "OFPXMT_OFB_IPV6_ND_TLL",
+ 34: "OFPXMT_OFB_MPLS_LABEL",
+ 35: "OFPXMT_OFB_MPLS_TC",
+ 36: "OFPXMT_OFB_MPLS_BOS",
+ 37: "OFPXMT_OFB_PBB_ISID",
+ 38: "OFPXMT_OFB_TUNNEL_ID",
+ 39: "OFPXMT_OFB_IPV6_EXTHDR",
+}
+
+var OxmOfbFieldTypes_value = map[string]int32{
+ "OFPXMT_OFB_IN_PORT": 0,
+ "OFPXMT_OFB_IN_PHY_PORT": 1,
+ "OFPXMT_OFB_METADATA": 2,
+ "OFPXMT_OFB_ETH_DST": 3,
+ "OFPXMT_OFB_ETH_SRC": 4,
+ "OFPXMT_OFB_ETH_TYPE": 5,
+ "OFPXMT_OFB_VLAN_VID": 6,
+ "OFPXMT_OFB_VLAN_PCP": 7,
+ "OFPXMT_OFB_IP_DSCP": 8,
+ "OFPXMT_OFB_IP_ECN": 9,
+ "OFPXMT_OFB_IP_PROTO": 10,
+ "OFPXMT_OFB_IPV4_SRC": 11,
+ "OFPXMT_OFB_IPV4_DST": 12,
+ "OFPXMT_OFB_TCP_SRC": 13,
+ "OFPXMT_OFB_TCP_DST": 14,
+ "OFPXMT_OFB_UDP_SRC": 15,
+ "OFPXMT_OFB_UDP_DST": 16,
+ "OFPXMT_OFB_SCTP_SRC": 17,
+ "OFPXMT_OFB_SCTP_DST": 18,
+ "OFPXMT_OFB_ICMPV4_TYPE": 19,
+ "OFPXMT_OFB_ICMPV4_CODE": 20,
+ "OFPXMT_OFB_ARP_OP": 21,
+ "OFPXMT_OFB_ARP_SPA": 22,
+ "OFPXMT_OFB_ARP_TPA": 23,
+ "OFPXMT_OFB_ARP_SHA": 24,
+ "OFPXMT_OFB_ARP_THA": 25,
+ "OFPXMT_OFB_IPV6_SRC": 26,
+ "OFPXMT_OFB_IPV6_DST": 27,
+ "OFPXMT_OFB_IPV6_FLABEL": 28,
+ "OFPXMT_OFB_ICMPV6_TYPE": 29,
+ "OFPXMT_OFB_ICMPV6_CODE": 30,
+ "OFPXMT_OFB_IPV6_ND_TARGET": 31,
+ "OFPXMT_OFB_IPV6_ND_SLL": 32,
+ "OFPXMT_OFB_IPV6_ND_TLL": 33,
+ "OFPXMT_OFB_MPLS_LABEL": 34,
+ "OFPXMT_OFB_MPLS_TC": 35,
+ "OFPXMT_OFB_MPLS_BOS": 36,
+ "OFPXMT_OFB_PBB_ISID": 37,
+ "OFPXMT_OFB_TUNNEL_ID": 38,
+ "OFPXMT_OFB_IPV6_EXTHDR": 39,
+}
+
+func (x OxmOfbFieldTypes) String() string {
+ return proto.EnumName(OxmOfbFieldTypes_name, int32(x))
+}
+
+func (OxmOfbFieldTypes) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{13}
+}
+
+// The VLAN id is 12-bits, so we can use the entire 16 bits to indicate
+// special conditions.
+type OfpVlanId int32
+
+const (
+ OfpVlanId_OFPVID_NONE OfpVlanId = 0
+ OfpVlanId_OFPVID_PRESENT OfpVlanId = 4096
+)
+
+var OfpVlanId_name = map[int32]string{
+ 0: "OFPVID_NONE",
+ 4096: "OFPVID_PRESENT",
+}
+
+var OfpVlanId_value = map[string]int32{
+ "OFPVID_NONE": 0,
+ "OFPVID_PRESENT": 4096,
+}
+
+func (x OfpVlanId) String() string {
+ return proto.EnumName(OfpVlanId_name, int32(x))
+}
+
+func (OfpVlanId) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{14}
+}
+
+// Bit definitions for IPv6 Extension Header pseudo-field.
+type OfpIpv6ExthdrFlags int32
+
+const (
+ OfpIpv6ExthdrFlags_OFPIEH_INVALID OfpIpv6ExthdrFlags = 0
+ OfpIpv6ExthdrFlags_OFPIEH_NONEXT OfpIpv6ExthdrFlags = 1
+ OfpIpv6ExthdrFlags_OFPIEH_ESP OfpIpv6ExthdrFlags = 2
+ OfpIpv6ExthdrFlags_OFPIEH_AUTH OfpIpv6ExthdrFlags = 4
+ OfpIpv6ExthdrFlags_OFPIEH_DEST OfpIpv6ExthdrFlags = 8
+ OfpIpv6ExthdrFlags_OFPIEH_FRAG OfpIpv6ExthdrFlags = 16
+ OfpIpv6ExthdrFlags_OFPIEH_ROUTER OfpIpv6ExthdrFlags = 32
+ OfpIpv6ExthdrFlags_OFPIEH_HOP OfpIpv6ExthdrFlags = 64
+ OfpIpv6ExthdrFlags_OFPIEH_UNREP OfpIpv6ExthdrFlags = 128
+ OfpIpv6ExthdrFlags_OFPIEH_UNSEQ OfpIpv6ExthdrFlags = 256
+)
+
+var OfpIpv6ExthdrFlags_name = map[int32]string{
+ 0: "OFPIEH_INVALID",
+ 1: "OFPIEH_NONEXT",
+ 2: "OFPIEH_ESP",
+ 4: "OFPIEH_AUTH",
+ 8: "OFPIEH_DEST",
+ 16: "OFPIEH_FRAG",
+ 32: "OFPIEH_ROUTER",
+ 64: "OFPIEH_HOP",
+ 128: "OFPIEH_UNREP",
+ 256: "OFPIEH_UNSEQ",
+}
+
+var OfpIpv6ExthdrFlags_value = map[string]int32{
+ "OFPIEH_INVALID": 0,
+ "OFPIEH_NONEXT": 1,
+ "OFPIEH_ESP": 2,
+ "OFPIEH_AUTH": 4,
+ "OFPIEH_DEST": 8,
+ "OFPIEH_FRAG": 16,
+ "OFPIEH_ROUTER": 32,
+ "OFPIEH_HOP": 64,
+ "OFPIEH_UNREP": 128,
+ "OFPIEH_UNSEQ": 256,
+}
+
+func (x OfpIpv6ExthdrFlags) String() string {
+ return proto.EnumName(OfpIpv6ExthdrFlags_name, int32(x))
+}
+
+func (OfpIpv6ExthdrFlags) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{15}
+}
+
+type OfpActionType int32
+
+const (
+ OfpActionType_OFPAT_OUTPUT OfpActionType = 0
+ OfpActionType_OFPAT_COPY_TTL_OUT OfpActionType = 11
+ OfpActionType_OFPAT_COPY_TTL_IN OfpActionType = 12
+ OfpActionType_OFPAT_SET_MPLS_TTL OfpActionType = 15
+ OfpActionType_OFPAT_DEC_MPLS_TTL OfpActionType = 16
+ OfpActionType_OFPAT_PUSH_VLAN OfpActionType = 17
+ OfpActionType_OFPAT_POP_VLAN OfpActionType = 18
+ OfpActionType_OFPAT_PUSH_MPLS OfpActionType = 19
+ OfpActionType_OFPAT_POP_MPLS OfpActionType = 20
+ OfpActionType_OFPAT_SET_QUEUE OfpActionType = 21
+ OfpActionType_OFPAT_GROUP OfpActionType = 22
+ OfpActionType_OFPAT_SET_NW_TTL OfpActionType = 23
+ OfpActionType_OFPAT_DEC_NW_TTL OfpActionType = 24
+ OfpActionType_OFPAT_SET_FIELD OfpActionType = 25
+ OfpActionType_OFPAT_PUSH_PBB OfpActionType = 26
+ OfpActionType_OFPAT_POP_PBB OfpActionType = 27
+ OfpActionType_OFPAT_EXPERIMENTER OfpActionType = 65535
+)
+
+var OfpActionType_name = map[int32]string{
+ 0: "OFPAT_OUTPUT",
+ 11: "OFPAT_COPY_TTL_OUT",
+ 12: "OFPAT_COPY_TTL_IN",
+ 15: "OFPAT_SET_MPLS_TTL",
+ 16: "OFPAT_DEC_MPLS_TTL",
+ 17: "OFPAT_PUSH_VLAN",
+ 18: "OFPAT_POP_VLAN",
+ 19: "OFPAT_PUSH_MPLS",
+ 20: "OFPAT_POP_MPLS",
+ 21: "OFPAT_SET_QUEUE",
+ 22: "OFPAT_GROUP",
+ 23: "OFPAT_SET_NW_TTL",
+ 24: "OFPAT_DEC_NW_TTL",
+ 25: "OFPAT_SET_FIELD",
+ 26: "OFPAT_PUSH_PBB",
+ 27: "OFPAT_POP_PBB",
+ 65535: "OFPAT_EXPERIMENTER",
+}
+
+var OfpActionType_value = map[string]int32{
+ "OFPAT_OUTPUT": 0,
+ "OFPAT_COPY_TTL_OUT": 11,
+ "OFPAT_COPY_TTL_IN": 12,
+ "OFPAT_SET_MPLS_TTL": 15,
+ "OFPAT_DEC_MPLS_TTL": 16,
+ "OFPAT_PUSH_VLAN": 17,
+ "OFPAT_POP_VLAN": 18,
+ "OFPAT_PUSH_MPLS": 19,
+ "OFPAT_POP_MPLS": 20,
+ "OFPAT_SET_QUEUE": 21,
+ "OFPAT_GROUP": 22,
+ "OFPAT_SET_NW_TTL": 23,
+ "OFPAT_DEC_NW_TTL": 24,
+ "OFPAT_SET_FIELD": 25,
+ "OFPAT_PUSH_PBB": 26,
+ "OFPAT_POP_PBB": 27,
+ "OFPAT_EXPERIMENTER": 65535,
+}
+
+func (x OfpActionType) String() string {
+ return proto.EnumName(OfpActionType_name, int32(x))
+}
+
+func (OfpActionType) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{16}
+}
+
+type OfpControllerMaxLen int32
+
+const (
+ OfpControllerMaxLen_OFPCML_INVALID OfpControllerMaxLen = 0
+ OfpControllerMaxLen_OFPCML_MAX OfpControllerMaxLen = 65509
+ OfpControllerMaxLen_OFPCML_NO_BUFFER OfpControllerMaxLen = 65535
+)
+
+var OfpControllerMaxLen_name = map[int32]string{
+ 0: "OFPCML_INVALID",
+ 65509: "OFPCML_MAX",
+ 65535: "OFPCML_NO_BUFFER",
+}
+
+var OfpControllerMaxLen_value = map[string]int32{
+ "OFPCML_INVALID": 0,
+ "OFPCML_MAX": 65509,
+ "OFPCML_NO_BUFFER": 65535,
+}
+
+func (x OfpControllerMaxLen) String() string {
+ return proto.EnumName(OfpControllerMaxLen_name, int32(x))
+}
+
+func (OfpControllerMaxLen) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{17}
+}
+
+type OfpInstructionType int32
+
+const (
+ OfpInstructionType_OFPIT_INVALID OfpInstructionType = 0
+ OfpInstructionType_OFPIT_GOTO_TABLE OfpInstructionType = 1
+ OfpInstructionType_OFPIT_WRITE_METADATA OfpInstructionType = 2
+ OfpInstructionType_OFPIT_WRITE_ACTIONS OfpInstructionType = 3
+ OfpInstructionType_OFPIT_APPLY_ACTIONS OfpInstructionType = 4
+ OfpInstructionType_OFPIT_CLEAR_ACTIONS OfpInstructionType = 5
+ OfpInstructionType_OFPIT_METER OfpInstructionType = 6
+ OfpInstructionType_OFPIT_EXPERIMENTER OfpInstructionType = 65535
+)
+
+var OfpInstructionType_name = map[int32]string{
+ 0: "OFPIT_INVALID",
+ 1: "OFPIT_GOTO_TABLE",
+ 2: "OFPIT_WRITE_METADATA",
+ 3: "OFPIT_WRITE_ACTIONS",
+ 4: "OFPIT_APPLY_ACTIONS",
+ 5: "OFPIT_CLEAR_ACTIONS",
+ 6: "OFPIT_METER",
+ 65535: "OFPIT_EXPERIMENTER",
+}
+
+var OfpInstructionType_value = map[string]int32{
+ "OFPIT_INVALID": 0,
+ "OFPIT_GOTO_TABLE": 1,
+ "OFPIT_WRITE_METADATA": 2,
+ "OFPIT_WRITE_ACTIONS": 3,
+ "OFPIT_APPLY_ACTIONS": 4,
+ "OFPIT_CLEAR_ACTIONS": 5,
+ "OFPIT_METER": 6,
+ "OFPIT_EXPERIMENTER": 65535,
+}
+
+func (x OfpInstructionType) String() string {
+ return proto.EnumName(OfpInstructionType_name, int32(x))
+}
+
+func (OfpInstructionType) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{18}
+}
+
+type OfpFlowModCommand int32
+
+const (
+ OfpFlowModCommand_OFPFC_ADD OfpFlowModCommand = 0
+ OfpFlowModCommand_OFPFC_MODIFY OfpFlowModCommand = 1
+ OfpFlowModCommand_OFPFC_MODIFY_STRICT OfpFlowModCommand = 2
+ OfpFlowModCommand_OFPFC_DELETE OfpFlowModCommand = 3
+ OfpFlowModCommand_OFPFC_DELETE_STRICT OfpFlowModCommand = 4
+)
+
+var OfpFlowModCommand_name = map[int32]string{
+ 0: "OFPFC_ADD",
+ 1: "OFPFC_MODIFY",
+ 2: "OFPFC_MODIFY_STRICT",
+ 3: "OFPFC_DELETE",
+ 4: "OFPFC_DELETE_STRICT",
+}
+
+var OfpFlowModCommand_value = map[string]int32{
+ "OFPFC_ADD": 0,
+ "OFPFC_MODIFY": 1,
+ "OFPFC_MODIFY_STRICT": 2,
+ "OFPFC_DELETE": 3,
+ "OFPFC_DELETE_STRICT": 4,
+}
+
+func (x OfpFlowModCommand) String() string {
+ return proto.EnumName(OfpFlowModCommand_name, int32(x))
+}
+
+func (OfpFlowModCommand) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{19}
+}
+
+type OfpFlowModFlags int32
+
+const (
+ OfpFlowModFlags_OFPFF_INVALID OfpFlowModFlags = 0
+ OfpFlowModFlags_OFPFF_SEND_FLOW_REM OfpFlowModFlags = 1
+ OfpFlowModFlags_OFPFF_CHECK_OVERLAP OfpFlowModFlags = 2
+ OfpFlowModFlags_OFPFF_RESET_COUNTS OfpFlowModFlags = 4
+ OfpFlowModFlags_OFPFF_NO_PKT_COUNTS OfpFlowModFlags = 8
+ OfpFlowModFlags_OFPFF_NO_BYT_COUNTS OfpFlowModFlags = 16
+)
+
+var OfpFlowModFlags_name = map[int32]string{
+ 0: "OFPFF_INVALID",
+ 1: "OFPFF_SEND_FLOW_REM",
+ 2: "OFPFF_CHECK_OVERLAP",
+ 4: "OFPFF_RESET_COUNTS",
+ 8: "OFPFF_NO_PKT_COUNTS",
+ 16: "OFPFF_NO_BYT_COUNTS",
+}
+
+var OfpFlowModFlags_value = map[string]int32{
+ "OFPFF_INVALID": 0,
+ "OFPFF_SEND_FLOW_REM": 1,
+ "OFPFF_CHECK_OVERLAP": 2,
+ "OFPFF_RESET_COUNTS": 4,
+ "OFPFF_NO_PKT_COUNTS": 8,
+ "OFPFF_NO_BYT_COUNTS": 16,
+}
+
+func (x OfpFlowModFlags) String() string {
+ return proto.EnumName(OfpFlowModFlags_name, int32(x))
+}
+
+func (OfpFlowModFlags) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{20}
+}
+
+// Group numbering. Groups can use any number up to OFPG_MAX.
+type OfpGroup int32
+
+const (
+ OfpGroup_OFPG_INVALID OfpGroup = 0
+ // Last usable group number.
+ OfpGroup_OFPG_MAX OfpGroup = 2147483392
+ // Fake groups.
+ OfpGroup_OFPG_ALL OfpGroup = 2147483644
+ OfpGroup_OFPG_ANY OfpGroup = 2147483647
+)
+
+var OfpGroup_name = map[int32]string{
+ 0: "OFPG_INVALID",
+ 2147483392: "OFPG_MAX",
+ 2147483644: "OFPG_ALL",
+ 2147483647: "OFPG_ANY",
+}
+
+var OfpGroup_value = map[string]int32{
+ "OFPG_INVALID": 0,
+ "OFPG_MAX": 2147483392,
+ "OFPG_ALL": 2147483644,
+ "OFPG_ANY": 2147483647,
+}
+
+func (x OfpGroup) String() string {
+ return proto.EnumName(OfpGroup_name, int32(x))
+}
+
+func (OfpGroup) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{21}
+}
+
+// Group commands
+type OfpGroupModCommand int32
+
+const (
+ OfpGroupModCommand_OFPGC_ADD OfpGroupModCommand = 0
+ OfpGroupModCommand_OFPGC_MODIFY OfpGroupModCommand = 1
+ OfpGroupModCommand_OFPGC_DELETE OfpGroupModCommand = 2
+)
+
+var OfpGroupModCommand_name = map[int32]string{
+ 0: "OFPGC_ADD",
+ 1: "OFPGC_MODIFY",
+ 2: "OFPGC_DELETE",
+}
+
+var OfpGroupModCommand_value = map[string]int32{
+ "OFPGC_ADD": 0,
+ "OFPGC_MODIFY": 1,
+ "OFPGC_DELETE": 2,
+}
+
+func (x OfpGroupModCommand) String() string {
+ return proto.EnumName(OfpGroupModCommand_name, int32(x))
+}
+
+func (OfpGroupModCommand) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{22}
+}
+
+// Group types. Values in the range [128; 255] are reserved for experimental
+// use.
+type OfpGroupType int32
+
+const (
+ OfpGroupType_OFPGT_ALL OfpGroupType = 0
+ OfpGroupType_OFPGT_SELECT OfpGroupType = 1
+ OfpGroupType_OFPGT_INDIRECT OfpGroupType = 2
+ OfpGroupType_OFPGT_FF OfpGroupType = 3
+)
+
+var OfpGroupType_name = map[int32]string{
+ 0: "OFPGT_ALL",
+ 1: "OFPGT_SELECT",
+ 2: "OFPGT_INDIRECT",
+ 3: "OFPGT_FF",
+}
+
+var OfpGroupType_value = map[string]int32{
+ "OFPGT_ALL": 0,
+ "OFPGT_SELECT": 1,
+ "OFPGT_INDIRECT": 2,
+ "OFPGT_FF": 3,
+}
+
+func (x OfpGroupType) String() string {
+ return proto.EnumName(OfpGroupType_name, int32(x))
+}
+
+func (OfpGroupType) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{23}
+}
+
+// Why is this packet being sent to the controller?
+type OfpPacketInReason int32
+
+const (
+ OfpPacketInReason_OFPR_NO_MATCH OfpPacketInReason = 0
+ OfpPacketInReason_OFPR_ACTION OfpPacketInReason = 1
+ OfpPacketInReason_OFPR_INVALID_TTL OfpPacketInReason = 2
+)
+
+var OfpPacketInReason_name = map[int32]string{
+ 0: "OFPR_NO_MATCH",
+ 1: "OFPR_ACTION",
+ 2: "OFPR_INVALID_TTL",
+}
+
+var OfpPacketInReason_value = map[string]int32{
+ "OFPR_NO_MATCH": 0,
+ "OFPR_ACTION": 1,
+ "OFPR_INVALID_TTL": 2,
+}
+
+func (x OfpPacketInReason) String() string {
+ return proto.EnumName(OfpPacketInReason_name, int32(x))
+}
+
+func (OfpPacketInReason) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{24}
+}
+
+// Why was this flow removed?
+type OfpFlowRemovedReason int32
+
+const (
+ OfpFlowRemovedReason_OFPRR_IDLE_TIMEOUT OfpFlowRemovedReason = 0
+ OfpFlowRemovedReason_OFPRR_HARD_TIMEOUT OfpFlowRemovedReason = 1
+ OfpFlowRemovedReason_OFPRR_DELETE OfpFlowRemovedReason = 2
+ OfpFlowRemovedReason_OFPRR_GROUP_DELETE OfpFlowRemovedReason = 3
+ OfpFlowRemovedReason_OFPRR_METER_DELETE OfpFlowRemovedReason = 4
+)
+
+var OfpFlowRemovedReason_name = map[int32]string{
+ 0: "OFPRR_IDLE_TIMEOUT",
+ 1: "OFPRR_HARD_TIMEOUT",
+ 2: "OFPRR_DELETE",
+ 3: "OFPRR_GROUP_DELETE",
+ 4: "OFPRR_METER_DELETE",
+}
+
+var OfpFlowRemovedReason_value = map[string]int32{
+ "OFPRR_IDLE_TIMEOUT": 0,
+ "OFPRR_HARD_TIMEOUT": 1,
+ "OFPRR_DELETE": 2,
+ "OFPRR_GROUP_DELETE": 3,
+ "OFPRR_METER_DELETE": 4,
+}
+
+func (x OfpFlowRemovedReason) String() string {
+ return proto.EnumName(OfpFlowRemovedReason_name, int32(x))
+}
+
+func (OfpFlowRemovedReason) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{25}
+}
+
+// Meter numbering. Flow meters can use any number up to OFPM_MAX.
+type OfpMeter int32
+
+const (
+ OfpMeter_OFPM_ZERO OfpMeter = 0
+ // Last usable meter.
+ OfpMeter_OFPM_MAX OfpMeter = 2147418112
+ // Virtual meters.
+ OfpMeter_OFPM_SLOWPATH OfpMeter = 2147483645
+ OfpMeter_OFPM_CONTROLLER OfpMeter = 2147483646
+ OfpMeter_OFPM_ALL OfpMeter = 2147483647
+)
+
+var OfpMeter_name = map[int32]string{
+ 0: "OFPM_ZERO",
+ 2147418112: "OFPM_MAX",
+ 2147483645: "OFPM_SLOWPATH",
+ 2147483646: "OFPM_CONTROLLER",
+ 2147483647: "OFPM_ALL",
+}
+
+var OfpMeter_value = map[string]int32{
+ "OFPM_ZERO": 0,
+ "OFPM_MAX": 2147418112,
+ "OFPM_SLOWPATH": 2147483645,
+ "OFPM_CONTROLLER": 2147483646,
+ "OFPM_ALL": 2147483647,
+}
+
+func (x OfpMeter) String() string {
+ return proto.EnumName(OfpMeter_name, int32(x))
+}
+
+func (OfpMeter) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{26}
+}
+
+// Meter band types
+type OfpMeterBandType int32
+
+const (
+ OfpMeterBandType_OFPMBT_INVALID OfpMeterBandType = 0
+ OfpMeterBandType_OFPMBT_DROP OfpMeterBandType = 1
+ OfpMeterBandType_OFPMBT_DSCP_REMARK OfpMeterBandType = 2
+ OfpMeterBandType_OFPMBT_EXPERIMENTER OfpMeterBandType = 65535
+)
+
+var OfpMeterBandType_name = map[int32]string{
+ 0: "OFPMBT_INVALID",
+ 1: "OFPMBT_DROP",
+ 2: "OFPMBT_DSCP_REMARK",
+ 65535: "OFPMBT_EXPERIMENTER",
+}
+
+var OfpMeterBandType_value = map[string]int32{
+ "OFPMBT_INVALID": 0,
+ "OFPMBT_DROP": 1,
+ "OFPMBT_DSCP_REMARK": 2,
+ "OFPMBT_EXPERIMENTER": 65535,
+}
+
+func (x OfpMeterBandType) String() string {
+ return proto.EnumName(OfpMeterBandType_name, int32(x))
+}
+
+func (OfpMeterBandType) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{27}
+}
+
+// Meter commands
+type OfpMeterModCommand int32
+
+const (
+ OfpMeterModCommand_OFPMC_ADD OfpMeterModCommand = 0
+ OfpMeterModCommand_OFPMC_MODIFY OfpMeterModCommand = 1
+ OfpMeterModCommand_OFPMC_DELETE OfpMeterModCommand = 2
+)
+
+var OfpMeterModCommand_name = map[int32]string{
+ 0: "OFPMC_ADD",
+ 1: "OFPMC_MODIFY",
+ 2: "OFPMC_DELETE",
+}
+
+var OfpMeterModCommand_value = map[string]int32{
+ "OFPMC_ADD": 0,
+ "OFPMC_MODIFY": 1,
+ "OFPMC_DELETE": 2,
+}
+
+func (x OfpMeterModCommand) String() string {
+ return proto.EnumName(OfpMeterModCommand_name, int32(x))
+}
+
+func (OfpMeterModCommand) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{28}
+}
+
+// Meter configuration flags
+type OfpMeterFlags int32
+
+const (
+ OfpMeterFlags_OFPMF_INVALID OfpMeterFlags = 0
+ OfpMeterFlags_OFPMF_KBPS OfpMeterFlags = 1
+ OfpMeterFlags_OFPMF_PKTPS OfpMeterFlags = 2
+ OfpMeterFlags_OFPMF_BURST OfpMeterFlags = 4
+ OfpMeterFlags_OFPMF_STATS OfpMeterFlags = 8
+)
+
+var OfpMeterFlags_name = map[int32]string{
+ 0: "OFPMF_INVALID",
+ 1: "OFPMF_KBPS",
+ 2: "OFPMF_PKTPS",
+ 4: "OFPMF_BURST",
+ 8: "OFPMF_STATS",
+}
+
+var OfpMeterFlags_value = map[string]int32{
+ "OFPMF_INVALID": 0,
+ "OFPMF_KBPS": 1,
+ "OFPMF_PKTPS": 2,
+ "OFPMF_BURST": 4,
+ "OFPMF_STATS": 8,
+}
+
+func (x OfpMeterFlags) String() string {
+ return proto.EnumName(OfpMeterFlags_name, int32(x))
+}
+
+func (OfpMeterFlags) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{29}
+}
+
+// Values for 'type' in ofp_error_message. These values are immutable: they
+// will not change in future versions of the protocol (although new values may
+// be added).
+type OfpErrorType int32
+
+const (
+ OfpErrorType_OFPET_HELLO_FAILED OfpErrorType = 0
+ OfpErrorType_OFPET_BAD_REQUEST OfpErrorType = 1
+ OfpErrorType_OFPET_BAD_ACTION OfpErrorType = 2
+ OfpErrorType_OFPET_BAD_INSTRUCTION OfpErrorType = 3
+ OfpErrorType_OFPET_BAD_MATCH OfpErrorType = 4
+ OfpErrorType_OFPET_FLOW_MOD_FAILED OfpErrorType = 5
+ OfpErrorType_OFPET_GROUP_MOD_FAILED OfpErrorType = 6
+ OfpErrorType_OFPET_PORT_MOD_FAILED OfpErrorType = 7
+ OfpErrorType_OFPET_TABLE_MOD_FAILED OfpErrorType = 8
+ OfpErrorType_OFPET_QUEUE_OP_FAILED OfpErrorType = 9
+ OfpErrorType_OFPET_SWITCH_CONFIG_FAILED OfpErrorType = 10
+ OfpErrorType_OFPET_ROLE_REQUEST_FAILED OfpErrorType = 11
+ OfpErrorType_OFPET_METER_MOD_FAILED OfpErrorType = 12
+ OfpErrorType_OFPET_TABLE_FEATURES_FAILED OfpErrorType = 13
+ OfpErrorType_OFPET_EXPERIMENTER OfpErrorType = 65535
+)
+
+var OfpErrorType_name = map[int32]string{
+ 0: "OFPET_HELLO_FAILED",
+ 1: "OFPET_BAD_REQUEST",
+ 2: "OFPET_BAD_ACTION",
+ 3: "OFPET_BAD_INSTRUCTION",
+ 4: "OFPET_BAD_MATCH",
+ 5: "OFPET_FLOW_MOD_FAILED",
+ 6: "OFPET_GROUP_MOD_FAILED",
+ 7: "OFPET_PORT_MOD_FAILED",
+ 8: "OFPET_TABLE_MOD_FAILED",
+ 9: "OFPET_QUEUE_OP_FAILED",
+ 10: "OFPET_SWITCH_CONFIG_FAILED",
+ 11: "OFPET_ROLE_REQUEST_FAILED",
+ 12: "OFPET_METER_MOD_FAILED",
+ 13: "OFPET_TABLE_FEATURES_FAILED",
+ 65535: "OFPET_EXPERIMENTER",
+}
+
+var OfpErrorType_value = map[string]int32{
+ "OFPET_HELLO_FAILED": 0,
+ "OFPET_BAD_REQUEST": 1,
+ "OFPET_BAD_ACTION": 2,
+ "OFPET_BAD_INSTRUCTION": 3,
+ "OFPET_BAD_MATCH": 4,
+ "OFPET_FLOW_MOD_FAILED": 5,
+ "OFPET_GROUP_MOD_FAILED": 6,
+ "OFPET_PORT_MOD_FAILED": 7,
+ "OFPET_TABLE_MOD_FAILED": 8,
+ "OFPET_QUEUE_OP_FAILED": 9,
+ "OFPET_SWITCH_CONFIG_FAILED": 10,
+ "OFPET_ROLE_REQUEST_FAILED": 11,
+ "OFPET_METER_MOD_FAILED": 12,
+ "OFPET_TABLE_FEATURES_FAILED": 13,
+ "OFPET_EXPERIMENTER": 65535,
+}
+
+func (x OfpErrorType) String() string {
+ return proto.EnumName(OfpErrorType_name, int32(x))
+}
+
+func (OfpErrorType) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{30}
+}
+
+// ofp_error_msg 'code' values for OFPET_HELLO_FAILED. 'data' contains an
+// ASCII text string that may give failure details.
+type OfpHelloFailedCode int32
+
+const (
+ OfpHelloFailedCode_OFPHFC_INCOMPATIBLE OfpHelloFailedCode = 0
+ OfpHelloFailedCode_OFPHFC_EPERM OfpHelloFailedCode = 1
+)
+
+var OfpHelloFailedCode_name = map[int32]string{
+ 0: "OFPHFC_INCOMPATIBLE",
+ 1: "OFPHFC_EPERM",
+}
+
+var OfpHelloFailedCode_value = map[string]int32{
+ "OFPHFC_INCOMPATIBLE": 0,
+ "OFPHFC_EPERM": 1,
+}
+
+func (x OfpHelloFailedCode) String() string {
+ return proto.EnumName(OfpHelloFailedCode_name, int32(x))
+}
+
+func (OfpHelloFailedCode) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{31}
+}
+
+// ofp_error_msg 'code' values for OFPET_BAD_REQUEST. 'data' contains at least
+// the first 64 bytes of the failed request.
+type OfpBadRequestCode int32
+
+const (
+ OfpBadRequestCode_OFPBRC_BAD_VERSION OfpBadRequestCode = 0
+ OfpBadRequestCode_OFPBRC_BAD_TYPE OfpBadRequestCode = 1
+ OfpBadRequestCode_OFPBRC_BAD_MULTIPART OfpBadRequestCode = 2
+ OfpBadRequestCode_OFPBRC_BAD_EXPERIMENTER OfpBadRequestCode = 3
+ OfpBadRequestCode_OFPBRC_BAD_EXP_TYPE OfpBadRequestCode = 4
+ OfpBadRequestCode_OFPBRC_EPERM OfpBadRequestCode = 5
+ OfpBadRequestCode_OFPBRC_BAD_LEN OfpBadRequestCode = 6
+ OfpBadRequestCode_OFPBRC_BUFFER_EMPTY OfpBadRequestCode = 7
+ OfpBadRequestCode_OFPBRC_BUFFER_UNKNOWN OfpBadRequestCode = 8
+ OfpBadRequestCode_OFPBRC_BAD_TABLE_ID OfpBadRequestCode = 9
+ OfpBadRequestCode_OFPBRC_IS_SLAVE OfpBadRequestCode = 10
+ OfpBadRequestCode_OFPBRC_BAD_PORT OfpBadRequestCode = 11
+ OfpBadRequestCode_OFPBRC_BAD_PACKET OfpBadRequestCode = 12
+ OfpBadRequestCode_OFPBRC_MULTIPART_BUFFER_OVERFLOW OfpBadRequestCode = 13
+)
+
+var OfpBadRequestCode_name = map[int32]string{
+ 0: "OFPBRC_BAD_VERSION",
+ 1: "OFPBRC_BAD_TYPE",
+ 2: "OFPBRC_BAD_MULTIPART",
+ 3: "OFPBRC_BAD_EXPERIMENTER",
+ 4: "OFPBRC_BAD_EXP_TYPE",
+ 5: "OFPBRC_EPERM",
+ 6: "OFPBRC_BAD_LEN",
+ 7: "OFPBRC_BUFFER_EMPTY",
+ 8: "OFPBRC_BUFFER_UNKNOWN",
+ 9: "OFPBRC_BAD_TABLE_ID",
+ 10: "OFPBRC_IS_SLAVE",
+ 11: "OFPBRC_BAD_PORT",
+ 12: "OFPBRC_BAD_PACKET",
+ 13: "OFPBRC_MULTIPART_BUFFER_OVERFLOW",
+}
+
+var OfpBadRequestCode_value = map[string]int32{
+ "OFPBRC_BAD_VERSION": 0,
+ "OFPBRC_BAD_TYPE": 1,
+ "OFPBRC_BAD_MULTIPART": 2,
+ "OFPBRC_BAD_EXPERIMENTER": 3,
+ "OFPBRC_BAD_EXP_TYPE": 4,
+ "OFPBRC_EPERM": 5,
+ "OFPBRC_BAD_LEN": 6,
+ "OFPBRC_BUFFER_EMPTY": 7,
+ "OFPBRC_BUFFER_UNKNOWN": 8,
+ "OFPBRC_BAD_TABLE_ID": 9,
+ "OFPBRC_IS_SLAVE": 10,
+ "OFPBRC_BAD_PORT": 11,
+ "OFPBRC_BAD_PACKET": 12,
+ "OFPBRC_MULTIPART_BUFFER_OVERFLOW": 13,
+}
+
+func (x OfpBadRequestCode) String() string {
+ return proto.EnumName(OfpBadRequestCode_name, int32(x))
+}
+
+func (OfpBadRequestCode) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{32}
+}
+
+// ofp_error_msg 'code' values for OFPET_BAD_ACTION. 'data' contains at least
+// the first 64 bytes of the failed request.
+type OfpBadActionCode int32
+
+const (
+ OfpBadActionCode_OFPBAC_BAD_TYPE OfpBadActionCode = 0
+ OfpBadActionCode_OFPBAC_BAD_LEN OfpBadActionCode = 1
+ OfpBadActionCode_OFPBAC_BAD_EXPERIMENTER OfpBadActionCode = 2
+ OfpBadActionCode_OFPBAC_BAD_EXP_TYPE OfpBadActionCode = 3
+ OfpBadActionCode_OFPBAC_BAD_OUT_PORT OfpBadActionCode = 4
+ OfpBadActionCode_OFPBAC_BAD_ARGUMENT OfpBadActionCode = 5
+ OfpBadActionCode_OFPBAC_EPERM OfpBadActionCode = 6
+ OfpBadActionCode_OFPBAC_TOO_MANY OfpBadActionCode = 7
+ OfpBadActionCode_OFPBAC_BAD_QUEUE OfpBadActionCode = 8
+ OfpBadActionCode_OFPBAC_BAD_OUT_GROUP OfpBadActionCode = 9
+ OfpBadActionCode_OFPBAC_MATCH_INCONSISTENT OfpBadActionCode = 10
+ OfpBadActionCode_OFPBAC_UNSUPPORTED_ORDER OfpBadActionCode = 11
+ OfpBadActionCode_OFPBAC_BAD_TAG OfpBadActionCode = 12
+ OfpBadActionCode_OFPBAC_BAD_SET_TYPE OfpBadActionCode = 13
+ OfpBadActionCode_OFPBAC_BAD_SET_LEN OfpBadActionCode = 14
+ OfpBadActionCode_OFPBAC_BAD_SET_ARGUMENT OfpBadActionCode = 15
+)
+
+var OfpBadActionCode_name = map[int32]string{
+ 0: "OFPBAC_BAD_TYPE",
+ 1: "OFPBAC_BAD_LEN",
+ 2: "OFPBAC_BAD_EXPERIMENTER",
+ 3: "OFPBAC_BAD_EXP_TYPE",
+ 4: "OFPBAC_BAD_OUT_PORT",
+ 5: "OFPBAC_BAD_ARGUMENT",
+ 6: "OFPBAC_EPERM",
+ 7: "OFPBAC_TOO_MANY",
+ 8: "OFPBAC_BAD_QUEUE",
+ 9: "OFPBAC_BAD_OUT_GROUP",
+ 10: "OFPBAC_MATCH_INCONSISTENT",
+ 11: "OFPBAC_UNSUPPORTED_ORDER",
+ 12: "OFPBAC_BAD_TAG",
+ 13: "OFPBAC_BAD_SET_TYPE",
+ 14: "OFPBAC_BAD_SET_LEN",
+ 15: "OFPBAC_BAD_SET_ARGUMENT",
+}
+
+var OfpBadActionCode_value = map[string]int32{
+ "OFPBAC_BAD_TYPE": 0,
+ "OFPBAC_BAD_LEN": 1,
+ "OFPBAC_BAD_EXPERIMENTER": 2,
+ "OFPBAC_BAD_EXP_TYPE": 3,
+ "OFPBAC_BAD_OUT_PORT": 4,
+ "OFPBAC_BAD_ARGUMENT": 5,
+ "OFPBAC_EPERM": 6,
+ "OFPBAC_TOO_MANY": 7,
+ "OFPBAC_BAD_QUEUE": 8,
+ "OFPBAC_BAD_OUT_GROUP": 9,
+ "OFPBAC_MATCH_INCONSISTENT": 10,
+ "OFPBAC_UNSUPPORTED_ORDER": 11,
+ "OFPBAC_BAD_TAG": 12,
+ "OFPBAC_BAD_SET_TYPE": 13,
+ "OFPBAC_BAD_SET_LEN": 14,
+ "OFPBAC_BAD_SET_ARGUMENT": 15,
+}
+
+func (x OfpBadActionCode) String() string {
+ return proto.EnumName(OfpBadActionCode_name, int32(x))
+}
+
+func (OfpBadActionCode) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{33}
+}
+
+// ofp_error_msg 'code' values for OFPET_BAD_INSTRUCTION. 'data' contains at
+// least the first 64 bytes of the failed request.
+type OfpBadInstructionCode int32
+
+const (
+ OfpBadInstructionCode_OFPBIC_UNKNOWN_INST OfpBadInstructionCode = 0
+ OfpBadInstructionCode_OFPBIC_UNSUP_INST OfpBadInstructionCode = 1
+ OfpBadInstructionCode_OFPBIC_BAD_TABLE_ID OfpBadInstructionCode = 2
+ OfpBadInstructionCode_OFPBIC_UNSUP_METADATA OfpBadInstructionCode = 3
+ OfpBadInstructionCode_OFPBIC_UNSUP_METADATA_MASK OfpBadInstructionCode = 4
+ OfpBadInstructionCode_OFPBIC_BAD_EXPERIMENTER OfpBadInstructionCode = 5
+ OfpBadInstructionCode_OFPBIC_BAD_EXP_TYPE OfpBadInstructionCode = 6
+ OfpBadInstructionCode_OFPBIC_BAD_LEN OfpBadInstructionCode = 7
+ OfpBadInstructionCode_OFPBIC_EPERM OfpBadInstructionCode = 8
+)
+
+var OfpBadInstructionCode_name = map[int32]string{
+ 0: "OFPBIC_UNKNOWN_INST",
+ 1: "OFPBIC_UNSUP_INST",
+ 2: "OFPBIC_BAD_TABLE_ID",
+ 3: "OFPBIC_UNSUP_METADATA",
+ 4: "OFPBIC_UNSUP_METADATA_MASK",
+ 5: "OFPBIC_BAD_EXPERIMENTER",
+ 6: "OFPBIC_BAD_EXP_TYPE",
+ 7: "OFPBIC_BAD_LEN",
+ 8: "OFPBIC_EPERM",
+}
+
+var OfpBadInstructionCode_value = map[string]int32{
+ "OFPBIC_UNKNOWN_INST": 0,
+ "OFPBIC_UNSUP_INST": 1,
+ "OFPBIC_BAD_TABLE_ID": 2,
+ "OFPBIC_UNSUP_METADATA": 3,
+ "OFPBIC_UNSUP_METADATA_MASK": 4,
+ "OFPBIC_BAD_EXPERIMENTER": 5,
+ "OFPBIC_BAD_EXP_TYPE": 6,
+ "OFPBIC_BAD_LEN": 7,
+ "OFPBIC_EPERM": 8,
+}
+
+func (x OfpBadInstructionCode) String() string {
+ return proto.EnumName(OfpBadInstructionCode_name, int32(x))
+}
+
+func (OfpBadInstructionCode) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{34}
+}
+
+// ofp_error_msg 'code' values for OFPET_BAD_MATCH. 'data' contains at least
+// the first 64 bytes of the failed request.
+type OfpBadMatchCode int32
+
+const (
+ OfpBadMatchCode_OFPBMC_BAD_TYPE OfpBadMatchCode = 0
+ OfpBadMatchCode_OFPBMC_BAD_LEN OfpBadMatchCode = 1
+ OfpBadMatchCode_OFPBMC_BAD_TAG OfpBadMatchCode = 2
+ OfpBadMatchCode_OFPBMC_BAD_DL_ADDR_MASK OfpBadMatchCode = 3
+ OfpBadMatchCode_OFPBMC_BAD_NW_ADDR_MASK OfpBadMatchCode = 4
+ OfpBadMatchCode_OFPBMC_BAD_WILDCARDS OfpBadMatchCode = 5
+ OfpBadMatchCode_OFPBMC_BAD_FIELD OfpBadMatchCode = 6
+ OfpBadMatchCode_OFPBMC_BAD_VALUE OfpBadMatchCode = 7
+ OfpBadMatchCode_OFPBMC_BAD_MASK OfpBadMatchCode = 8
+ OfpBadMatchCode_OFPBMC_BAD_PREREQ OfpBadMatchCode = 9
+ OfpBadMatchCode_OFPBMC_DUP_FIELD OfpBadMatchCode = 10
+ OfpBadMatchCode_OFPBMC_EPERM OfpBadMatchCode = 11
+)
+
+var OfpBadMatchCode_name = map[int32]string{
+ 0: "OFPBMC_BAD_TYPE",
+ 1: "OFPBMC_BAD_LEN",
+ 2: "OFPBMC_BAD_TAG",
+ 3: "OFPBMC_BAD_DL_ADDR_MASK",
+ 4: "OFPBMC_BAD_NW_ADDR_MASK",
+ 5: "OFPBMC_BAD_WILDCARDS",
+ 6: "OFPBMC_BAD_FIELD",
+ 7: "OFPBMC_BAD_VALUE",
+ 8: "OFPBMC_BAD_MASK",
+ 9: "OFPBMC_BAD_PREREQ",
+ 10: "OFPBMC_DUP_FIELD",
+ 11: "OFPBMC_EPERM",
+}
+
+var OfpBadMatchCode_value = map[string]int32{
+ "OFPBMC_BAD_TYPE": 0,
+ "OFPBMC_BAD_LEN": 1,
+ "OFPBMC_BAD_TAG": 2,
+ "OFPBMC_BAD_DL_ADDR_MASK": 3,
+ "OFPBMC_BAD_NW_ADDR_MASK": 4,
+ "OFPBMC_BAD_WILDCARDS": 5,
+ "OFPBMC_BAD_FIELD": 6,
+ "OFPBMC_BAD_VALUE": 7,
+ "OFPBMC_BAD_MASK": 8,
+ "OFPBMC_BAD_PREREQ": 9,
+ "OFPBMC_DUP_FIELD": 10,
+ "OFPBMC_EPERM": 11,
+}
+
+func (x OfpBadMatchCode) String() string {
+ return proto.EnumName(OfpBadMatchCode_name, int32(x))
+}
+
+func (OfpBadMatchCode) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{35}
+}
+
+// ofp_error_msg 'code' values for OFPET_FLOW_MOD_FAILED. 'data' contains
+// at least the first 64 bytes of the failed request.
+type OfpFlowModFailedCode int32
+
+const (
+ OfpFlowModFailedCode_OFPFMFC_UNKNOWN OfpFlowModFailedCode = 0
+ OfpFlowModFailedCode_OFPFMFC_TABLE_FULL OfpFlowModFailedCode = 1
+ OfpFlowModFailedCode_OFPFMFC_BAD_TABLE_ID OfpFlowModFailedCode = 2
+ OfpFlowModFailedCode_OFPFMFC_OVERLAP OfpFlowModFailedCode = 3
+ OfpFlowModFailedCode_OFPFMFC_EPERM OfpFlowModFailedCode = 4
+ OfpFlowModFailedCode_OFPFMFC_BAD_TIMEOUT OfpFlowModFailedCode = 5
+ OfpFlowModFailedCode_OFPFMFC_BAD_COMMAND OfpFlowModFailedCode = 6
+ OfpFlowModFailedCode_OFPFMFC_BAD_FLAGS OfpFlowModFailedCode = 7
+)
+
+var OfpFlowModFailedCode_name = map[int32]string{
+ 0: "OFPFMFC_UNKNOWN",
+ 1: "OFPFMFC_TABLE_FULL",
+ 2: "OFPFMFC_BAD_TABLE_ID",
+ 3: "OFPFMFC_OVERLAP",
+ 4: "OFPFMFC_EPERM",
+ 5: "OFPFMFC_BAD_TIMEOUT",
+ 6: "OFPFMFC_BAD_COMMAND",
+ 7: "OFPFMFC_BAD_FLAGS",
+}
+
+var OfpFlowModFailedCode_value = map[string]int32{
+ "OFPFMFC_UNKNOWN": 0,
+ "OFPFMFC_TABLE_FULL": 1,
+ "OFPFMFC_BAD_TABLE_ID": 2,
+ "OFPFMFC_OVERLAP": 3,
+ "OFPFMFC_EPERM": 4,
+ "OFPFMFC_BAD_TIMEOUT": 5,
+ "OFPFMFC_BAD_COMMAND": 6,
+ "OFPFMFC_BAD_FLAGS": 7,
+}
+
+func (x OfpFlowModFailedCode) String() string {
+ return proto.EnumName(OfpFlowModFailedCode_name, int32(x))
+}
+
+func (OfpFlowModFailedCode) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{36}
+}
+
+// ofp_error_msg 'code' values for OFPET_GROUP_MOD_FAILED. 'data' contains
+// at least the first 64 bytes of the failed request.
+type OfpGroupModFailedCode int32
+
+const (
+ OfpGroupModFailedCode_OFPGMFC_GROUP_EXISTS OfpGroupModFailedCode = 0
+ OfpGroupModFailedCode_OFPGMFC_INVALID_GROUP OfpGroupModFailedCode = 1
+ OfpGroupModFailedCode_OFPGMFC_WEIGHT_UNSUPPORTED OfpGroupModFailedCode = 2
+ OfpGroupModFailedCode_OFPGMFC_OUT_OF_GROUPS OfpGroupModFailedCode = 3
+ OfpGroupModFailedCode_OFPGMFC_OUT_OF_BUCKETS OfpGroupModFailedCode = 4
+ OfpGroupModFailedCode_OFPGMFC_CHAINING_UNSUPPORTED OfpGroupModFailedCode = 5
+ OfpGroupModFailedCode_OFPGMFC_WATCH_UNSUPPORTED OfpGroupModFailedCode = 6
+ OfpGroupModFailedCode_OFPGMFC_LOOP OfpGroupModFailedCode = 7
+ OfpGroupModFailedCode_OFPGMFC_UNKNOWN_GROUP OfpGroupModFailedCode = 8
+ OfpGroupModFailedCode_OFPGMFC_CHAINED_GROUP OfpGroupModFailedCode = 9
+ OfpGroupModFailedCode_OFPGMFC_BAD_TYPE OfpGroupModFailedCode = 10
+ OfpGroupModFailedCode_OFPGMFC_BAD_COMMAND OfpGroupModFailedCode = 11
+ OfpGroupModFailedCode_OFPGMFC_BAD_BUCKET OfpGroupModFailedCode = 12
+ OfpGroupModFailedCode_OFPGMFC_BAD_WATCH OfpGroupModFailedCode = 13
+ OfpGroupModFailedCode_OFPGMFC_EPERM OfpGroupModFailedCode = 14
+)
+
+var OfpGroupModFailedCode_name = map[int32]string{
+ 0: "OFPGMFC_GROUP_EXISTS",
+ 1: "OFPGMFC_INVALID_GROUP",
+ 2: "OFPGMFC_WEIGHT_UNSUPPORTED",
+ 3: "OFPGMFC_OUT_OF_GROUPS",
+ 4: "OFPGMFC_OUT_OF_BUCKETS",
+ 5: "OFPGMFC_CHAINING_UNSUPPORTED",
+ 6: "OFPGMFC_WATCH_UNSUPPORTED",
+ 7: "OFPGMFC_LOOP",
+ 8: "OFPGMFC_UNKNOWN_GROUP",
+ 9: "OFPGMFC_CHAINED_GROUP",
+ 10: "OFPGMFC_BAD_TYPE",
+ 11: "OFPGMFC_BAD_COMMAND",
+ 12: "OFPGMFC_BAD_BUCKET",
+ 13: "OFPGMFC_BAD_WATCH",
+ 14: "OFPGMFC_EPERM",
+}
+
+var OfpGroupModFailedCode_value = map[string]int32{
+ "OFPGMFC_GROUP_EXISTS": 0,
+ "OFPGMFC_INVALID_GROUP": 1,
+ "OFPGMFC_WEIGHT_UNSUPPORTED": 2,
+ "OFPGMFC_OUT_OF_GROUPS": 3,
+ "OFPGMFC_OUT_OF_BUCKETS": 4,
+ "OFPGMFC_CHAINING_UNSUPPORTED": 5,
+ "OFPGMFC_WATCH_UNSUPPORTED": 6,
+ "OFPGMFC_LOOP": 7,
+ "OFPGMFC_UNKNOWN_GROUP": 8,
+ "OFPGMFC_CHAINED_GROUP": 9,
+ "OFPGMFC_BAD_TYPE": 10,
+ "OFPGMFC_BAD_COMMAND": 11,
+ "OFPGMFC_BAD_BUCKET": 12,
+ "OFPGMFC_BAD_WATCH": 13,
+ "OFPGMFC_EPERM": 14,
+}
+
+func (x OfpGroupModFailedCode) String() string {
+ return proto.EnumName(OfpGroupModFailedCode_name, int32(x))
+}
+
+func (OfpGroupModFailedCode) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{37}
+}
+
+// ofp_error_msg 'code' values for OFPET_PORT_MOD_FAILED. 'data' contains
+// at least the first 64 bytes of the failed request.
+type OfpPortModFailedCode int32
+
+const (
+ OfpPortModFailedCode_OFPPMFC_BAD_PORT OfpPortModFailedCode = 0
+ OfpPortModFailedCode_OFPPMFC_BAD_HW_ADDR OfpPortModFailedCode = 1
+ OfpPortModFailedCode_OFPPMFC_BAD_CONFIG OfpPortModFailedCode = 2
+ OfpPortModFailedCode_OFPPMFC_BAD_ADVERTISE OfpPortModFailedCode = 3
+ OfpPortModFailedCode_OFPPMFC_EPERM OfpPortModFailedCode = 4
+)
+
+var OfpPortModFailedCode_name = map[int32]string{
+ 0: "OFPPMFC_BAD_PORT",
+ 1: "OFPPMFC_BAD_HW_ADDR",
+ 2: "OFPPMFC_BAD_CONFIG",
+ 3: "OFPPMFC_BAD_ADVERTISE",
+ 4: "OFPPMFC_EPERM",
+}
+
+var OfpPortModFailedCode_value = map[string]int32{
+ "OFPPMFC_BAD_PORT": 0,
+ "OFPPMFC_BAD_HW_ADDR": 1,
+ "OFPPMFC_BAD_CONFIG": 2,
+ "OFPPMFC_BAD_ADVERTISE": 3,
+ "OFPPMFC_EPERM": 4,
+}
+
+func (x OfpPortModFailedCode) String() string {
+ return proto.EnumName(OfpPortModFailedCode_name, int32(x))
+}
+
+func (OfpPortModFailedCode) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{38}
+}
+
+// ofp_error_msg 'code' values for OFPET_TABLE_MOD_FAILED. 'data' contains
+// at least the first 64 bytes of the failed request.
+type OfpTableModFailedCode int32
+
+const (
+ OfpTableModFailedCode_OFPTMFC_BAD_TABLE OfpTableModFailedCode = 0
+ OfpTableModFailedCode_OFPTMFC_BAD_CONFIG OfpTableModFailedCode = 1
+ OfpTableModFailedCode_OFPTMFC_EPERM OfpTableModFailedCode = 2
+)
+
+var OfpTableModFailedCode_name = map[int32]string{
+ 0: "OFPTMFC_BAD_TABLE",
+ 1: "OFPTMFC_BAD_CONFIG",
+ 2: "OFPTMFC_EPERM",
+}
+
+var OfpTableModFailedCode_value = map[string]int32{
+ "OFPTMFC_BAD_TABLE": 0,
+ "OFPTMFC_BAD_CONFIG": 1,
+ "OFPTMFC_EPERM": 2,
+}
+
+func (x OfpTableModFailedCode) String() string {
+ return proto.EnumName(OfpTableModFailedCode_name, int32(x))
+}
+
+func (OfpTableModFailedCode) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{39}
+}
+
+// ofp_error msg 'code' values for OFPET_QUEUE_OP_FAILED. 'data' contains
+// at least the first 64 bytes of the failed request
+type OfpQueueOpFailedCode int32
+
+const (
+ OfpQueueOpFailedCode_OFPQOFC_BAD_PORT OfpQueueOpFailedCode = 0
+ OfpQueueOpFailedCode_OFPQOFC_BAD_QUEUE OfpQueueOpFailedCode = 1
+ OfpQueueOpFailedCode_OFPQOFC_EPERM OfpQueueOpFailedCode = 2
+)
+
+var OfpQueueOpFailedCode_name = map[int32]string{
+ 0: "OFPQOFC_BAD_PORT",
+ 1: "OFPQOFC_BAD_QUEUE",
+ 2: "OFPQOFC_EPERM",
+}
+
+var OfpQueueOpFailedCode_value = map[string]int32{
+ "OFPQOFC_BAD_PORT": 0,
+ "OFPQOFC_BAD_QUEUE": 1,
+ "OFPQOFC_EPERM": 2,
+}
+
+func (x OfpQueueOpFailedCode) String() string {
+ return proto.EnumName(OfpQueueOpFailedCode_name, int32(x))
+}
+
+func (OfpQueueOpFailedCode) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{40}
+}
+
+// ofp_error_msg 'code' values for OFPET_SWITCH_CONFIG_FAILED. 'data' contains
+// at least the first 64 bytes of the failed request.
+type OfpSwitchConfigFailedCode int32
+
+const (
+ OfpSwitchConfigFailedCode_OFPSCFC_BAD_FLAGS OfpSwitchConfigFailedCode = 0
+ OfpSwitchConfigFailedCode_OFPSCFC_BAD_LEN OfpSwitchConfigFailedCode = 1
+ OfpSwitchConfigFailedCode_OFPSCFC_EPERM OfpSwitchConfigFailedCode = 2
+)
+
+var OfpSwitchConfigFailedCode_name = map[int32]string{
+ 0: "OFPSCFC_BAD_FLAGS",
+ 1: "OFPSCFC_BAD_LEN",
+ 2: "OFPSCFC_EPERM",
+}
+
+var OfpSwitchConfigFailedCode_value = map[string]int32{
+ "OFPSCFC_BAD_FLAGS": 0,
+ "OFPSCFC_BAD_LEN": 1,
+ "OFPSCFC_EPERM": 2,
+}
+
+func (x OfpSwitchConfigFailedCode) String() string {
+ return proto.EnumName(OfpSwitchConfigFailedCode_name, int32(x))
+}
+
+func (OfpSwitchConfigFailedCode) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{41}
+}
+
+// ofp_error_msg 'code' values for OFPET_ROLE_REQUEST_FAILED. 'data' contains
+// at least the first 64 bytes of the failed request.
+type OfpRoleRequestFailedCode int32
+
+const (
+ OfpRoleRequestFailedCode_OFPRRFC_STALE OfpRoleRequestFailedCode = 0
+ OfpRoleRequestFailedCode_OFPRRFC_UNSUP OfpRoleRequestFailedCode = 1
+ OfpRoleRequestFailedCode_OFPRRFC_BAD_ROLE OfpRoleRequestFailedCode = 2
+)
+
+var OfpRoleRequestFailedCode_name = map[int32]string{
+ 0: "OFPRRFC_STALE",
+ 1: "OFPRRFC_UNSUP",
+ 2: "OFPRRFC_BAD_ROLE",
+}
+
+var OfpRoleRequestFailedCode_value = map[string]int32{
+ "OFPRRFC_STALE": 0,
+ "OFPRRFC_UNSUP": 1,
+ "OFPRRFC_BAD_ROLE": 2,
+}
+
+func (x OfpRoleRequestFailedCode) String() string {
+ return proto.EnumName(OfpRoleRequestFailedCode_name, int32(x))
+}
+
+func (OfpRoleRequestFailedCode) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{42}
+}
+
+// ofp_error_msg 'code' values for OFPET_METER_MOD_FAILED. 'data' contains
+// at least the first 64 bytes of the failed request.
+type OfpMeterModFailedCode int32
+
+const (
+ OfpMeterModFailedCode_OFPMMFC_UNKNOWN OfpMeterModFailedCode = 0
+ OfpMeterModFailedCode_OFPMMFC_METER_EXISTS OfpMeterModFailedCode = 1
+ OfpMeterModFailedCode_OFPMMFC_INVALID_METER OfpMeterModFailedCode = 2
+ OfpMeterModFailedCode_OFPMMFC_UNKNOWN_METER OfpMeterModFailedCode = 3
+ OfpMeterModFailedCode_OFPMMFC_BAD_COMMAND OfpMeterModFailedCode = 4
+ OfpMeterModFailedCode_OFPMMFC_BAD_FLAGS OfpMeterModFailedCode = 5
+ OfpMeterModFailedCode_OFPMMFC_BAD_RATE OfpMeterModFailedCode = 6
+ OfpMeterModFailedCode_OFPMMFC_BAD_BURST OfpMeterModFailedCode = 7
+ OfpMeterModFailedCode_OFPMMFC_BAD_BAND OfpMeterModFailedCode = 8
+ OfpMeterModFailedCode_OFPMMFC_BAD_BAND_DETAIL OfpMeterModFailedCode = 9
+ OfpMeterModFailedCode_OFPMMFC_OUT_OF_METERS OfpMeterModFailedCode = 10
+ OfpMeterModFailedCode_OFPMMFC_OUT_OF_BANDS OfpMeterModFailedCode = 11
+)
+
+var OfpMeterModFailedCode_name = map[int32]string{
+ 0: "OFPMMFC_UNKNOWN",
+ 1: "OFPMMFC_METER_EXISTS",
+ 2: "OFPMMFC_INVALID_METER",
+ 3: "OFPMMFC_UNKNOWN_METER",
+ 4: "OFPMMFC_BAD_COMMAND",
+ 5: "OFPMMFC_BAD_FLAGS",
+ 6: "OFPMMFC_BAD_RATE",
+ 7: "OFPMMFC_BAD_BURST",
+ 8: "OFPMMFC_BAD_BAND",
+ 9: "OFPMMFC_BAD_BAND_DETAIL",
+ 10: "OFPMMFC_OUT_OF_METERS",
+ 11: "OFPMMFC_OUT_OF_BANDS",
+}
+
+var OfpMeterModFailedCode_value = map[string]int32{
+ "OFPMMFC_UNKNOWN": 0,
+ "OFPMMFC_METER_EXISTS": 1,
+ "OFPMMFC_INVALID_METER": 2,
+ "OFPMMFC_UNKNOWN_METER": 3,
+ "OFPMMFC_BAD_COMMAND": 4,
+ "OFPMMFC_BAD_FLAGS": 5,
+ "OFPMMFC_BAD_RATE": 6,
+ "OFPMMFC_BAD_BURST": 7,
+ "OFPMMFC_BAD_BAND": 8,
+ "OFPMMFC_BAD_BAND_DETAIL": 9,
+ "OFPMMFC_OUT_OF_METERS": 10,
+ "OFPMMFC_OUT_OF_BANDS": 11,
+}
+
+func (x OfpMeterModFailedCode) String() string {
+ return proto.EnumName(OfpMeterModFailedCode_name, int32(x))
+}
+
+func (OfpMeterModFailedCode) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{43}
+}
+
+// ofp_error_msg 'code' values for OFPET_TABLE_FEATURES_FAILED. 'data' contains
+// at least the first 64 bytes of the failed request.
+type OfpTableFeaturesFailedCode int32
+
+const (
+ OfpTableFeaturesFailedCode_OFPTFFC_BAD_TABLE OfpTableFeaturesFailedCode = 0
+ OfpTableFeaturesFailedCode_OFPTFFC_BAD_METADATA OfpTableFeaturesFailedCode = 1
+ OfpTableFeaturesFailedCode_OFPTFFC_BAD_TYPE OfpTableFeaturesFailedCode = 2
+ OfpTableFeaturesFailedCode_OFPTFFC_BAD_LEN OfpTableFeaturesFailedCode = 3
+ OfpTableFeaturesFailedCode_OFPTFFC_BAD_ARGUMENT OfpTableFeaturesFailedCode = 4
+ OfpTableFeaturesFailedCode_OFPTFFC_EPERM OfpTableFeaturesFailedCode = 5
+)
+
+var OfpTableFeaturesFailedCode_name = map[int32]string{
+ 0: "OFPTFFC_BAD_TABLE",
+ 1: "OFPTFFC_BAD_METADATA",
+ 2: "OFPTFFC_BAD_TYPE",
+ 3: "OFPTFFC_BAD_LEN",
+ 4: "OFPTFFC_BAD_ARGUMENT",
+ 5: "OFPTFFC_EPERM",
+}
+
+var OfpTableFeaturesFailedCode_value = map[string]int32{
+ "OFPTFFC_BAD_TABLE": 0,
+ "OFPTFFC_BAD_METADATA": 1,
+ "OFPTFFC_BAD_TYPE": 2,
+ "OFPTFFC_BAD_LEN": 3,
+ "OFPTFFC_BAD_ARGUMENT": 4,
+ "OFPTFFC_EPERM": 5,
+}
+
+func (x OfpTableFeaturesFailedCode) String() string {
+ return proto.EnumName(OfpTableFeaturesFailedCode_name, int32(x))
+}
+
+func (OfpTableFeaturesFailedCode) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{44}
+}
+
+type OfpMultipartType int32
+
+const (
+ // Description of this OpenFlow switch.
+ // The request body is empty.
+ // The reply body is struct ofp_desc.
+ OfpMultipartType_OFPMP_DESC OfpMultipartType = 0
+ // Individual flow statistics.
+ // The request body is struct ofp_flow_stats_request.
+ // The reply body is an array of struct ofp_flow_stats.
+ OfpMultipartType_OFPMP_FLOW OfpMultipartType = 1
+ // Aggregate flow statistics.
+ // The request body is struct ofp_aggregate_stats_request.
+ // The reply body is struct ofp_aggregate_stats_reply.
+ OfpMultipartType_OFPMP_AGGREGATE OfpMultipartType = 2
+ // Flow table statistics.
+ // The request body is empty.
+ // The reply body is an array of struct ofp_table_stats.
+ OfpMultipartType_OFPMP_TABLE OfpMultipartType = 3
+ // Port statistics.
+ // The request body is struct ofp_port_stats_request.
+ // The reply body is an array of struct ofp_port_stats.
+ OfpMultipartType_OFPMP_PORT_STATS OfpMultipartType = 4
+ // Queue statistics for a port
+ // The request body is struct ofp_queue_stats_request.
+ // The reply body is an array of struct ofp_queue_stats
+ OfpMultipartType_OFPMP_QUEUE OfpMultipartType = 5
+ // Group counter statistics.
+ // The request body is struct ofp_group_stats_request.
+ // The reply is an array of struct ofp_group_stats.
+ OfpMultipartType_OFPMP_GROUP OfpMultipartType = 6
+ // Group description.
+ // The request body is empty.
+ // The reply body is an array of struct ofp_group_desc.
+ OfpMultipartType_OFPMP_GROUP_DESC OfpMultipartType = 7
+ // Group features.
+ // The request body is empty.
+ // The reply body is struct ofp_group_features.
+ OfpMultipartType_OFPMP_GROUP_FEATURES OfpMultipartType = 8
+ // Meter statistics.
+ // The request body is struct ofp_meter_multipart_requests.
+ // The reply body is an array of struct ofp_meter_stats.
+ OfpMultipartType_OFPMP_METER OfpMultipartType = 9
+ // Meter configuration.
+ // The request body is struct ofp_meter_multipart_requests.
+ // The reply body is an array of struct ofp_meter_config.
+ OfpMultipartType_OFPMP_METER_CONFIG OfpMultipartType = 10
+ // Meter features.
+ // The request body is empty.
+ // The reply body is struct ofp_meter_features.
+ OfpMultipartType_OFPMP_METER_FEATURES OfpMultipartType = 11
+ // Table features.
+ // The request body is either empty or contains an array of
+ // struct ofp_table_features containing the controller's
+ // desired view of the switch. If the switch is unable to
+ // set the specified view an error is returned.
+ // The reply body is an array of struct ofp_table_features.
+ OfpMultipartType_OFPMP_TABLE_FEATURES OfpMultipartType = 12
+ // Port description.
+ // The request body is empty.
+ // The reply body is an array of struct ofp_port.
+ OfpMultipartType_OFPMP_PORT_DESC OfpMultipartType = 13
+ // Experimenter extension.
+ // The request and reply bodies begin with
+ // struct ofp_experimenter_multipart_header.
+ // The request and reply bodies are otherwise experimenter-defined.
+ OfpMultipartType_OFPMP_EXPERIMENTER OfpMultipartType = 65535
+)
+
+var OfpMultipartType_name = map[int32]string{
+ 0: "OFPMP_DESC",
+ 1: "OFPMP_FLOW",
+ 2: "OFPMP_AGGREGATE",
+ 3: "OFPMP_TABLE",
+ 4: "OFPMP_PORT_STATS",
+ 5: "OFPMP_QUEUE",
+ 6: "OFPMP_GROUP",
+ 7: "OFPMP_GROUP_DESC",
+ 8: "OFPMP_GROUP_FEATURES",
+ 9: "OFPMP_METER",
+ 10: "OFPMP_METER_CONFIG",
+ 11: "OFPMP_METER_FEATURES",
+ 12: "OFPMP_TABLE_FEATURES",
+ 13: "OFPMP_PORT_DESC",
+ 65535: "OFPMP_EXPERIMENTER",
+}
+
+var OfpMultipartType_value = map[string]int32{
+ "OFPMP_DESC": 0,
+ "OFPMP_FLOW": 1,
+ "OFPMP_AGGREGATE": 2,
+ "OFPMP_TABLE": 3,
+ "OFPMP_PORT_STATS": 4,
+ "OFPMP_QUEUE": 5,
+ "OFPMP_GROUP": 6,
+ "OFPMP_GROUP_DESC": 7,
+ "OFPMP_GROUP_FEATURES": 8,
+ "OFPMP_METER": 9,
+ "OFPMP_METER_CONFIG": 10,
+ "OFPMP_METER_FEATURES": 11,
+ "OFPMP_TABLE_FEATURES": 12,
+ "OFPMP_PORT_DESC": 13,
+ "OFPMP_EXPERIMENTER": 65535,
+}
+
+func (x OfpMultipartType) String() string {
+ return proto.EnumName(OfpMultipartType_name, int32(x))
+}
+
+func (OfpMultipartType) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{45}
+}
+
+type OfpMultipartRequestFlags int32
+
+const (
+ OfpMultipartRequestFlags_OFPMPF_REQ_INVALID OfpMultipartRequestFlags = 0
+ OfpMultipartRequestFlags_OFPMPF_REQ_MORE OfpMultipartRequestFlags = 1
+)
+
+var OfpMultipartRequestFlags_name = map[int32]string{
+ 0: "OFPMPF_REQ_INVALID",
+ 1: "OFPMPF_REQ_MORE",
+}
+
+var OfpMultipartRequestFlags_value = map[string]int32{
+ "OFPMPF_REQ_INVALID": 0,
+ "OFPMPF_REQ_MORE": 1,
+}
+
+func (x OfpMultipartRequestFlags) String() string {
+ return proto.EnumName(OfpMultipartRequestFlags_name, int32(x))
+}
+
+func (OfpMultipartRequestFlags) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{46}
+}
+
+type OfpMultipartReplyFlags int32
+
+const (
+ OfpMultipartReplyFlags_OFPMPF_REPLY_INVALID OfpMultipartReplyFlags = 0
+ OfpMultipartReplyFlags_OFPMPF_REPLY_MORE OfpMultipartReplyFlags = 1
+)
+
+var OfpMultipartReplyFlags_name = map[int32]string{
+ 0: "OFPMPF_REPLY_INVALID",
+ 1: "OFPMPF_REPLY_MORE",
+}
+
+var OfpMultipartReplyFlags_value = map[string]int32{
+ "OFPMPF_REPLY_INVALID": 0,
+ "OFPMPF_REPLY_MORE": 1,
+}
+
+func (x OfpMultipartReplyFlags) String() string {
+ return proto.EnumName(OfpMultipartReplyFlags_name, int32(x))
+}
+
+func (OfpMultipartReplyFlags) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{47}
+}
+
+// Table Feature property types.
+// Low order bit cleared indicates a property for a regular Flow Entry.
+// Low order bit set indicates a property for the Table-Miss Flow Entry.
+type OfpTableFeaturePropType int32
+
+const (
+ OfpTableFeaturePropType_OFPTFPT_INSTRUCTIONS OfpTableFeaturePropType = 0
+ OfpTableFeaturePropType_OFPTFPT_INSTRUCTIONS_MISS OfpTableFeaturePropType = 1
+ OfpTableFeaturePropType_OFPTFPT_NEXT_TABLES OfpTableFeaturePropType = 2
+ OfpTableFeaturePropType_OFPTFPT_NEXT_TABLES_MISS OfpTableFeaturePropType = 3
+ OfpTableFeaturePropType_OFPTFPT_WRITE_ACTIONS OfpTableFeaturePropType = 4
+ OfpTableFeaturePropType_OFPTFPT_WRITE_ACTIONS_MISS OfpTableFeaturePropType = 5
+ OfpTableFeaturePropType_OFPTFPT_APPLY_ACTIONS OfpTableFeaturePropType = 6
+ OfpTableFeaturePropType_OFPTFPT_APPLY_ACTIONS_MISS OfpTableFeaturePropType = 7
+ OfpTableFeaturePropType_OFPTFPT_MATCH OfpTableFeaturePropType = 8
+ OfpTableFeaturePropType_OFPTFPT_WILDCARDS OfpTableFeaturePropType = 10
+ OfpTableFeaturePropType_OFPTFPT_WRITE_SETFIELD OfpTableFeaturePropType = 12
+ OfpTableFeaturePropType_OFPTFPT_WRITE_SETFIELD_MISS OfpTableFeaturePropType = 13
+ OfpTableFeaturePropType_OFPTFPT_APPLY_SETFIELD OfpTableFeaturePropType = 14
+ OfpTableFeaturePropType_OFPTFPT_APPLY_SETFIELD_MISS OfpTableFeaturePropType = 15
+ OfpTableFeaturePropType_OFPTFPT_EXPERIMENTER OfpTableFeaturePropType = 65534
+ OfpTableFeaturePropType_OFPTFPT_EXPERIMENTER_MISS OfpTableFeaturePropType = 65535
+)
+
+var OfpTableFeaturePropType_name = map[int32]string{
+ 0: "OFPTFPT_INSTRUCTIONS",
+ 1: "OFPTFPT_INSTRUCTIONS_MISS",
+ 2: "OFPTFPT_NEXT_TABLES",
+ 3: "OFPTFPT_NEXT_TABLES_MISS",
+ 4: "OFPTFPT_WRITE_ACTIONS",
+ 5: "OFPTFPT_WRITE_ACTIONS_MISS",
+ 6: "OFPTFPT_APPLY_ACTIONS",
+ 7: "OFPTFPT_APPLY_ACTIONS_MISS",
+ 8: "OFPTFPT_MATCH",
+ 10: "OFPTFPT_WILDCARDS",
+ 12: "OFPTFPT_WRITE_SETFIELD",
+ 13: "OFPTFPT_WRITE_SETFIELD_MISS",
+ 14: "OFPTFPT_APPLY_SETFIELD",
+ 15: "OFPTFPT_APPLY_SETFIELD_MISS",
+ 65534: "OFPTFPT_EXPERIMENTER",
+ 65535: "OFPTFPT_EXPERIMENTER_MISS",
+}
+
+var OfpTableFeaturePropType_value = map[string]int32{
+ "OFPTFPT_INSTRUCTIONS": 0,
+ "OFPTFPT_INSTRUCTIONS_MISS": 1,
+ "OFPTFPT_NEXT_TABLES": 2,
+ "OFPTFPT_NEXT_TABLES_MISS": 3,
+ "OFPTFPT_WRITE_ACTIONS": 4,
+ "OFPTFPT_WRITE_ACTIONS_MISS": 5,
+ "OFPTFPT_APPLY_ACTIONS": 6,
+ "OFPTFPT_APPLY_ACTIONS_MISS": 7,
+ "OFPTFPT_MATCH": 8,
+ "OFPTFPT_WILDCARDS": 10,
+ "OFPTFPT_WRITE_SETFIELD": 12,
+ "OFPTFPT_WRITE_SETFIELD_MISS": 13,
+ "OFPTFPT_APPLY_SETFIELD": 14,
+ "OFPTFPT_APPLY_SETFIELD_MISS": 15,
+ "OFPTFPT_EXPERIMENTER": 65534,
+ "OFPTFPT_EXPERIMENTER_MISS": 65535,
+}
+
+func (x OfpTableFeaturePropType) String() string {
+ return proto.EnumName(OfpTableFeaturePropType_name, int32(x))
+}
+
+func (OfpTableFeaturePropType) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{48}
+}
+
+// Group configuration flags
+type OfpGroupCapabilities int32
+
+const (
+ OfpGroupCapabilities_OFPGFC_INVALID OfpGroupCapabilities = 0
+ OfpGroupCapabilities_OFPGFC_SELECT_WEIGHT OfpGroupCapabilities = 1
+ OfpGroupCapabilities_OFPGFC_SELECT_LIVENESS OfpGroupCapabilities = 2
+ OfpGroupCapabilities_OFPGFC_CHAINING OfpGroupCapabilities = 4
+ OfpGroupCapabilities_OFPGFC_CHAINING_CHECKS OfpGroupCapabilities = 8
+)
+
+var OfpGroupCapabilities_name = map[int32]string{
+ 0: "OFPGFC_INVALID",
+ 1: "OFPGFC_SELECT_WEIGHT",
+ 2: "OFPGFC_SELECT_LIVENESS",
+ 4: "OFPGFC_CHAINING",
+ 8: "OFPGFC_CHAINING_CHECKS",
+}
+
+var OfpGroupCapabilities_value = map[string]int32{
+ "OFPGFC_INVALID": 0,
+ "OFPGFC_SELECT_WEIGHT": 1,
+ "OFPGFC_SELECT_LIVENESS": 2,
+ "OFPGFC_CHAINING": 4,
+ "OFPGFC_CHAINING_CHECKS": 8,
+}
+
+func (x OfpGroupCapabilities) String() string {
+ return proto.EnumName(OfpGroupCapabilities_name, int32(x))
+}
+
+func (OfpGroupCapabilities) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{49}
+}
+
+type OfpQueueProperties int32
+
+const (
+ OfpQueueProperties_OFPQT_INVALID OfpQueueProperties = 0
+ OfpQueueProperties_OFPQT_MIN_RATE OfpQueueProperties = 1
+ OfpQueueProperties_OFPQT_MAX_RATE OfpQueueProperties = 2
+ OfpQueueProperties_OFPQT_EXPERIMENTER OfpQueueProperties = 65535
+)
+
+var OfpQueueProperties_name = map[int32]string{
+ 0: "OFPQT_INVALID",
+ 1: "OFPQT_MIN_RATE",
+ 2: "OFPQT_MAX_RATE",
+ 65535: "OFPQT_EXPERIMENTER",
+}
+
+var OfpQueueProperties_value = map[string]int32{
+ "OFPQT_INVALID": 0,
+ "OFPQT_MIN_RATE": 1,
+ "OFPQT_MAX_RATE": 2,
+ "OFPQT_EXPERIMENTER": 65535,
+}
+
+func (x OfpQueueProperties) String() string {
+ return proto.EnumName(OfpQueueProperties_name, int32(x))
+}
+
+func (OfpQueueProperties) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{50}
+}
+
+// Controller roles.
+type OfpControllerRole int32
+
+const (
+ OfpControllerRole_OFPCR_ROLE_NOCHANGE OfpControllerRole = 0
+ OfpControllerRole_OFPCR_ROLE_EQUAL OfpControllerRole = 1
+ OfpControllerRole_OFPCR_ROLE_MASTER OfpControllerRole = 2
+ OfpControllerRole_OFPCR_ROLE_SLAVE OfpControllerRole = 3
+)
+
+var OfpControllerRole_name = map[int32]string{
+ 0: "OFPCR_ROLE_NOCHANGE",
+ 1: "OFPCR_ROLE_EQUAL",
+ 2: "OFPCR_ROLE_MASTER",
+ 3: "OFPCR_ROLE_SLAVE",
+}
+
+var OfpControllerRole_value = map[string]int32{
+ "OFPCR_ROLE_NOCHANGE": 0,
+ "OFPCR_ROLE_EQUAL": 1,
+ "OFPCR_ROLE_MASTER": 2,
+ "OFPCR_ROLE_SLAVE": 3,
+}
+
+func (x OfpControllerRole) String() string {
+ return proto.EnumName(OfpControllerRole_name, int32(x))
+}
+
+func (OfpControllerRole) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{51}
+}
+
+// Header on all OpenFlow packets.
+type OfpHeader struct {
+ Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`
+ Type OfpType `protobuf:"varint,2,opt,name=type,proto3,enum=openflow_13.OfpType" json:"type,omitempty"`
+ Xid uint32 `protobuf:"varint,3,opt,name=xid,proto3" json:"xid,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpHeader) Reset() { *m = OfpHeader{} }
+func (m *OfpHeader) String() string { return proto.CompactTextString(m) }
+func (*OfpHeader) ProtoMessage() {}
+func (*OfpHeader) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{0}
+}
+
+func (m *OfpHeader) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpHeader.Unmarshal(m, b)
+}
+func (m *OfpHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpHeader.Marshal(b, m, deterministic)
+}
+func (m *OfpHeader) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpHeader.Merge(m, src)
+}
+func (m *OfpHeader) XXX_Size() int {
+ return xxx_messageInfo_OfpHeader.Size(m)
+}
+func (m *OfpHeader) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpHeader.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpHeader proto.InternalMessageInfo
+
+func (m *OfpHeader) GetVersion() uint32 {
+ if m != nil {
+ return m.Version
+ }
+ return 0
+}
+
+func (m *OfpHeader) GetType() OfpType {
+ if m != nil {
+ return m.Type
+ }
+ return OfpType_OFPT_HELLO
+}
+
+func (m *OfpHeader) GetXid() uint32 {
+ if m != nil {
+ return m.Xid
+ }
+ return 0
+}
+
+// Common header for all Hello Elements
+type OfpHelloElemHeader struct {
+ Type OfpHelloElemType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpHelloElemType" json:"type,omitempty"`
+ // Types that are valid to be assigned to Element:
+ // *OfpHelloElemHeader_Versionbitmap
+ Element isOfpHelloElemHeader_Element `protobuf_oneof:"element"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpHelloElemHeader) Reset() { *m = OfpHelloElemHeader{} }
+func (m *OfpHelloElemHeader) String() string { return proto.CompactTextString(m) }
+func (*OfpHelloElemHeader) ProtoMessage() {}
+func (*OfpHelloElemHeader) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{1}
+}
+
+func (m *OfpHelloElemHeader) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpHelloElemHeader.Unmarshal(m, b)
+}
+func (m *OfpHelloElemHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpHelloElemHeader.Marshal(b, m, deterministic)
+}
+func (m *OfpHelloElemHeader) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpHelloElemHeader.Merge(m, src)
+}
+func (m *OfpHelloElemHeader) XXX_Size() int {
+ return xxx_messageInfo_OfpHelloElemHeader.Size(m)
+}
+func (m *OfpHelloElemHeader) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpHelloElemHeader.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpHelloElemHeader proto.InternalMessageInfo
+
+func (m *OfpHelloElemHeader) GetType() OfpHelloElemType {
+ if m != nil {
+ return m.Type
+ }
+ return OfpHelloElemType_OFPHET_INVALID
+}
+
+type isOfpHelloElemHeader_Element interface {
+ isOfpHelloElemHeader_Element()
+}
+
+type OfpHelloElemHeader_Versionbitmap struct {
+ Versionbitmap *OfpHelloElemVersionbitmap `protobuf:"bytes,2,opt,name=versionbitmap,proto3,oneof"`
+}
+
+func (*OfpHelloElemHeader_Versionbitmap) isOfpHelloElemHeader_Element() {}
+
+func (m *OfpHelloElemHeader) GetElement() isOfpHelloElemHeader_Element {
+ if m != nil {
+ return m.Element
+ }
+ return nil
+}
+
+func (m *OfpHelloElemHeader) GetVersionbitmap() *OfpHelloElemVersionbitmap {
+ if x, ok := m.GetElement().(*OfpHelloElemHeader_Versionbitmap); ok {
+ return x.Versionbitmap
+ }
+ return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*OfpHelloElemHeader) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*OfpHelloElemHeader_Versionbitmap)(nil),
+ }
+}
+
+// Version bitmap Hello Element
+type OfpHelloElemVersionbitmap struct {
+ Bitmaps []uint32 `protobuf:"varint,2,rep,packed,name=bitmaps,proto3" json:"bitmaps,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpHelloElemVersionbitmap) Reset() { *m = OfpHelloElemVersionbitmap{} }
+func (m *OfpHelloElemVersionbitmap) String() string { return proto.CompactTextString(m) }
+func (*OfpHelloElemVersionbitmap) ProtoMessage() {}
+func (*OfpHelloElemVersionbitmap) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{2}
+}
+
+func (m *OfpHelloElemVersionbitmap) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpHelloElemVersionbitmap.Unmarshal(m, b)
+}
+func (m *OfpHelloElemVersionbitmap) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpHelloElemVersionbitmap.Marshal(b, m, deterministic)
+}
+func (m *OfpHelloElemVersionbitmap) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpHelloElemVersionbitmap.Merge(m, src)
+}
+func (m *OfpHelloElemVersionbitmap) XXX_Size() int {
+ return xxx_messageInfo_OfpHelloElemVersionbitmap.Size(m)
+}
+func (m *OfpHelloElemVersionbitmap) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpHelloElemVersionbitmap.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpHelloElemVersionbitmap proto.InternalMessageInfo
+
+func (m *OfpHelloElemVersionbitmap) GetBitmaps() []uint32 {
+ if m != nil {
+ return m.Bitmaps
+ }
+ return nil
+}
+
+// OFPT_HELLO. This message includes zero or more hello elements having
+// variable size. Unknown elements types must be ignored/skipped, to allow
+// for future extensions.
+type OfpHello struct {
+ // Hello element list
+ Elements []*OfpHelloElemHeader `protobuf:"bytes,1,rep,name=elements,proto3" json:"elements,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpHello) Reset() { *m = OfpHello{} }
+func (m *OfpHello) String() string { return proto.CompactTextString(m) }
+func (*OfpHello) ProtoMessage() {}
+func (*OfpHello) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{3}
+}
+
+func (m *OfpHello) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpHello.Unmarshal(m, b)
+}
+func (m *OfpHello) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpHello.Marshal(b, m, deterministic)
+}
+func (m *OfpHello) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpHello.Merge(m, src)
+}
+func (m *OfpHello) XXX_Size() int {
+ return xxx_messageInfo_OfpHello.Size(m)
+}
+func (m *OfpHello) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpHello.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpHello proto.InternalMessageInfo
+
+func (m *OfpHello) GetElements() []*OfpHelloElemHeader {
+ if m != nil {
+ return m.Elements
+ }
+ return nil
+}
+
+// Switch configuration.
+type OfpSwitchConfig struct {
+ //ofp_header header;
+ Flags uint32 `protobuf:"varint,1,opt,name=flags,proto3" json:"flags,omitempty"`
+ MissSendLen uint32 `protobuf:"varint,2,opt,name=miss_send_len,json=missSendLen,proto3" json:"miss_send_len,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpSwitchConfig) Reset() { *m = OfpSwitchConfig{} }
+func (m *OfpSwitchConfig) String() string { return proto.CompactTextString(m) }
+func (*OfpSwitchConfig) ProtoMessage() {}
+func (*OfpSwitchConfig) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{4}
+}
+
+func (m *OfpSwitchConfig) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpSwitchConfig.Unmarshal(m, b)
+}
+func (m *OfpSwitchConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpSwitchConfig.Marshal(b, m, deterministic)
+}
+func (m *OfpSwitchConfig) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpSwitchConfig.Merge(m, src)
+}
+func (m *OfpSwitchConfig) XXX_Size() int {
+ return xxx_messageInfo_OfpSwitchConfig.Size(m)
+}
+func (m *OfpSwitchConfig) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpSwitchConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpSwitchConfig proto.InternalMessageInfo
+
+func (m *OfpSwitchConfig) GetFlags() uint32 {
+ if m != nil {
+ return m.Flags
+ }
+ return 0
+}
+
+func (m *OfpSwitchConfig) GetMissSendLen() uint32 {
+ if m != nil {
+ return m.MissSendLen
+ }
+ return 0
+}
+
+// Configure/Modify behavior of a flow table
+type OfpTableMod struct {
+ //ofp_header header;
+ TableId uint32 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
+ Config uint32 `protobuf:"varint,2,opt,name=config,proto3" json:"config,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpTableMod) Reset() { *m = OfpTableMod{} }
+func (m *OfpTableMod) String() string { return proto.CompactTextString(m) }
+func (*OfpTableMod) ProtoMessage() {}
+func (*OfpTableMod) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{5}
+}
+
+func (m *OfpTableMod) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpTableMod.Unmarshal(m, b)
+}
+func (m *OfpTableMod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpTableMod.Marshal(b, m, deterministic)
+}
+func (m *OfpTableMod) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpTableMod.Merge(m, src)
+}
+func (m *OfpTableMod) XXX_Size() int {
+ return xxx_messageInfo_OfpTableMod.Size(m)
+}
+func (m *OfpTableMod) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpTableMod.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpTableMod proto.InternalMessageInfo
+
+func (m *OfpTableMod) GetTableId() uint32 {
+ if m != nil {
+ return m.TableId
+ }
+ return 0
+}
+
+func (m *OfpTableMod) GetConfig() uint32 {
+ if m != nil {
+ return m.Config
+ }
+ return 0
+}
+
+// Description of a port
+type OfpPort struct {
+ PortNo uint32 `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+ HwAddr []uint32 `protobuf:"varint,2,rep,packed,name=hw_addr,json=hwAddr,proto3" json:"hw_addr,omitempty"`
+ Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+ Config uint32 `protobuf:"varint,4,opt,name=config,proto3" json:"config,omitempty"`
+ State uint32 `protobuf:"varint,5,opt,name=state,proto3" json:"state,omitempty"`
+ // Bitmaps of OFPPF_* that describe features. All bits zeroed if
+ // unsupported or unavailable.
+ Curr uint32 `protobuf:"varint,6,opt,name=curr,proto3" json:"curr,omitempty"`
+ Advertised uint32 `protobuf:"varint,7,opt,name=advertised,proto3" json:"advertised,omitempty"`
+ Supported uint32 `protobuf:"varint,8,opt,name=supported,proto3" json:"supported,omitempty"`
+ Peer uint32 `protobuf:"varint,9,opt,name=peer,proto3" json:"peer,omitempty"`
+ CurrSpeed uint32 `protobuf:"varint,10,opt,name=curr_speed,json=currSpeed,proto3" json:"curr_speed,omitempty"`
+ MaxSpeed uint32 `protobuf:"varint,11,opt,name=max_speed,json=maxSpeed,proto3" json:"max_speed,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpPort) Reset() { *m = OfpPort{} }
+func (m *OfpPort) String() string { return proto.CompactTextString(m) }
+func (*OfpPort) ProtoMessage() {}
+func (*OfpPort) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{6}
+}
+
+func (m *OfpPort) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpPort.Unmarshal(m, b)
+}
+func (m *OfpPort) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpPort.Marshal(b, m, deterministic)
+}
+func (m *OfpPort) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpPort.Merge(m, src)
+}
+func (m *OfpPort) XXX_Size() int {
+ return xxx_messageInfo_OfpPort.Size(m)
+}
+func (m *OfpPort) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpPort.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpPort proto.InternalMessageInfo
+
+func (m *OfpPort) GetPortNo() uint32 {
+ if m != nil {
+ return m.PortNo
+ }
+ return 0
+}
+
+func (m *OfpPort) GetHwAddr() []uint32 {
+ if m != nil {
+ return m.HwAddr
+ }
+ return nil
+}
+
+func (m *OfpPort) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *OfpPort) GetConfig() uint32 {
+ if m != nil {
+ return m.Config
+ }
+ return 0
+}
+
+func (m *OfpPort) GetState() uint32 {
+ if m != nil {
+ return m.State
+ }
+ return 0
+}
+
+func (m *OfpPort) GetCurr() uint32 {
+ if m != nil {
+ return m.Curr
+ }
+ return 0
+}
+
+func (m *OfpPort) GetAdvertised() uint32 {
+ if m != nil {
+ return m.Advertised
+ }
+ return 0
+}
+
+func (m *OfpPort) GetSupported() uint32 {
+ if m != nil {
+ return m.Supported
+ }
+ return 0
+}
+
+func (m *OfpPort) GetPeer() uint32 {
+ if m != nil {
+ return m.Peer
+ }
+ return 0
+}
+
+func (m *OfpPort) GetCurrSpeed() uint32 {
+ if m != nil {
+ return m.CurrSpeed
+ }
+ return 0
+}
+
+func (m *OfpPort) GetMaxSpeed() uint32 {
+ if m != nil {
+ return m.MaxSpeed
+ }
+ return 0
+}
+
+// Switch features.
+type OfpSwitchFeatures struct {
+ //ofp_header header;
+ DatapathId uint64 `protobuf:"varint,1,opt,name=datapath_id,json=datapathId,proto3" json:"datapath_id,omitempty"`
+ NBuffers uint32 `protobuf:"varint,2,opt,name=n_buffers,json=nBuffers,proto3" json:"n_buffers,omitempty"`
+ NTables uint32 `protobuf:"varint,3,opt,name=n_tables,json=nTables,proto3" json:"n_tables,omitempty"`
+ AuxiliaryId uint32 `protobuf:"varint,4,opt,name=auxiliary_id,json=auxiliaryId,proto3" json:"auxiliary_id,omitempty"`
+ // Features.
+ Capabilities uint32 `protobuf:"varint,5,opt,name=capabilities,proto3" json:"capabilities,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpSwitchFeatures) Reset() { *m = OfpSwitchFeatures{} }
+func (m *OfpSwitchFeatures) String() string { return proto.CompactTextString(m) }
+func (*OfpSwitchFeatures) ProtoMessage() {}
+func (*OfpSwitchFeatures) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{7}
+}
+
+func (m *OfpSwitchFeatures) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpSwitchFeatures.Unmarshal(m, b)
+}
+func (m *OfpSwitchFeatures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpSwitchFeatures.Marshal(b, m, deterministic)
+}
+func (m *OfpSwitchFeatures) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpSwitchFeatures.Merge(m, src)
+}
+func (m *OfpSwitchFeatures) XXX_Size() int {
+ return xxx_messageInfo_OfpSwitchFeatures.Size(m)
+}
+func (m *OfpSwitchFeatures) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpSwitchFeatures.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpSwitchFeatures proto.InternalMessageInfo
+
+func (m *OfpSwitchFeatures) GetDatapathId() uint64 {
+ if m != nil {
+ return m.DatapathId
+ }
+ return 0
+}
+
+func (m *OfpSwitchFeatures) GetNBuffers() uint32 {
+ if m != nil {
+ return m.NBuffers
+ }
+ return 0
+}
+
+func (m *OfpSwitchFeatures) GetNTables() uint32 {
+ if m != nil {
+ return m.NTables
+ }
+ return 0
+}
+
+func (m *OfpSwitchFeatures) GetAuxiliaryId() uint32 {
+ if m != nil {
+ return m.AuxiliaryId
+ }
+ return 0
+}
+
+func (m *OfpSwitchFeatures) GetCapabilities() uint32 {
+ if m != nil {
+ return m.Capabilities
+ }
+ return 0
+}
+
+// A physical port has changed in the datapath
+type OfpPortStatus struct {
+ //ofp_header header;
+ Reason OfpPortReason `protobuf:"varint,1,opt,name=reason,proto3,enum=openflow_13.OfpPortReason" json:"reason,omitempty"`
+ Desc *OfpPort `protobuf:"bytes,2,opt,name=desc,proto3" json:"desc,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpPortStatus) Reset() { *m = OfpPortStatus{} }
+func (m *OfpPortStatus) String() string { return proto.CompactTextString(m) }
+func (*OfpPortStatus) ProtoMessage() {}
+func (*OfpPortStatus) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{8}
+}
+
+func (m *OfpPortStatus) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpPortStatus.Unmarshal(m, b)
+}
+func (m *OfpPortStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpPortStatus.Marshal(b, m, deterministic)
+}
+func (m *OfpPortStatus) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpPortStatus.Merge(m, src)
+}
+func (m *OfpPortStatus) XXX_Size() int {
+ return xxx_messageInfo_OfpPortStatus.Size(m)
+}
+func (m *OfpPortStatus) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpPortStatus.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpPortStatus proto.InternalMessageInfo
+
+func (m *OfpPortStatus) GetReason() OfpPortReason {
+ if m != nil {
+ return m.Reason
+ }
+ return OfpPortReason_OFPPR_ADD
+}
+
+func (m *OfpPortStatus) GetDesc() *OfpPort {
+ if m != nil {
+ return m.Desc
+ }
+ return nil
+}
+
+// Modify behavior of the physical port
+type OfpPortMod struct {
+ //ofp_header header;
+ PortNo uint32 `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+ HwAddr []uint32 `protobuf:"varint,2,rep,packed,name=hw_addr,json=hwAddr,proto3" json:"hw_addr,omitempty"`
+ // The hardware address is not
+ //configurable. This is used to
+ //sanity-check the request, so it must
+ //be the same as returned in an
+ //ofp_port struct.
+ Config uint32 `protobuf:"varint,3,opt,name=config,proto3" json:"config,omitempty"`
+ Mask uint32 `protobuf:"varint,4,opt,name=mask,proto3" json:"mask,omitempty"`
+ Advertise uint32 `protobuf:"varint,5,opt,name=advertise,proto3" json:"advertise,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpPortMod) Reset() { *m = OfpPortMod{} }
+func (m *OfpPortMod) String() string { return proto.CompactTextString(m) }
+func (*OfpPortMod) ProtoMessage() {}
+func (*OfpPortMod) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{9}
+}
+
+func (m *OfpPortMod) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpPortMod.Unmarshal(m, b)
+}
+func (m *OfpPortMod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpPortMod.Marshal(b, m, deterministic)
+}
+func (m *OfpPortMod) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpPortMod.Merge(m, src)
+}
+func (m *OfpPortMod) XXX_Size() int {
+ return xxx_messageInfo_OfpPortMod.Size(m)
+}
+func (m *OfpPortMod) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpPortMod.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpPortMod proto.InternalMessageInfo
+
+func (m *OfpPortMod) GetPortNo() uint32 {
+ if m != nil {
+ return m.PortNo
+ }
+ return 0
+}
+
+func (m *OfpPortMod) GetHwAddr() []uint32 {
+ if m != nil {
+ return m.HwAddr
+ }
+ return nil
+}
+
+func (m *OfpPortMod) GetConfig() uint32 {
+ if m != nil {
+ return m.Config
+ }
+ return 0
+}
+
+func (m *OfpPortMod) GetMask() uint32 {
+ if m != nil {
+ return m.Mask
+ }
+ return 0
+}
+
+func (m *OfpPortMod) GetAdvertise() uint32 {
+ if m != nil {
+ return m.Advertise
+ }
+ return 0
+}
+
+// Fields to match against flows
+type OfpMatch struct {
+ Type OfpMatchType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpMatchType" json:"type,omitempty"`
+ OxmFields []*OfpOxmField `protobuf:"bytes,2,rep,name=oxm_fields,json=oxmFields,proto3" json:"oxm_fields,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpMatch) Reset() { *m = OfpMatch{} }
+func (m *OfpMatch) String() string { return proto.CompactTextString(m) }
+func (*OfpMatch) ProtoMessage() {}
+func (*OfpMatch) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{10}
+}
+
+func (m *OfpMatch) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpMatch.Unmarshal(m, b)
+}
+func (m *OfpMatch) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpMatch.Marshal(b, m, deterministic)
+}
+func (m *OfpMatch) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpMatch.Merge(m, src)
+}
+func (m *OfpMatch) XXX_Size() int {
+ return xxx_messageInfo_OfpMatch.Size(m)
+}
+func (m *OfpMatch) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpMatch.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpMatch proto.InternalMessageInfo
+
+func (m *OfpMatch) GetType() OfpMatchType {
+ if m != nil {
+ return m.Type
+ }
+ return OfpMatchType_OFPMT_STANDARD
+}
+
+func (m *OfpMatch) GetOxmFields() []*OfpOxmField {
+ if m != nil {
+ return m.OxmFields
+ }
+ return nil
+}
+
+// OXM Flow match fields
+type OfpOxmField struct {
+ OxmClass OfpOxmClass `protobuf:"varint,1,opt,name=oxm_class,json=oxmClass,proto3,enum=openflow_13.OfpOxmClass" json:"oxm_class,omitempty"`
+ // Types that are valid to be assigned to Field:
+ // *OfpOxmField_OfbField
+ // *OfpOxmField_ExperimenterField
+ Field isOfpOxmField_Field `protobuf_oneof:"field"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpOxmField) Reset() { *m = OfpOxmField{} }
+func (m *OfpOxmField) String() string { return proto.CompactTextString(m) }
+func (*OfpOxmField) ProtoMessage() {}
+func (*OfpOxmField) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{11}
+}
+
+func (m *OfpOxmField) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpOxmField.Unmarshal(m, b)
+}
+func (m *OfpOxmField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpOxmField.Marshal(b, m, deterministic)
+}
+func (m *OfpOxmField) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpOxmField.Merge(m, src)
+}
+func (m *OfpOxmField) XXX_Size() int {
+ return xxx_messageInfo_OfpOxmField.Size(m)
+}
+func (m *OfpOxmField) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpOxmField.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpOxmField proto.InternalMessageInfo
+
+func (m *OfpOxmField) GetOxmClass() OfpOxmClass {
+ if m != nil {
+ return m.OxmClass
+ }
+ return OfpOxmClass_OFPXMC_NXM_0
+}
+
+type isOfpOxmField_Field interface {
+ isOfpOxmField_Field()
+}
+
+type OfpOxmField_OfbField struct {
+ OfbField *OfpOxmOfbField `protobuf:"bytes,4,opt,name=ofb_field,json=ofbField,proto3,oneof"`
+}
+
+type OfpOxmField_ExperimenterField struct {
+ ExperimenterField *OfpOxmExperimenterField `protobuf:"bytes,5,opt,name=experimenter_field,json=experimenterField,proto3,oneof"`
+}
+
+func (*OfpOxmField_OfbField) isOfpOxmField_Field() {}
+
+func (*OfpOxmField_ExperimenterField) isOfpOxmField_Field() {}
+
+func (m *OfpOxmField) GetField() isOfpOxmField_Field {
+ if m != nil {
+ return m.Field
+ }
+ return nil
+}
+
+func (m *OfpOxmField) GetOfbField() *OfpOxmOfbField {
+ if x, ok := m.GetField().(*OfpOxmField_OfbField); ok {
+ return x.OfbField
+ }
+ return nil
+}
+
+func (m *OfpOxmField) GetExperimenterField() *OfpOxmExperimenterField {
+ if x, ok := m.GetField().(*OfpOxmField_ExperimenterField); ok {
+ return x.ExperimenterField
+ }
+ return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*OfpOxmField) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*OfpOxmField_OfbField)(nil),
+ (*OfpOxmField_ExperimenterField)(nil),
+ }
+}
+
+// OXM OpenFlow Basic Match Field
+type OfpOxmOfbField struct {
+ Type OxmOfbFieldTypes `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OxmOfbFieldTypes" json:"type,omitempty"`
+ HasMask bool `protobuf:"varint,2,opt,name=has_mask,json=hasMask,proto3" json:"has_mask,omitempty"`
+ // Types that are valid to be assigned to Value:
+ // *OfpOxmOfbField_Port
+ // *OfpOxmOfbField_PhysicalPort
+ // *OfpOxmOfbField_TableMetadata
+ // *OfpOxmOfbField_EthDst
+ // *OfpOxmOfbField_EthSrc
+ // *OfpOxmOfbField_EthType
+ // *OfpOxmOfbField_VlanVid
+ // *OfpOxmOfbField_VlanPcp
+ // *OfpOxmOfbField_IpDscp
+ // *OfpOxmOfbField_IpEcn
+ // *OfpOxmOfbField_IpProto
+ // *OfpOxmOfbField_Ipv4Src
+ // *OfpOxmOfbField_Ipv4Dst
+ // *OfpOxmOfbField_TcpSrc
+ // *OfpOxmOfbField_TcpDst
+ // *OfpOxmOfbField_UdpSrc
+ // *OfpOxmOfbField_UdpDst
+ // *OfpOxmOfbField_SctpSrc
+ // *OfpOxmOfbField_SctpDst
+ // *OfpOxmOfbField_Icmpv4Type
+ // *OfpOxmOfbField_Icmpv4Code
+ // *OfpOxmOfbField_ArpOp
+ // *OfpOxmOfbField_ArpSpa
+ // *OfpOxmOfbField_ArpTpa
+ // *OfpOxmOfbField_ArpSha
+ // *OfpOxmOfbField_ArpTha
+ // *OfpOxmOfbField_Ipv6Src
+ // *OfpOxmOfbField_Ipv6Dst
+ // *OfpOxmOfbField_Ipv6Flabel
+ // *OfpOxmOfbField_Icmpv6Type
+ // *OfpOxmOfbField_Icmpv6Code
+ // *OfpOxmOfbField_Ipv6NdTarget
+ // *OfpOxmOfbField_Ipv6NdSsl
+ // *OfpOxmOfbField_Ipv6NdTll
+ // *OfpOxmOfbField_MplsLabel
+ // *OfpOxmOfbField_MplsTc
+ // *OfpOxmOfbField_MplsBos
+ // *OfpOxmOfbField_PbbIsid
+ // *OfpOxmOfbField_TunnelId
+ // *OfpOxmOfbField_Ipv6Exthdr
+ Value isOfpOxmOfbField_Value `protobuf_oneof:"value"`
+ // Optional mask values (must be present when has_mask is true
+ //
+ // Types that are valid to be assigned to Mask:
+ // *OfpOxmOfbField_TableMetadataMask
+ // *OfpOxmOfbField_EthDstMask
+ // *OfpOxmOfbField_EthSrcMask
+ // *OfpOxmOfbField_VlanVidMask
+ // *OfpOxmOfbField_Ipv4SrcMask
+ // *OfpOxmOfbField_Ipv4DstMask
+ // *OfpOxmOfbField_ArpSpaMask
+ // *OfpOxmOfbField_ArpTpaMask
+ // *OfpOxmOfbField_Ipv6SrcMask
+ // *OfpOxmOfbField_Ipv6DstMask
+ // *OfpOxmOfbField_Ipv6FlabelMask
+ // *OfpOxmOfbField_PbbIsidMask
+ // *OfpOxmOfbField_TunnelIdMask
+ // *OfpOxmOfbField_Ipv6ExthdrMask
+ Mask isOfpOxmOfbField_Mask `protobuf_oneof:"mask"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpOxmOfbField) Reset() { *m = OfpOxmOfbField{} }
+func (m *OfpOxmOfbField) String() string { return proto.CompactTextString(m) }
+func (*OfpOxmOfbField) ProtoMessage() {}
+func (*OfpOxmOfbField) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{12}
+}
+
+func (m *OfpOxmOfbField) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpOxmOfbField.Unmarshal(m, b)
+}
+func (m *OfpOxmOfbField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpOxmOfbField.Marshal(b, m, deterministic)
+}
+func (m *OfpOxmOfbField) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpOxmOfbField.Merge(m, src)
+}
+func (m *OfpOxmOfbField) XXX_Size() int {
+ return xxx_messageInfo_OfpOxmOfbField.Size(m)
+}
+func (m *OfpOxmOfbField) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpOxmOfbField.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpOxmOfbField proto.InternalMessageInfo
+
+func (m *OfpOxmOfbField) GetType() OxmOfbFieldTypes {
+ if m != nil {
+ return m.Type
+ }
+ return OxmOfbFieldTypes_OFPXMT_OFB_IN_PORT
+}
+
+func (m *OfpOxmOfbField) GetHasMask() bool {
+ if m != nil {
+ return m.HasMask
+ }
+ return false
+}
+
+type isOfpOxmOfbField_Value interface {
+ isOfpOxmOfbField_Value()
+}
+
+type OfpOxmOfbField_Port struct {
+ Port uint32 `protobuf:"varint,3,opt,name=port,proto3,oneof"`
+}
+
+type OfpOxmOfbField_PhysicalPort struct {
+ PhysicalPort uint32 `protobuf:"varint,4,opt,name=physical_port,json=physicalPort,proto3,oneof"`
+}
+
+type OfpOxmOfbField_TableMetadata struct {
+ TableMetadata uint64 `protobuf:"varint,5,opt,name=table_metadata,json=tableMetadata,proto3,oneof"`
+}
+
+type OfpOxmOfbField_EthDst struct {
+ EthDst []byte `protobuf:"bytes,6,opt,name=eth_dst,json=ethDst,proto3,oneof"`
+}
+
+type OfpOxmOfbField_EthSrc struct {
+ EthSrc []byte `protobuf:"bytes,7,opt,name=eth_src,json=ethSrc,proto3,oneof"`
+}
+
+type OfpOxmOfbField_EthType struct {
+ EthType uint32 `protobuf:"varint,8,opt,name=eth_type,json=ethType,proto3,oneof"`
+}
+
+type OfpOxmOfbField_VlanVid struct {
+ VlanVid uint32 `protobuf:"varint,9,opt,name=vlan_vid,json=vlanVid,proto3,oneof"`
+}
+
+type OfpOxmOfbField_VlanPcp struct {
+ VlanPcp uint32 `protobuf:"varint,10,opt,name=vlan_pcp,json=vlanPcp,proto3,oneof"`
+}
+
+type OfpOxmOfbField_IpDscp struct {
+ IpDscp uint32 `protobuf:"varint,11,opt,name=ip_dscp,json=ipDscp,proto3,oneof"`
+}
+
+type OfpOxmOfbField_IpEcn struct {
+ IpEcn uint32 `protobuf:"varint,12,opt,name=ip_ecn,json=ipEcn,proto3,oneof"`
+}
+
+type OfpOxmOfbField_IpProto struct {
+ IpProto uint32 `protobuf:"varint,13,opt,name=ip_proto,json=ipProto,proto3,oneof"`
+}
+
+type OfpOxmOfbField_Ipv4Src struct {
+ Ipv4Src uint32 `protobuf:"varint,14,opt,name=ipv4_src,json=ipv4Src,proto3,oneof"`
+}
+
+type OfpOxmOfbField_Ipv4Dst struct {
+ Ipv4Dst uint32 `protobuf:"varint,15,opt,name=ipv4_dst,json=ipv4Dst,proto3,oneof"`
+}
+
+type OfpOxmOfbField_TcpSrc struct {
+ TcpSrc uint32 `protobuf:"varint,16,opt,name=tcp_src,json=tcpSrc,proto3,oneof"`
+}
+
+type OfpOxmOfbField_TcpDst struct {
+ TcpDst uint32 `protobuf:"varint,17,opt,name=tcp_dst,json=tcpDst,proto3,oneof"`
+}
+
+type OfpOxmOfbField_UdpSrc struct {
+ UdpSrc uint32 `protobuf:"varint,18,opt,name=udp_src,json=udpSrc,proto3,oneof"`
+}
+
+type OfpOxmOfbField_UdpDst struct {
+ UdpDst uint32 `protobuf:"varint,19,opt,name=udp_dst,json=udpDst,proto3,oneof"`
+}
+
+type OfpOxmOfbField_SctpSrc struct {
+ SctpSrc uint32 `protobuf:"varint,20,opt,name=sctp_src,json=sctpSrc,proto3,oneof"`
+}
+
+type OfpOxmOfbField_SctpDst struct {
+ SctpDst uint32 `protobuf:"varint,21,opt,name=sctp_dst,json=sctpDst,proto3,oneof"`
+}
+
+type OfpOxmOfbField_Icmpv4Type struct {
+ Icmpv4Type uint32 `protobuf:"varint,22,opt,name=icmpv4_type,json=icmpv4Type,proto3,oneof"`
+}
+
+type OfpOxmOfbField_Icmpv4Code struct {
+ Icmpv4Code uint32 `protobuf:"varint,23,opt,name=icmpv4_code,json=icmpv4Code,proto3,oneof"`
+}
+
+type OfpOxmOfbField_ArpOp struct {
+ ArpOp uint32 `protobuf:"varint,24,opt,name=arp_op,json=arpOp,proto3,oneof"`
+}
+
+type OfpOxmOfbField_ArpSpa struct {
+ ArpSpa uint32 `protobuf:"varint,25,opt,name=arp_spa,json=arpSpa,proto3,oneof"`
+}
+
+type OfpOxmOfbField_ArpTpa struct {
+ ArpTpa uint32 `protobuf:"varint,26,opt,name=arp_tpa,json=arpTpa,proto3,oneof"`
+}
+
+type OfpOxmOfbField_ArpSha struct {
+ ArpSha []byte `protobuf:"bytes,27,opt,name=arp_sha,json=arpSha,proto3,oneof"`
+}
+
+type OfpOxmOfbField_ArpTha struct {
+ ArpTha []byte `protobuf:"bytes,28,opt,name=arp_tha,json=arpTha,proto3,oneof"`
+}
+
+type OfpOxmOfbField_Ipv6Src struct {
+ Ipv6Src []byte `protobuf:"bytes,29,opt,name=ipv6_src,json=ipv6Src,proto3,oneof"`
+}
+
+type OfpOxmOfbField_Ipv6Dst struct {
+ Ipv6Dst []byte `protobuf:"bytes,30,opt,name=ipv6_dst,json=ipv6Dst,proto3,oneof"`
+}
+
+type OfpOxmOfbField_Ipv6Flabel struct {
+ Ipv6Flabel uint32 `protobuf:"varint,31,opt,name=ipv6_flabel,json=ipv6Flabel,proto3,oneof"`
+}
+
+type OfpOxmOfbField_Icmpv6Type struct {
+ Icmpv6Type uint32 `protobuf:"varint,32,opt,name=icmpv6_type,json=icmpv6Type,proto3,oneof"`
+}
+
+type OfpOxmOfbField_Icmpv6Code struct {
+ Icmpv6Code uint32 `protobuf:"varint,33,opt,name=icmpv6_code,json=icmpv6Code,proto3,oneof"`
+}
+
+type OfpOxmOfbField_Ipv6NdTarget struct {
+ Ipv6NdTarget []byte `protobuf:"bytes,34,opt,name=ipv6_nd_target,json=ipv6NdTarget,proto3,oneof"`
+}
+
+type OfpOxmOfbField_Ipv6NdSsl struct {
+ Ipv6NdSsl []byte `protobuf:"bytes,35,opt,name=ipv6_nd_ssl,json=ipv6NdSsl,proto3,oneof"`
+}
+
+type OfpOxmOfbField_Ipv6NdTll struct {
+ Ipv6NdTll []byte `protobuf:"bytes,36,opt,name=ipv6_nd_tll,json=ipv6NdTll,proto3,oneof"`
+}
+
+type OfpOxmOfbField_MplsLabel struct {
+ MplsLabel uint32 `protobuf:"varint,37,opt,name=mpls_label,json=mplsLabel,proto3,oneof"`
+}
+
+type OfpOxmOfbField_MplsTc struct {
+ MplsTc uint32 `protobuf:"varint,38,opt,name=mpls_tc,json=mplsTc,proto3,oneof"`
+}
+
+type OfpOxmOfbField_MplsBos struct {
+ MplsBos uint32 `protobuf:"varint,39,opt,name=mpls_bos,json=mplsBos,proto3,oneof"`
+}
+
+type OfpOxmOfbField_PbbIsid struct {
+ PbbIsid uint32 `protobuf:"varint,40,opt,name=pbb_isid,json=pbbIsid,proto3,oneof"`
+}
+
+type OfpOxmOfbField_TunnelId struct {
+ TunnelId uint64 `protobuf:"varint,41,opt,name=tunnel_id,json=tunnelId,proto3,oneof"`
+}
+
+type OfpOxmOfbField_Ipv6Exthdr struct {
+ Ipv6Exthdr uint32 `protobuf:"varint,42,opt,name=ipv6_exthdr,json=ipv6Exthdr,proto3,oneof"`
+}
+
+func (*OfpOxmOfbField_Port) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_PhysicalPort) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_TableMetadata) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_EthDst) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_EthSrc) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_EthType) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_VlanVid) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_VlanPcp) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_IpDscp) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_IpEcn) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_IpProto) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_Ipv4Src) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_Ipv4Dst) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_TcpSrc) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_TcpDst) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_UdpSrc) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_UdpDst) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_SctpSrc) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_SctpDst) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_Icmpv4Type) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_Icmpv4Code) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_ArpOp) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_ArpSpa) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_ArpTpa) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_ArpSha) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_ArpTha) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_Ipv6Src) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_Ipv6Dst) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_Ipv6Flabel) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_Icmpv6Type) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_Icmpv6Code) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_Ipv6NdTarget) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_Ipv6NdSsl) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_Ipv6NdTll) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_MplsLabel) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_MplsTc) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_MplsBos) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_PbbIsid) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_TunnelId) isOfpOxmOfbField_Value() {}
+
+func (*OfpOxmOfbField_Ipv6Exthdr) isOfpOxmOfbField_Value() {}
+
+func (m *OfpOxmOfbField) GetValue() isOfpOxmOfbField_Value {
+ if m != nil {
+ return m.Value
+ }
+ return nil
+}
+
+func (m *OfpOxmOfbField) GetPort() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_Port); ok {
+ return x.Port
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetPhysicalPort() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_PhysicalPort); ok {
+ return x.PhysicalPort
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetTableMetadata() uint64 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_TableMetadata); ok {
+ return x.TableMetadata
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetEthDst() []byte {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_EthDst); ok {
+ return x.EthDst
+ }
+ return nil
+}
+
+func (m *OfpOxmOfbField) GetEthSrc() []byte {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_EthSrc); ok {
+ return x.EthSrc
+ }
+ return nil
+}
+
+func (m *OfpOxmOfbField) GetEthType() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_EthType); ok {
+ return x.EthType
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetVlanVid() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_VlanVid); ok {
+ return x.VlanVid
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetVlanPcp() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_VlanPcp); ok {
+ return x.VlanPcp
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetIpDscp() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_IpDscp); ok {
+ return x.IpDscp
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetIpEcn() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_IpEcn); ok {
+ return x.IpEcn
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetIpProto() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_IpProto); ok {
+ return x.IpProto
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetIpv4Src() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv4Src); ok {
+ return x.Ipv4Src
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetIpv4Dst() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv4Dst); ok {
+ return x.Ipv4Dst
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetTcpSrc() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_TcpSrc); ok {
+ return x.TcpSrc
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetTcpDst() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_TcpDst); ok {
+ return x.TcpDst
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetUdpSrc() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_UdpSrc); ok {
+ return x.UdpSrc
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetUdpDst() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_UdpDst); ok {
+ return x.UdpDst
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetSctpSrc() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_SctpSrc); ok {
+ return x.SctpSrc
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetSctpDst() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_SctpDst); ok {
+ return x.SctpDst
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetIcmpv4Type() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_Icmpv4Type); ok {
+ return x.Icmpv4Type
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetIcmpv4Code() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_Icmpv4Code); ok {
+ return x.Icmpv4Code
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetArpOp() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_ArpOp); ok {
+ return x.ArpOp
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetArpSpa() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_ArpSpa); ok {
+ return x.ArpSpa
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetArpTpa() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_ArpTpa); ok {
+ return x.ArpTpa
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetArpSha() []byte {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_ArpSha); ok {
+ return x.ArpSha
+ }
+ return nil
+}
+
+func (m *OfpOxmOfbField) GetArpTha() []byte {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_ArpTha); ok {
+ return x.ArpTha
+ }
+ return nil
+}
+
+func (m *OfpOxmOfbField) GetIpv6Src() []byte {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6Src); ok {
+ return x.Ipv6Src
+ }
+ return nil
+}
+
+func (m *OfpOxmOfbField) GetIpv6Dst() []byte {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6Dst); ok {
+ return x.Ipv6Dst
+ }
+ return nil
+}
+
+func (m *OfpOxmOfbField) GetIpv6Flabel() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6Flabel); ok {
+ return x.Ipv6Flabel
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetIcmpv6Type() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_Icmpv6Type); ok {
+ return x.Icmpv6Type
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetIcmpv6Code() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_Icmpv6Code); ok {
+ return x.Icmpv6Code
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetIpv6NdTarget() []byte {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6NdTarget); ok {
+ return x.Ipv6NdTarget
+ }
+ return nil
+}
+
+func (m *OfpOxmOfbField) GetIpv6NdSsl() []byte {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6NdSsl); ok {
+ return x.Ipv6NdSsl
+ }
+ return nil
+}
+
+func (m *OfpOxmOfbField) GetIpv6NdTll() []byte {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6NdTll); ok {
+ return x.Ipv6NdTll
+ }
+ return nil
+}
+
+func (m *OfpOxmOfbField) GetMplsLabel() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_MplsLabel); ok {
+ return x.MplsLabel
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetMplsTc() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_MplsTc); ok {
+ return x.MplsTc
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetMplsBos() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_MplsBos); ok {
+ return x.MplsBos
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetPbbIsid() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_PbbIsid); ok {
+ return x.PbbIsid
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetTunnelId() uint64 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_TunnelId); ok {
+ return x.TunnelId
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetIpv6Exthdr() uint32 {
+ if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6Exthdr); ok {
+ return x.Ipv6Exthdr
+ }
+ return 0
+}
+
+type isOfpOxmOfbField_Mask interface {
+ isOfpOxmOfbField_Mask()
+}
+
+type OfpOxmOfbField_TableMetadataMask struct {
+ TableMetadataMask uint64 `protobuf:"varint,105,opt,name=table_metadata_mask,json=tableMetadataMask,proto3,oneof"`
+}
+
+type OfpOxmOfbField_EthDstMask struct {
+ EthDstMask []byte `protobuf:"bytes,106,opt,name=eth_dst_mask,json=ethDstMask,proto3,oneof"`
+}
+
+type OfpOxmOfbField_EthSrcMask struct {
+ EthSrcMask []byte `protobuf:"bytes,107,opt,name=eth_src_mask,json=ethSrcMask,proto3,oneof"`
+}
+
+type OfpOxmOfbField_VlanVidMask struct {
+ VlanVidMask uint32 `protobuf:"varint,109,opt,name=vlan_vid_mask,json=vlanVidMask,proto3,oneof"`
+}
+
+type OfpOxmOfbField_Ipv4SrcMask struct {
+ Ipv4SrcMask uint32 `protobuf:"varint,114,opt,name=ipv4_src_mask,json=ipv4SrcMask,proto3,oneof"`
+}
+
+type OfpOxmOfbField_Ipv4DstMask struct {
+ Ipv4DstMask uint32 `protobuf:"varint,115,opt,name=ipv4_dst_mask,json=ipv4DstMask,proto3,oneof"`
+}
+
+type OfpOxmOfbField_ArpSpaMask struct {
+ ArpSpaMask uint32 `protobuf:"varint,125,opt,name=arp_spa_mask,json=arpSpaMask,proto3,oneof"`
+}
+
+type OfpOxmOfbField_ArpTpaMask struct {
+ ArpTpaMask uint32 `protobuf:"varint,126,opt,name=arp_tpa_mask,json=arpTpaMask,proto3,oneof"`
+}
+
+type OfpOxmOfbField_Ipv6SrcMask struct {
+ Ipv6SrcMask []byte `protobuf:"bytes,129,opt,name=ipv6_src_mask,json=ipv6SrcMask,proto3,oneof"`
+}
+
+type OfpOxmOfbField_Ipv6DstMask struct {
+ Ipv6DstMask []byte `protobuf:"bytes,130,opt,name=ipv6_dst_mask,json=ipv6DstMask,proto3,oneof"`
+}
+
+type OfpOxmOfbField_Ipv6FlabelMask struct {
+ Ipv6FlabelMask uint32 `protobuf:"varint,131,opt,name=ipv6_flabel_mask,json=ipv6FlabelMask,proto3,oneof"`
+}
+
+type OfpOxmOfbField_PbbIsidMask struct {
+ PbbIsidMask uint32 `protobuf:"varint,140,opt,name=pbb_isid_mask,json=pbbIsidMask,proto3,oneof"`
+}
+
+type OfpOxmOfbField_TunnelIdMask struct {
+ TunnelIdMask uint64 `protobuf:"varint,141,opt,name=tunnel_id_mask,json=tunnelIdMask,proto3,oneof"`
+}
+
+type OfpOxmOfbField_Ipv6ExthdrMask struct {
+ Ipv6ExthdrMask uint32 `protobuf:"varint,142,opt,name=ipv6_exthdr_mask,json=ipv6ExthdrMask,proto3,oneof"`
+}
+
+func (*OfpOxmOfbField_TableMetadataMask) isOfpOxmOfbField_Mask() {}
+
+func (*OfpOxmOfbField_EthDstMask) isOfpOxmOfbField_Mask() {}
+
+func (*OfpOxmOfbField_EthSrcMask) isOfpOxmOfbField_Mask() {}
+
+func (*OfpOxmOfbField_VlanVidMask) isOfpOxmOfbField_Mask() {}
+
+func (*OfpOxmOfbField_Ipv4SrcMask) isOfpOxmOfbField_Mask() {}
+
+func (*OfpOxmOfbField_Ipv4DstMask) isOfpOxmOfbField_Mask() {}
+
+func (*OfpOxmOfbField_ArpSpaMask) isOfpOxmOfbField_Mask() {}
+
+func (*OfpOxmOfbField_ArpTpaMask) isOfpOxmOfbField_Mask() {}
+
+func (*OfpOxmOfbField_Ipv6SrcMask) isOfpOxmOfbField_Mask() {}
+
+func (*OfpOxmOfbField_Ipv6DstMask) isOfpOxmOfbField_Mask() {}
+
+func (*OfpOxmOfbField_Ipv6FlabelMask) isOfpOxmOfbField_Mask() {}
+
+func (*OfpOxmOfbField_PbbIsidMask) isOfpOxmOfbField_Mask() {}
+
+func (*OfpOxmOfbField_TunnelIdMask) isOfpOxmOfbField_Mask() {}
+
+func (*OfpOxmOfbField_Ipv6ExthdrMask) isOfpOxmOfbField_Mask() {}
+
+func (m *OfpOxmOfbField) GetMask() isOfpOxmOfbField_Mask {
+ if m != nil {
+ return m.Mask
+ }
+ return nil
+}
+
+func (m *OfpOxmOfbField) GetTableMetadataMask() uint64 {
+ if x, ok := m.GetMask().(*OfpOxmOfbField_TableMetadataMask); ok {
+ return x.TableMetadataMask
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetEthDstMask() []byte {
+ if x, ok := m.GetMask().(*OfpOxmOfbField_EthDstMask); ok {
+ return x.EthDstMask
+ }
+ return nil
+}
+
+func (m *OfpOxmOfbField) GetEthSrcMask() []byte {
+ if x, ok := m.GetMask().(*OfpOxmOfbField_EthSrcMask); ok {
+ return x.EthSrcMask
+ }
+ return nil
+}
+
+func (m *OfpOxmOfbField) GetVlanVidMask() uint32 {
+ if x, ok := m.GetMask().(*OfpOxmOfbField_VlanVidMask); ok {
+ return x.VlanVidMask
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetIpv4SrcMask() uint32 {
+ if x, ok := m.GetMask().(*OfpOxmOfbField_Ipv4SrcMask); ok {
+ return x.Ipv4SrcMask
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetIpv4DstMask() uint32 {
+ if x, ok := m.GetMask().(*OfpOxmOfbField_Ipv4DstMask); ok {
+ return x.Ipv4DstMask
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetArpSpaMask() uint32 {
+ if x, ok := m.GetMask().(*OfpOxmOfbField_ArpSpaMask); ok {
+ return x.ArpSpaMask
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetArpTpaMask() uint32 {
+ if x, ok := m.GetMask().(*OfpOxmOfbField_ArpTpaMask); ok {
+ return x.ArpTpaMask
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetIpv6SrcMask() []byte {
+ if x, ok := m.GetMask().(*OfpOxmOfbField_Ipv6SrcMask); ok {
+ return x.Ipv6SrcMask
+ }
+ return nil
+}
+
+func (m *OfpOxmOfbField) GetIpv6DstMask() []byte {
+ if x, ok := m.GetMask().(*OfpOxmOfbField_Ipv6DstMask); ok {
+ return x.Ipv6DstMask
+ }
+ return nil
+}
+
+func (m *OfpOxmOfbField) GetIpv6FlabelMask() uint32 {
+ if x, ok := m.GetMask().(*OfpOxmOfbField_Ipv6FlabelMask); ok {
+ return x.Ipv6FlabelMask
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetPbbIsidMask() uint32 {
+ if x, ok := m.GetMask().(*OfpOxmOfbField_PbbIsidMask); ok {
+ return x.PbbIsidMask
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetTunnelIdMask() uint64 {
+ if x, ok := m.GetMask().(*OfpOxmOfbField_TunnelIdMask); ok {
+ return x.TunnelIdMask
+ }
+ return 0
+}
+
+func (m *OfpOxmOfbField) GetIpv6ExthdrMask() uint32 {
+ if x, ok := m.GetMask().(*OfpOxmOfbField_Ipv6ExthdrMask); ok {
+ return x.Ipv6ExthdrMask
+ }
+ return 0
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*OfpOxmOfbField) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*OfpOxmOfbField_Port)(nil),
+ (*OfpOxmOfbField_PhysicalPort)(nil),
+ (*OfpOxmOfbField_TableMetadata)(nil),
+ (*OfpOxmOfbField_EthDst)(nil),
+ (*OfpOxmOfbField_EthSrc)(nil),
+ (*OfpOxmOfbField_EthType)(nil),
+ (*OfpOxmOfbField_VlanVid)(nil),
+ (*OfpOxmOfbField_VlanPcp)(nil),
+ (*OfpOxmOfbField_IpDscp)(nil),
+ (*OfpOxmOfbField_IpEcn)(nil),
+ (*OfpOxmOfbField_IpProto)(nil),
+ (*OfpOxmOfbField_Ipv4Src)(nil),
+ (*OfpOxmOfbField_Ipv4Dst)(nil),
+ (*OfpOxmOfbField_TcpSrc)(nil),
+ (*OfpOxmOfbField_TcpDst)(nil),
+ (*OfpOxmOfbField_UdpSrc)(nil),
+ (*OfpOxmOfbField_UdpDst)(nil),
+ (*OfpOxmOfbField_SctpSrc)(nil),
+ (*OfpOxmOfbField_SctpDst)(nil),
+ (*OfpOxmOfbField_Icmpv4Type)(nil),
+ (*OfpOxmOfbField_Icmpv4Code)(nil),
+ (*OfpOxmOfbField_ArpOp)(nil),
+ (*OfpOxmOfbField_ArpSpa)(nil),
+ (*OfpOxmOfbField_ArpTpa)(nil),
+ (*OfpOxmOfbField_ArpSha)(nil),
+ (*OfpOxmOfbField_ArpTha)(nil),
+ (*OfpOxmOfbField_Ipv6Src)(nil),
+ (*OfpOxmOfbField_Ipv6Dst)(nil),
+ (*OfpOxmOfbField_Ipv6Flabel)(nil),
+ (*OfpOxmOfbField_Icmpv6Type)(nil),
+ (*OfpOxmOfbField_Icmpv6Code)(nil),
+ (*OfpOxmOfbField_Ipv6NdTarget)(nil),
+ (*OfpOxmOfbField_Ipv6NdSsl)(nil),
+ (*OfpOxmOfbField_Ipv6NdTll)(nil),
+ (*OfpOxmOfbField_MplsLabel)(nil),
+ (*OfpOxmOfbField_MplsTc)(nil),
+ (*OfpOxmOfbField_MplsBos)(nil),
+ (*OfpOxmOfbField_PbbIsid)(nil),
+ (*OfpOxmOfbField_TunnelId)(nil),
+ (*OfpOxmOfbField_Ipv6Exthdr)(nil),
+ (*OfpOxmOfbField_TableMetadataMask)(nil),
+ (*OfpOxmOfbField_EthDstMask)(nil),
+ (*OfpOxmOfbField_EthSrcMask)(nil),
+ (*OfpOxmOfbField_VlanVidMask)(nil),
+ (*OfpOxmOfbField_Ipv4SrcMask)(nil),
+ (*OfpOxmOfbField_Ipv4DstMask)(nil),
+ (*OfpOxmOfbField_ArpSpaMask)(nil),
+ (*OfpOxmOfbField_ArpTpaMask)(nil),
+ (*OfpOxmOfbField_Ipv6SrcMask)(nil),
+ (*OfpOxmOfbField_Ipv6DstMask)(nil),
+ (*OfpOxmOfbField_Ipv6FlabelMask)(nil),
+ (*OfpOxmOfbField_PbbIsidMask)(nil),
+ (*OfpOxmOfbField_TunnelIdMask)(nil),
+ (*OfpOxmOfbField_Ipv6ExthdrMask)(nil),
+ }
+}
+
+// Header for OXM experimenter match fields.
+// The experimenter class should not use OXM_HEADER() macros for defining
+// fields due to this extra header.
+type OfpOxmExperimenterField struct {
+ OxmHeader uint32 `protobuf:"varint,1,opt,name=oxm_header,json=oxmHeader,proto3" json:"oxm_header,omitempty"`
+ Experimenter uint32 `protobuf:"varint,2,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpOxmExperimenterField) Reset() { *m = OfpOxmExperimenterField{} }
+func (m *OfpOxmExperimenterField) String() string { return proto.CompactTextString(m) }
+func (*OfpOxmExperimenterField) ProtoMessage() {}
+func (*OfpOxmExperimenterField) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{13}
+}
+
+func (m *OfpOxmExperimenterField) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpOxmExperimenterField.Unmarshal(m, b)
+}
+func (m *OfpOxmExperimenterField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpOxmExperimenterField.Marshal(b, m, deterministic)
+}
+func (m *OfpOxmExperimenterField) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpOxmExperimenterField.Merge(m, src)
+}
+func (m *OfpOxmExperimenterField) XXX_Size() int {
+ return xxx_messageInfo_OfpOxmExperimenterField.Size(m)
+}
+func (m *OfpOxmExperimenterField) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpOxmExperimenterField.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpOxmExperimenterField proto.InternalMessageInfo
+
+func (m *OfpOxmExperimenterField) GetOxmHeader() uint32 {
+ if m != nil {
+ return m.OxmHeader
+ }
+ return 0
+}
+
+func (m *OfpOxmExperimenterField) GetExperimenter() uint32 {
+ if m != nil {
+ return m.Experimenter
+ }
+ return 0
+}
+
+// Action header that is common to all actions. The length includes the
+// header and any padding used to make the action 64-bit aligned.
+// NB: The length of an action *must* always be a multiple of eight.
+type OfpAction struct {
+ Type OfpActionType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpActionType" json:"type,omitempty"`
+ // Types that are valid to be assigned to Action:
+ // *OfpAction_Output
+ // *OfpAction_MplsTtl
+ // *OfpAction_Push
+ // *OfpAction_PopMpls
+ // *OfpAction_Group
+ // *OfpAction_NwTtl
+ // *OfpAction_SetField
+ // *OfpAction_Experimenter
+ Action isOfpAction_Action `protobuf_oneof:"action"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpAction) Reset() { *m = OfpAction{} }
+func (m *OfpAction) String() string { return proto.CompactTextString(m) }
+func (*OfpAction) ProtoMessage() {}
+func (*OfpAction) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{14}
+}
+
+func (m *OfpAction) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpAction.Unmarshal(m, b)
+}
+func (m *OfpAction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpAction.Marshal(b, m, deterministic)
+}
+func (m *OfpAction) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpAction.Merge(m, src)
+}
+func (m *OfpAction) XXX_Size() int {
+ return xxx_messageInfo_OfpAction.Size(m)
+}
+func (m *OfpAction) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpAction.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpAction proto.InternalMessageInfo
+
+func (m *OfpAction) GetType() OfpActionType {
+ if m != nil {
+ return m.Type
+ }
+ return OfpActionType_OFPAT_OUTPUT
+}
+
+type isOfpAction_Action interface {
+ isOfpAction_Action()
+}
+
+type OfpAction_Output struct {
+ Output *OfpActionOutput `protobuf:"bytes,2,opt,name=output,proto3,oneof"`
+}
+
+type OfpAction_MplsTtl struct {
+ MplsTtl *OfpActionMplsTtl `protobuf:"bytes,3,opt,name=mpls_ttl,json=mplsTtl,proto3,oneof"`
+}
+
+type OfpAction_Push struct {
+ Push *OfpActionPush `protobuf:"bytes,4,opt,name=push,proto3,oneof"`
+}
+
+type OfpAction_PopMpls struct {
+ PopMpls *OfpActionPopMpls `protobuf:"bytes,5,opt,name=pop_mpls,json=popMpls,proto3,oneof"`
+}
+
+type OfpAction_Group struct {
+ Group *OfpActionGroup `protobuf:"bytes,6,opt,name=group,proto3,oneof"`
+}
+
+type OfpAction_NwTtl struct {
+ NwTtl *OfpActionNwTtl `protobuf:"bytes,7,opt,name=nw_ttl,json=nwTtl,proto3,oneof"`
+}
+
+type OfpAction_SetField struct {
+ SetField *OfpActionSetField `protobuf:"bytes,8,opt,name=set_field,json=setField,proto3,oneof"`
+}
+
+type OfpAction_Experimenter struct {
+ Experimenter *OfpActionExperimenter `protobuf:"bytes,9,opt,name=experimenter,proto3,oneof"`
+}
+
+func (*OfpAction_Output) isOfpAction_Action() {}
+
+func (*OfpAction_MplsTtl) isOfpAction_Action() {}
+
+func (*OfpAction_Push) isOfpAction_Action() {}
+
+func (*OfpAction_PopMpls) isOfpAction_Action() {}
+
+func (*OfpAction_Group) isOfpAction_Action() {}
+
+func (*OfpAction_NwTtl) isOfpAction_Action() {}
+
+func (*OfpAction_SetField) isOfpAction_Action() {}
+
+func (*OfpAction_Experimenter) isOfpAction_Action() {}
+
+func (m *OfpAction) GetAction() isOfpAction_Action {
+ if m != nil {
+ return m.Action
+ }
+ return nil
+}
+
+func (m *OfpAction) GetOutput() *OfpActionOutput {
+ if x, ok := m.GetAction().(*OfpAction_Output); ok {
+ return x.Output
+ }
+ return nil
+}
+
+func (m *OfpAction) GetMplsTtl() *OfpActionMplsTtl {
+ if x, ok := m.GetAction().(*OfpAction_MplsTtl); ok {
+ return x.MplsTtl
+ }
+ return nil
+}
+
+func (m *OfpAction) GetPush() *OfpActionPush {
+ if x, ok := m.GetAction().(*OfpAction_Push); ok {
+ return x.Push
+ }
+ return nil
+}
+
+func (m *OfpAction) GetPopMpls() *OfpActionPopMpls {
+ if x, ok := m.GetAction().(*OfpAction_PopMpls); ok {
+ return x.PopMpls
+ }
+ return nil
+}
+
+func (m *OfpAction) GetGroup() *OfpActionGroup {
+ if x, ok := m.GetAction().(*OfpAction_Group); ok {
+ return x.Group
+ }
+ return nil
+}
+
+func (m *OfpAction) GetNwTtl() *OfpActionNwTtl {
+ if x, ok := m.GetAction().(*OfpAction_NwTtl); ok {
+ return x.NwTtl
+ }
+ return nil
+}
+
+func (m *OfpAction) GetSetField() *OfpActionSetField {
+ if x, ok := m.GetAction().(*OfpAction_SetField); ok {
+ return x.SetField
+ }
+ return nil
+}
+
+func (m *OfpAction) GetExperimenter() *OfpActionExperimenter {
+ if x, ok := m.GetAction().(*OfpAction_Experimenter); ok {
+ return x.Experimenter
+ }
+ return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*OfpAction) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*OfpAction_Output)(nil),
+ (*OfpAction_MplsTtl)(nil),
+ (*OfpAction_Push)(nil),
+ (*OfpAction_PopMpls)(nil),
+ (*OfpAction_Group)(nil),
+ (*OfpAction_NwTtl)(nil),
+ (*OfpAction_SetField)(nil),
+ (*OfpAction_Experimenter)(nil),
+ }
+}
+
+// Action structure for OFPAT_OUTPUT, which sends packets out 'port'.
+// When the 'port' is the OFPP_CONTROLLER, 'max_len' indicates the max
+// number of bytes to send. A 'max_len' of zero means no bytes of the
+// packet should be sent. A 'max_len' of OFPCML_NO_BUFFER means that
+// the packet is not buffered and the complete packet is to be sent to
+// the controller.
+type OfpActionOutput struct {
+ Port uint32 `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
+ MaxLen uint32 `protobuf:"varint,2,opt,name=max_len,json=maxLen,proto3" json:"max_len,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpActionOutput) Reset() { *m = OfpActionOutput{} }
+func (m *OfpActionOutput) String() string { return proto.CompactTextString(m) }
+func (*OfpActionOutput) ProtoMessage() {}
+func (*OfpActionOutput) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{15}
+}
+
+func (m *OfpActionOutput) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpActionOutput.Unmarshal(m, b)
+}
+func (m *OfpActionOutput) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpActionOutput.Marshal(b, m, deterministic)
+}
+func (m *OfpActionOutput) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpActionOutput.Merge(m, src)
+}
+func (m *OfpActionOutput) XXX_Size() int {
+ return xxx_messageInfo_OfpActionOutput.Size(m)
+}
+func (m *OfpActionOutput) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpActionOutput.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpActionOutput proto.InternalMessageInfo
+
+func (m *OfpActionOutput) GetPort() uint32 {
+ if m != nil {
+ return m.Port
+ }
+ return 0
+}
+
+func (m *OfpActionOutput) GetMaxLen() uint32 {
+ if m != nil {
+ return m.MaxLen
+ }
+ return 0
+}
+
+// Action structure for OFPAT_SET_MPLS_TTL.
+type OfpActionMplsTtl struct {
+ MplsTtl uint32 `protobuf:"varint,1,opt,name=mpls_ttl,json=mplsTtl,proto3" json:"mpls_ttl,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpActionMplsTtl) Reset() { *m = OfpActionMplsTtl{} }
+func (m *OfpActionMplsTtl) String() string { return proto.CompactTextString(m) }
+func (*OfpActionMplsTtl) ProtoMessage() {}
+func (*OfpActionMplsTtl) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{16}
+}
+
+func (m *OfpActionMplsTtl) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpActionMplsTtl.Unmarshal(m, b)
+}
+func (m *OfpActionMplsTtl) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpActionMplsTtl.Marshal(b, m, deterministic)
+}
+func (m *OfpActionMplsTtl) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpActionMplsTtl.Merge(m, src)
+}
+func (m *OfpActionMplsTtl) XXX_Size() int {
+ return xxx_messageInfo_OfpActionMplsTtl.Size(m)
+}
+func (m *OfpActionMplsTtl) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpActionMplsTtl.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpActionMplsTtl proto.InternalMessageInfo
+
+func (m *OfpActionMplsTtl) GetMplsTtl() uint32 {
+ if m != nil {
+ return m.MplsTtl
+ }
+ return 0
+}
+
+// Action structure for OFPAT_PUSH_VLAN/MPLS/PBB.
+type OfpActionPush struct {
+ Ethertype uint32 `protobuf:"varint,1,opt,name=ethertype,proto3" json:"ethertype,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpActionPush) Reset() { *m = OfpActionPush{} }
+func (m *OfpActionPush) String() string { return proto.CompactTextString(m) }
+func (*OfpActionPush) ProtoMessage() {}
+func (*OfpActionPush) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{17}
+}
+
+func (m *OfpActionPush) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpActionPush.Unmarshal(m, b)
+}
+func (m *OfpActionPush) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpActionPush.Marshal(b, m, deterministic)
+}
+func (m *OfpActionPush) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpActionPush.Merge(m, src)
+}
+func (m *OfpActionPush) XXX_Size() int {
+ return xxx_messageInfo_OfpActionPush.Size(m)
+}
+func (m *OfpActionPush) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpActionPush.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpActionPush proto.InternalMessageInfo
+
+func (m *OfpActionPush) GetEthertype() uint32 {
+ if m != nil {
+ return m.Ethertype
+ }
+ return 0
+}
+
+// Action structure for OFPAT_POP_MPLS.
+type OfpActionPopMpls struct {
+ Ethertype uint32 `protobuf:"varint,1,opt,name=ethertype,proto3" json:"ethertype,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpActionPopMpls) Reset() { *m = OfpActionPopMpls{} }
+func (m *OfpActionPopMpls) String() string { return proto.CompactTextString(m) }
+func (*OfpActionPopMpls) ProtoMessage() {}
+func (*OfpActionPopMpls) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{18}
+}
+
+func (m *OfpActionPopMpls) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpActionPopMpls.Unmarshal(m, b)
+}
+func (m *OfpActionPopMpls) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpActionPopMpls.Marshal(b, m, deterministic)
+}
+func (m *OfpActionPopMpls) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpActionPopMpls.Merge(m, src)
+}
+func (m *OfpActionPopMpls) XXX_Size() int {
+ return xxx_messageInfo_OfpActionPopMpls.Size(m)
+}
+func (m *OfpActionPopMpls) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpActionPopMpls.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpActionPopMpls proto.InternalMessageInfo
+
+func (m *OfpActionPopMpls) GetEthertype() uint32 {
+ if m != nil {
+ return m.Ethertype
+ }
+ return 0
+}
+
+// Action structure for OFPAT_GROUP.
+type OfpActionGroup struct {
+ GroupId uint32 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpActionGroup) Reset() { *m = OfpActionGroup{} }
+func (m *OfpActionGroup) String() string { return proto.CompactTextString(m) }
+func (*OfpActionGroup) ProtoMessage() {}
+func (*OfpActionGroup) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{19}
+}
+
+func (m *OfpActionGroup) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpActionGroup.Unmarshal(m, b)
+}
+func (m *OfpActionGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpActionGroup.Marshal(b, m, deterministic)
+}
+func (m *OfpActionGroup) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpActionGroup.Merge(m, src)
+}
+func (m *OfpActionGroup) XXX_Size() int {
+ return xxx_messageInfo_OfpActionGroup.Size(m)
+}
+func (m *OfpActionGroup) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpActionGroup.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpActionGroup proto.InternalMessageInfo
+
+func (m *OfpActionGroup) GetGroupId() uint32 {
+ if m != nil {
+ return m.GroupId
+ }
+ return 0
+}
+
+// Action structure for OFPAT_SET_NW_TTL.
+type OfpActionNwTtl struct {
+ NwTtl uint32 `protobuf:"varint,1,opt,name=nw_ttl,json=nwTtl,proto3" json:"nw_ttl,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpActionNwTtl) Reset() { *m = OfpActionNwTtl{} }
+func (m *OfpActionNwTtl) String() string { return proto.CompactTextString(m) }
+func (*OfpActionNwTtl) ProtoMessage() {}
+func (*OfpActionNwTtl) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{20}
+}
+
+func (m *OfpActionNwTtl) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpActionNwTtl.Unmarshal(m, b)
+}
+func (m *OfpActionNwTtl) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpActionNwTtl.Marshal(b, m, deterministic)
+}
+func (m *OfpActionNwTtl) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpActionNwTtl.Merge(m, src)
+}
+func (m *OfpActionNwTtl) XXX_Size() int {
+ return xxx_messageInfo_OfpActionNwTtl.Size(m)
+}
+func (m *OfpActionNwTtl) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpActionNwTtl.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpActionNwTtl proto.InternalMessageInfo
+
+func (m *OfpActionNwTtl) GetNwTtl() uint32 {
+ if m != nil {
+ return m.NwTtl
+ }
+ return 0
+}
+
+// Action structure for OFPAT_SET_FIELD.
+type OfpActionSetField struct {
+ Field *OfpOxmField `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpActionSetField) Reset() { *m = OfpActionSetField{} }
+func (m *OfpActionSetField) String() string { return proto.CompactTextString(m) }
+func (*OfpActionSetField) ProtoMessage() {}
+func (*OfpActionSetField) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{21}
+}
+
+func (m *OfpActionSetField) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpActionSetField.Unmarshal(m, b)
+}
+func (m *OfpActionSetField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpActionSetField.Marshal(b, m, deterministic)
+}
+func (m *OfpActionSetField) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpActionSetField.Merge(m, src)
+}
+func (m *OfpActionSetField) XXX_Size() int {
+ return xxx_messageInfo_OfpActionSetField.Size(m)
+}
+func (m *OfpActionSetField) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpActionSetField.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpActionSetField proto.InternalMessageInfo
+
+func (m *OfpActionSetField) GetField() *OfpOxmField {
+ if m != nil {
+ return m.Field
+ }
+ return nil
+}
+
+// Action header for OFPAT_EXPERIMENTER.
+// The rest of the body is experimenter-defined.
+type OfpActionExperimenter struct {
+ Experimenter uint32 `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+ Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpActionExperimenter) Reset() { *m = OfpActionExperimenter{} }
+func (m *OfpActionExperimenter) String() string { return proto.CompactTextString(m) }
+func (*OfpActionExperimenter) ProtoMessage() {}
+func (*OfpActionExperimenter) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{22}
+}
+
+func (m *OfpActionExperimenter) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpActionExperimenter.Unmarshal(m, b)
+}
+func (m *OfpActionExperimenter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpActionExperimenter.Marshal(b, m, deterministic)
+}
+func (m *OfpActionExperimenter) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpActionExperimenter.Merge(m, src)
+}
+func (m *OfpActionExperimenter) XXX_Size() int {
+ return xxx_messageInfo_OfpActionExperimenter.Size(m)
+}
+func (m *OfpActionExperimenter) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpActionExperimenter.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpActionExperimenter proto.InternalMessageInfo
+
+func (m *OfpActionExperimenter) GetExperimenter() uint32 {
+ if m != nil {
+ return m.Experimenter
+ }
+ return 0
+}
+
+func (m *OfpActionExperimenter) GetData() []byte {
+ if m != nil {
+ return m.Data
+ }
+ return nil
+}
+
+// Instruction header that is common to all instructions. The length includes
+// the header and any padding used to make the instruction 64-bit aligned.
+// NB: The length of an instruction *must* always be a multiple of eight.
+type OfpInstruction struct {
+ Type uint32 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`
+ // Types that are valid to be assigned to Data:
+ // *OfpInstruction_GotoTable
+ // *OfpInstruction_WriteMetadata
+ // *OfpInstruction_Actions
+ // *OfpInstruction_Meter
+ // *OfpInstruction_Experimenter
+ Data isOfpInstruction_Data `protobuf_oneof:"data"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpInstruction) Reset() { *m = OfpInstruction{} }
+func (m *OfpInstruction) String() string { return proto.CompactTextString(m) }
+func (*OfpInstruction) ProtoMessage() {}
+func (*OfpInstruction) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{23}
+}
+
+func (m *OfpInstruction) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpInstruction.Unmarshal(m, b)
+}
+func (m *OfpInstruction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpInstruction.Marshal(b, m, deterministic)
+}
+func (m *OfpInstruction) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpInstruction.Merge(m, src)
+}
+func (m *OfpInstruction) XXX_Size() int {
+ return xxx_messageInfo_OfpInstruction.Size(m)
+}
+func (m *OfpInstruction) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpInstruction.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpInstruction proto.InternalMessageInfo
+
+func (m *OfpInstruction) GetType() uint32 {
+ if m != nil {
+ return m.Type
+ }
+ return 0
+}
+
+type isOfpInstruction_Data interface {
+ isOfpInstruction_Data()
+}
+
+type OfpInstruction_GotoTable struct {
+ GotoTable *OfpInstructionGotoTable `protobuf:"bytes,2,opt,name=goto_table,json=gotoTable,proto3,oneof"`
+}
+
+type OfpInstruction_WriteMetadata struct {
+ WriteMetadata *OfpInstructionWriteMetadata `protobuf:"bytes,3,opt,name=write_metadata,json=writeMetadata,proto3,oneof"`
+}
+
+type OfpInstruction_Actions struct {
+ Actions *OfpInstructionActions `protobuf:"bytes,4,opt,name=actions,proto3,oneof"`
+}
+
+type OfpInstruction_Meter struct {
+ Meter *OfpInstructionMeter `protobuf:"bytes,5,opt,name=meter,proto3,oneof"`
+}
+
+type OfpInstruction_Experimenter struct {
+ Experimenter *OfpInstructionExperimenter `protobuf:"bytes,6,opt,name=experimenter,proto3,oneof"`
+}
+
+func (*OfpInstruction_GotoTable) isOfpInstruction_Data() {}
+
+func (*OfpInstruction_WriteMetadata) isOfpInstruction_Data() {}
+
+func (*OfpInstruction_Actions) isOfpInstruction_Data() {}
+
+func (*OfpInstruction_Meter) isOfpInstruction_Data() {}
+
+func (*OfpInstruction_Experimenter) isOfpInstruction_Data() {}
+
+func (m *OfpInstruction) GetData() isOfpInstruction_Data {
+ if m != nil {
+ return m.Data
+ }
+ return nil
+}
+
+func (m *OfpInstruction) GetGotoTable() *OfpInstructionGotoTable {
+ if x, ok := m.GetData().(*OfpInstruction_GotoTable); ok {
+ return x.GotoTable
+ }
+ return nil
+}
+
+func (m *OfpInstruction) GetWriteMetadata() *OfpInstructionWriteMetadata {
+ if x, ok := m.GetData().(*OfpInstruction_WriteMetadata); ok {
+ return x.WriteMetadata
+ }
+ return nil
+}
+
+func (m *OfpInstruction) GetActions() *OfpInstructionActions {
+ if x, ok := m.GetData().(*OfpInstruction_Actions); ok {
+ return x.Actions
+ }
+ return nil
+}
+
+func (m *OfpInstruction) GetMeter() *OfpInstructionMeter {
+ if x, ok := m.GetData().(*OfpInstruction_Meter); ok {
+ return x.Meter
+ }
+ return nil
+}
+
+func (m *OfpInstruction) GetExperimenter() *OfpInstructionExperimenter {
+ if x, ok := m.GetData().(*OfpInstruction_Experimenter); ok {
+ return x.Experimenter
+ }
+ return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*OfpInstruction) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*OfpInstruction_GotoTable)(nil),
+ (*OfpInstruction_WriteMetadata)(nil),
+ (*OfpInstruction_Actions)(nil),
+ (*OfpInstruction_Meter)(nil),
+ (*OfpInstruction_Experimenter)(nil),
+ }
+}
+
+// Instruction structure for OFPIT_GOTO_TABLE
+type OfpInstructionGotoTable struct {
+ TableId uint32 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpInstructionGotoTable) Reset() { *m = OfpInstructionGotoTable{} }
+func (m *OfpInstructionGotoTable) String() string { return proto.CompactTextString(m) }
+func (*OfpInstructionGotoTable) ProtoMessage() {}
+func (*OfpInstructionGotoTable) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{24}
+}
+
+func (m *OfpInstructionGotoTable) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpInstructionGotoTable.Unmarshal(m, b)
+}
+func (m *OfpInstructionGotoTable) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpInstructionGotoTable.Marshal(b, m, deterministic)
+}
+func (m *OfpInstructionGotoTable) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpInstructionGotoTable.Merge(m, src)
+}
+func (m *OfpInstructionGotoTable) XXX_Size() int {
+ return xxx_messageInfo_OfpInstructionGotoTable.Size(m)
+}
+func (m *OfpInstructionGotoTable) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpInstructionGotoTable.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpInstructionGotoTable proto.InternalMessageInfo
+
+func (m *OfpInstructionGotoTable) GetTableId() uint32 {
+ if m != nil {
+ return m.TableId
+ }
+ return 0
+}
+
+// Instruction structure for OFPIT_WRITE_METADATA
+type OfpInstructionWriteMetadata struct {
+ Metadata uint64 `protobuf:"varint,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
+ MetadataMask uint64 `protobuf:"varint,2,opt,name=metadata_mask,json=metadataMask,proto3" json:"metadata_mask,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpInstructionWriteMetadata) Reset() { *m = OfpInstructionWriteMetadata{} }
+func (m *OfpInstructionWriteMetadata) String() string { return proto.CompactTextString(m) }
+func (*OfpInstructionWriteMetadata) ProtoMessage() {}
+func (*OfpInstructionWriteMetadata) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{25}
+}
+
+func (m *OfpInstructionWriteMetadata) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpInstructionWriteMetadata.Unmarshal(m, b)
+}
+func (m *OfpInstructionWriteMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpInstructionWriteMetadata.Marshal(b, m, deterministic)
+}
+func (m *OfpInstructionWriteMetadata) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpInstructionWriteMetadata.Merge(m, src)
+}
+func (m *OfpInstructionWriteMetadata) XXX_Size() int {
+ return xxx_messageInfo_OfpInstructionWriteMetadata.Size(m)
+}
+func (m *OfpInstructionWriteMetadata) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpInstructionWriteMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpInstructionWriteMetadata proto.InternalMessageInfo
+
+func (m *OfpInstructionWriteMetadata) GetMetadata() uint64 {
+ if m != nil {
+ return m.Metadata
+ }
+ return 0
+}
+
+func (m *OfpInstructionWriteMetadata) GetMetadataMask() uint64 {
+ if m != nil {
+ return m.MetadataMask
+ }
+ return 0
+}
+
+// Instruction structure for OFPIT_WRITE/APPLY/CLEAR_ACTIONS
+type OfpInstructionActions struct {
+ Actions []*OfpAction `protobuf:"bytes,1,rep,name=actions,proto3" json:"actions,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpInstructionActions) Reset() { *m = OfpInstructionActions{} }
+func (m *OfpInstructionActions) String() string { return proto.CompactTextString(m) }
+func (*OfpInstructionActions) ProtoMessage() {}
+func (*OfpInstructionActions) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{26}
+}
+
+func (m *OfpInstructionActions) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpInstructionActions.Unmarshal(m, b)
+}
+func (m *OfpInstructionActions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpInstructionActions.Marshal(b, m, deterministic)
+}
+func (m *OfpInstructionActions) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpInstructionActions.Merge(m, src)
+}
+func (m *OfpInstructionActions) XXX_Size() int {
+ return xxx_messageInfo_OfpInstructionActions.Size(m)
+}
+func (m *OfpInstructionActions) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpInstructionActions.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpInstructionActions proto.InternalMessageInfo
+
+func (m *OfpInstructionActions) GetActions() []*OfpAction {
+ if m != nil {
+ return m.Actions
+ }
+ return nil
+}
+
+// Instruction structure for OFPIT_METER
+type OfpInstructionMeter struct {
+ MeterId uint32 `protobuf:"varint,1,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpInstructionMeter) Reset() { *m = OfpInstructionMeter{} }
+func (m *OfpInstructionMeter) String() string { return proto.CompactTextString(m) }
+func (*OfpInstructionMeter) ProtoMessage() {}
+func (*OfpInstructionMeter) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{27}
+}
+
+func (m *OfpInstructionMeter) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpInstructionMeter.Unmarshal(m, b)
+}
+func (m *OfpInstructionMeter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpInstructionMeter.Marshal(b, m, deterministic)
+}
+func (m *OfpInstructionMeter) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpInstructionMeter.Merge(m, src)
+}
+func (m *OfpInstructionMeter) XXX_Size() int {
+ return xxx_messageInfo_OfpInstructionMeter.Size(m)
+}
+func (m *OfpInstructionMeter) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpInstructionMeter.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpInstructionMeter proto.InternalMessageInfo
+
+func (m *OfpInstructionMeter) GetMeterId() uint32 {
+ if m != nil {
+ return m.MeterId
+ }
+ return 0
+}
+
+// Instruction structure for experimental instructions
+type OfpInstructionExperimenter struct {
+ Experimenter uint32 `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+ // Experimenter-defined arbitrary additional data.
+ Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpInstructionExperimenter) Reset() { *m = OfpInstructionExperimenter{} }
+func (m *OfpInstructionExperimenter) String() string { return proto.CompactTextString(m) }
+func (*OfpInstructionExperimenter) ProtoMessage() {}
+func (*OfpInstructionExperimenter) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{28}
+}
+
+func (m *OfpInstructionExperimenter) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpInstructionExperimenter.Unmarshal(m, b)
+}
+func (m *OfpInstructionExperimenter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpInstructionExperimenter.Marshal(b, m, deterministic)
+}
+func (m *OfpInstructionExperimenter) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpInstructionExperimenter.Merge(m, src)
+}
+func (m *OfpInstructionExperimenter) XXX_Size() int {
+ return xxx_messageInfo_OfpInstructionExperimenter.Size(m)
+}
+func (m *OfpInstructionExperimenter) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpInstructionExperimenter.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpInstructionExperimenter proto.InternalMessageInfo
+
+func (m *OfpInstructionExperimenter) GetExperimenter() uint32 {
+ if m != nil {
+ return m.Experimenter
+ }
+ return 0
+}
+
+func (m *OfpInstructionExperimenter) GetData() []byte {
+ if m != nil {
+ return m.Data
+ }
+ return nil
+}
+
+// Flow setup and teardown (controller -> datapath).
+type OfpFlowMod struct {
+ //ofp_header header;
+ Cookie uint64 `protobuf:"varint,1,opt,name=cookie,proto3" json:"cookie,omitempty"`
+ CookieMask uint64 `protobuf:"varint,2,opt,name=cookie_mask,json=cookieMask,proto3" json:"cookie_mask,omitempty"`
+ TableId uint32 `protobuf:"varint,3,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
+ Command OfpFlowModCommand `protobuf:"varint,4,opt,name=command,proto3,enum=openflow_13.OfpFlowModCommand" json:"command,omitempty"`
+ IdleTimeout uint32 `protobuf:"varint,5,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"`
+ HardTimeout uint32 `protobuf:"varint,6,opt,name=hard_timeout,json=hardTimeout,proto3" json:"hard_timeout,omitempty"`
+ Priority uint32 `protobuf:"varint,7,opt,name=priority,proto3" json:"priority,omitempty"`
+ BufferId uint32 `protobuf:"varint,8,opt,name=buffer_id,json=bufferId,proto3" json:"buffer_id,omitempty"`
+ OutPort uint32 `protobuf:"varint,9,opt,name=out_port,json=outPort,proto3" json:"out_port,omitempty"`
+ OutGroup uint32 `protobuf:"varint,10,opt,name=out_group,json=outGroup,proto3" json:"out_group,omitempty"`
+ Flags uint32 `protobuf:"varint,11,opt,name=flags,proto3" json:"flags,omitempty"`
+ Match *OfpMatch `protobuf:"bytes,12,opt,name=match,proto3" json:"match,omitempty"`
+ Instructions []*OfpInstruction `protobuf:"bytes,13,rep,name=instructions,proto3" json:"instructions,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpFlowMod) Reset() { *m = OfpFlowMod{} }
+func (m *OfpFlowMod) String() string { return proto.CompactTextString(m) }
+func (*OfpFlowMod) ProtoMessage() {}
+func (*OfpFlowMod) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{29}
+}
+
+func (m *OfpFlowMod) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpFlowMod.Unmarshal(m, b)
+}
+func (m *OfpFlowMod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpFlowMod.Marshal(b, m, deterministic)
+}
+func (m *OfpFlowMod) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpFlowMod.Merge(m, src)
+}
+func (m *OfpFlowMod) XXX_Size() int {
+ return xxx_messageInfo_OfpFlowMod.Size(m)
+}
+func (m *OfpFlowMod) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpFlowMod.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpFlowMod proto.InternalMessageInfo
+
+func (m *OfpFlowMod) GetCookie() uint64 {
+ if m != nil {
+ return m.Cookie
+ }
+ return 0
+}
+
+func (m *OfpFlowMod) GetCookieMask() uint64 {
+ if m != nil {
+ return m.CookieMask
+ }
+ return 0
+}
+
+func (m *OfpFlowMod) GetTableId() uint32 {
+ if m != nil {
+ return m.TableId
+ }
+ return 0
+}
+
+func (m *OfpFlowMod) GetCommand() OfpFlowModCommand {
+ if m != nil {
+ return m.Command
+ }
+ return OfpFlowModCommand_OFPFC_ADD
+}
+
+func (m *OfpFlowMod) GetIdleTimeout() uint32 {
+ if m != nil {
+ return m.IdleTimeout
+ }
+ return 0
+}
+
+func (m *OfpFlowMod) GetHardTimeout() uint32 {
+ if m != nil {
+ return m.HardTimeout
+ }
+ return 0
+}
+
+func (m *OfpFlowMod) GetPriority() uint32 {
+ if m != nil {
+ return m.Priority
+ }
+ return 0
+}
+
+func (m *OfpFlowMod) GetBufferId() uint32 {
+ if m != nil {
+ return m.BufferId
+ }
+ return 0
+}
+
+func (m *OfpFlowMod) GetOutPort() uint32 {
+ if m != nil {
+ return m.OutPort
+ }
+ return 0
+}
+
+func (m *OfpFlowMod) GetOutGroup() uint32 {
+ if m != nil {
+ return m.OutGroup
+ }
+ return 0
+}
+
+func (m *OfpFlowMod) GetFlags() uint32 {
+ if m != nil {
+ return m.Flags
+ }
+ return 0
+}
+
+func (m *OfpFlowMod) GetMatch() *OfpMatch {
+ if m != nil {
+ return m.Match
+ }
+ return nil
+}
+
+func (m *OfpFlowMod) GetInstructions() []*OfpInstruction {
+ if m != nil {
+ return m.Instructions
+ }
+ return nil
+}
+
+// Bucket for use in groups.
+type OfpBucket struct {
+ Weight uint32 `protobuf:"varint,1,opt,name=weight,proto3" json:"weight,omitempty"`
+ WatchPort uint32 `protobuf:"varint,2,opt,name=watch_port,json=watchPort,proto3" json:"watch_port,omitempty"`
+ WatchGroup uint32 `protobuf:"varint,3,opt,name=watch_group,json=watchGroup,proto3" json:"watch_group,omitempty"`
+ Actions []*OfpAction `protobuf:"bytes,4,rep,name=actions,proto3" json:"actions,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpBucket) Reset() { *m = OfpBucket{} }
+func (m *OfpBucket) String() string { return proto.CompactTextString(m) }
+func (*OfpBucket) ProtoMessage() {}
+func (*OfpBucket) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{30}
+}
+
+func (m *OfpBucket) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpBucket.Unmarshal(m, b)
+}
+func (m *OfpBucket) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpBucket.Marshal(b, m, deterministic)
+}
+func (m *OfpBucket) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpBucket.Merge(m, src)
+}
+func (m *OfpBucket) XXX_Size() int {
+ return xxx_messageInfo_OfpBucket.Size(m)
+}
+func (m *OfpBucket) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpBucket.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpBucket proto.InternalMessageInfo
+
+func (m *OfpBucket) GetWeight() uint32 {
+ if m != nil {
+ return m.Weight
+ }
+ return 0
+}
+
+func (m *OfpBucket) GetWatchPort() uint32 {
+ if m != nil {
+ return m.WatchPort
+ }
+ return 0
+}
+
+func (m *OfpBucket) GetWatchGroup() uint32 {
+ if m != nil {
+ return m.WatchGroup
+ }
+ return 0
+}
+
+func (m *OfpBucket) GetActions() []*OfpAction {
+ if m != nil {
+ return m.Actions
+ }
+ return nil
+}
+
+// Group setup and teardown (controller -> datapath).
+type OfpGroupMod struct {
+ //ofp_header header;
+ Command OfpGroupModCommand `protobuf:"varint,1,opt,name=command,proto3,enum=openflow_13.OfpGroupModCommand" json:"command,omitempty"`
+ Type OfpGroupType `protobuf:"varint,2,opt,name=type,proto3,enum=openflow_13.OfpGroupType" json:"type,omitempty"`
+ GroupId uint32 `protobuf:"varint,3,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
+ Buckets []*OfpBucket `protobuf:"bytes,4,rep,name=buckets,proto3" json:"buckets,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpGroupMod) Reset() { *m = OfpGroupMod{} }
+func (m *OfpGroupMod) String() string { return proto.CompactTextString(m) }
+func (*OfpGroupMod) ProtoMessage() {}
+func (*OfpGroupMod) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{31}
+}
+
+func (m *OfpGroupMod) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpGroupMod.Unmarshal(m, b)
+}
+func (m *OfpGroupMod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpGroupMod.Marshal(b, m, deterministic)
+}
+func (m *OfpGroupMod) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpGroupMod.Merge(m, src)
+}
+func (m *OfpGroupMod) XXX_Size() int {
+ return xxx_messageInfo_OfpGroupMod.Size(m)
+}
+func (m *OfpGroupMod) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpGroupMod.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpGroupMod proto.InternalMessageInfo
+
+func (m *OfpGroupMod) GetCommand() OfpGroupModCommand {
+ if m != nil {
+ return m.Command
+ }
+ return OfpGroupModCommand_OFPGC_ADD
+}
+
+func (m *OfpGroupMod) GetType() OfpGroupType {
+ if m != nil {
+ return m.Type
+ }
+ return OfpGroupType_OFPGT_ALL
+}
+
+func (m *OfpGroupMod) GetGroupId() uint32 {
+ if m != nil {
+ return m.GroupId
+ }
+ return 0
+}
+
+func (m *OfpGroupMod) GetBuckets() []*OfpBucket {
+ if m != nil {
+ return m.Buckets
+ }
+ return nil
+}
+
+// Send packet (controller -> datapath).
+type OfpPacketOut struct {
+ //ofp_header header;
+ BufferId uint32 `protobuf:"varint,1,opt,name=buffer_id,json=bufferId,proto3" json:"buffer_id,omitempty"`
+ InPort uint32 `protobuf:"varint,2,opt,name=in_port,json=inPort,proto3" json:"in_port,omitempty"`
+ Actions []*OfpAction `protobuf:"bytes,3,rep,name=actions,proto3" json:"actions,omitempty"`
+ // The variable size action list is optionally followed by packet data.
+ // This data is only present and meaningful if buffer_id == -1.
+ Data []byte `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpPacketOut) Reset() { *m = OfpPacketOut{} }
+func (m *OfpPacketOut) String() string { return proto.CompactTextString(m) }
+func (*OfpPacketOut) ProtoMessage() {}
+func (*OfpPacketOut) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{32}
+}
+
+func (m *OfpPacketOut) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpPacketOut.Unmarshal(m, b)
+}
+func (m *OfpPacketOut) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpPacketOut.Marshal(b, m, deterministic)
+}
+func (m *OfpPacketOut) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpPacketOut.Merge(m, src)
+}
+func (m *OfpPacketOut) XXX_Size() int {
+ return xxx_messageInfo_OfpPacketOut.Size(m)
+}
+func (m *OfpPacketOut) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpPacketOut.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpPacketOut proto.InternalMessageInfo
+
+func (m *OfpPacketOut) GetBufferId() uint32 {
+ if m != nil {
+ return m.BufferId
+ }
+ return 0
+}
+
+func (m *OfpPacketOut) GetInPort() uint32 {
+ if m != nil {
+ return m.InPort
+ }
+ return 0
+}
+
+func (m *OfpPacketOut) GetActions() []*OfpAction {
+ if m != nil {
+ return m.Actions
+ }
+ return nil
+}
+
+func (m *OfpPacketOut) GetData() []byte {
+ if m != nil {
+ return m.Data
+ }
+ return nil
+}
+
+// Packet received on port (datapath -> controller).
+type OfpPacketIn struct {
+ //ofp_header header;
+ BufferId uint32 `protobuf:"varint,1,opt,name=buffer_id,json=bufferId,proto3" json:"buffer_id,omitempty"`
+ Reason OfpPacketInReason `protobuf:"varint,2,opt,name=reason,proto3,enum=openflow_13.OfpPacketInReason" json:"reason,omitempty"`
+ TableId uint32 `protobuf:"varint,3,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
+ Cookie uint64 `protobuf:"varint,4,opt,name=cookie,proto3" json:"cookie,omitempty"`
+ Match *OfpMatch `protobuf:"bytes,5,opt,name=match,proto3" json:"match,omitempty"`
+ Data []byte `protobuf:"bytes,6,opt,name=data,proto3" json:"data,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpPacketIn) Reset() { *m = OfpPacketIn{} }
+func (m *OfpPacketIn) String() string { return proto.CompactTextString(m) }
+func (*OfpPacketIn) ProtoMessage() {}
+func (*OfpPacketIn) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{33}
+}
+
+func (m *OfpPacketIn) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpPacketIn.Unmarshal(m, b)
+}
+func (m *OfpPacketIn) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpPacketIn.Marshal(b, m, deterministic)
+}
+func (m *OfpPacketIn) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpPacketIn.Merge(m, src)
+}
+func (m *OfpPacketIn) XXX_Size() int {
+ return xxx_messageInfo_OfpPacketIn.Size(m)
+}
+func (m *OfpPacketIn) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpPacketIn.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpPacketIn proto.InternalMessageInfo
+
+func (m *OfpPacketIn) GetBufferId() uint32 {
+ if m != nil {
+ return m.BufferId
+ }
+ return 0
+}
+
+func (m *OfpPacketIn) GetReason() OfpPacketInReason {
+ if m != nil {
+ return m.Reason
+ }
+ return OfpPacketInReason_OFPR_NO_MATCH
+}
+
+func (m *OfpPacketIn) GetTableId() uint32 {
+ if m != nil {
+ return m.TableId
+ }
+ return 0
+}
+
+func (m *OfpPacketIn) GetCookie() uint64 {
+ if m != nil {
+ return m.Cookie
+ }
+ return 0
+}
+
+func (m *OfpPacketIn) GetMatch() *OfpMatch {
+ if m != nil {
+ return m.Match
+ }
+ return nil
+}
+
+func (m *OfpPacketIn) GetData() []byte {
+ if m != nil {
+ return m.Data
+ }
+ return nil
+}
+
+// Flow removed (datapath -> controller).
+type OfpFlowRemoved struct {
+ //ofp_header header;
+ Cookie uint64 `protobuf:"varint,1,opt,name=cookie,proto3" json:"cookie,omitempty"`
+ Priority uint32 `protobuf:"varint,2,opt,name=priority,proto3" json:"priority,omitempty"`
+ Reason OfpFlowRemovedReason `protobuf:"varint,3,opt,name=reason,proto3,enum=openflow_13.OfpFlowRemovedReason" json:"reason,omitempty"`
+ TableId uint32 `protobuf:"varint,4,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
+ DurationSec uint32 `protobuf:"varint,5,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
+ DurationNsec uint32 `protobuf:"varint,6,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
+ IdleTimeout uint32 `protobuf:"varint,7,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"`
+ HardTimeout uint32 `protobuf:"varint,8,opt,name=hard_timeout,json=hardTimeout,proto3" json:"hard_timeout,omitempty"`
+ PacketCount uint64 `protobuf:"varint,9,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"`
+ ByteCount uint64 `protobuf:"varint,10,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`
+ Match *OfpMatch `protobuf:"bytes,121,opt,name=match,proto3" json:"match,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpFlowRemoved) Reset() { *m = OfpFlowRemoved{} }
+func (m *OfpFlowRemoved) String() string { return proto.CompactTextString(m) }
+func (*OfpFlowRemoved) ProtoMessage() {}
+func (*OfpFlowRemoved) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{34}
+}
+
+func (m *OfpFlowRemoved) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpFlowRemoved.Unmarshal(m, b)
+}
+func (m *OfpFlowRemoved) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpFlowRemoved.Marshal(b, m, deterministic)
+}
+func (m *OfpFlowRemoved) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpFlowRemoved.Merge(m, src)
+}
+func (m *OfpFlowRemoved) XXX_Size() int {
+ return xxx_messageInfo_OfpFlowRemoved.Size(m)
+}
+func (m *OfpFlowRemoved) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpFlowRemoved.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpFlowRemoved proto.InternalMessageInfo
+
+func (m *OfpFlowRemoved) GetCookie() uint64 {
+ if m != nil {
+ return m.Cookie
+ }
+ return 0
+}
+
+func (m *OfpFlowRemoved) GetPriority() uint32 {
+ if m != nil {
+ return m.Priority
+ }
+ return 0
+}
+
+func (m *OfpFlowRemoved) GetReason() OfpFlowRemovedReason {
+ if m != nil {
+ return m.Reason
+ }
+ return OfpFlowRemovedReason_OFPRR_IDLE_TIMEOUT
+}
+
+func (m *OfpFlowRemoved) GetTableId() uint32 {
+ if m != nil {
+ return m.TableId
+ }
+ return 0
+}
+
+func (m *OfpFlowRemoved) GetDurationSec() uint32 {
+ if m != nil {
+ return m.DurationSec
+ }
+ return 0
+}
+
+func (m *OfpFlowRemoved) GetDurationNsec() uint32 {
+ if m != nil {
+ return m.DurationNsec
+ }
+ return 0
+}
+
+func (m *OfpFlowRemoved) GetIdleTimeout() uint32 {
+ if m != nil {
+ return m.IdleTimeout
+ }
+ return 0
+}
+
+func (m *OfpFlowRemoved) GetHardTimeout() uint32 {
+ if m != nil {
+ return m.HardTimeout
+ }
+ return 0
+}
+
+func (m *OfpFlowRemoved) GetPacketCount() uint64 {
+ if m != nil {
+ return m.PacketCount
+ }
+ return 0
+}
+
+func (m *OfpFlowRemoved) GetByteCount() uint64 {
+ if m != nil {
+ return m.ByteCount
+ }
+ return 0
+}
+
+func (m *OfpFlowRemoved) GetMatch() *OfpMatch {
+ if m != nil {
+ return m.Match
+ }
+ return nil
+}
+
+// Common header for all meter bands
+type OfpMeterBandHeader struct {
+ Type OfpMeterBandType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpMeterBandType" json:"type,omitempty"`
+ Rate uint32 `protobuf:"varint,2,opt,name=rate,proto3" json:"rate,omitempty"`
+ BurstSize uint32 `protobuf:"varint,3,opt,name=burst_size,json=burstSize,proto3" json:"burst_size,omitempty"`
+ // Types that are valid to be assigned to Data:
+ // *OfpMeterBandHeader_Drop
+ // *OfpMeterBandHeader_DscpRemark
+ // *OfpMeterBandHeader_Experimenter
+ Data isOfpMeterBandHeader_Data `protobuf_oneof:"data"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpMeterBandHeader) Reset() { *m = OfpMeterBandHeader{} }
+func (m *OfpMeterBandHeader) String() string { return proto.CompactTextString(m) }
+func (*OfpMeterBandHeader) ProtoMessage() {}
+func (*OfpMeterBandHeader) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{35}
+}
+
+func (m *OfpMeterBandHeader) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpMeterBandHeader.Unmarshal(m, b)
+}
+func (m *OfpMeterBandHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpMeterBandHeader.Marshal(b, m, deterministic)
+}
+func (m *OfpMeterBandHeader) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpMeterBandHeader.Merge(m, src)
+}
+func (m *OfpMeterBandHeader) XXX_Size() int {
+ return xxx_messageInfo_OfpMeterBandHeader.Size(m)
+}
+func (m *OfpMeterBandHeader) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpMeterBandHeader.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpMeterBandHeader proto.InternalMessageInfo
+
+func (m *OfpMeterBandHeader) GetType() OfpMeterBandType {
+ if m != nil {
+ return m.Type
+ }
+ return OfpMeterBandType_OFPMBT_INVALID
+}
+
+func (m *OfpMeterBandHeader) GetRate() uint32 {
+ if m != nil {
+ return m.Rate
+ }
+ return 0
+}
+
+func (m *OfpMeterBandHeader) GetBurstSize() uint32 {
+ if m != nil {
+ return m.BurstSize
+ }
+ return 0
+}
+
+type isOfpMeterBandHeader_Data interface {
+ isOfpMeterBandHeader_Data()
+}
+
+type OfpMeterBandHeader_Drop struct {
+ Drop *OfpMeterBandDrop `protobuf:"bytes,4,opt,name=drop,proto3,oneof"`
+}
+
+type OfpMeterBandHeader_DscpRemark struct {
+ DscpRemark *OfpMeterBandDscpRemark `protobuf:"bytes,5,opt,name=dscp_remark,json=dscpRemark,proto3,oneof"`
+}
+
+type OfpMeterBandHeader_Experimenter struct {
+ Experimenter *OfpMeterBandExperimenter `protobuf:"bytes,6,opt,name=experimenter,proto3,oneof"`
+}
+
+func (*OfpMeterBandHeader_Drop) isOfpMeterBandHeader_Data() {}
+
+func (*OfpMeterBandHeader_DscpRemark) isOfpMeterBandHeader_Data() {}
+
+func (*OfpMeterBandHeader_Experimenter) isOfpMeterBandHeader_Data() {}
+
+func (m *OfpMeterBandHeader) GetData() isOfpMeterBandHeader_Data {
+ if m != nil {
+ return m.Data
+ }
+ return nil
+}
+
+func (m *OfpMeterBandHeader) GetDrop() *OfpMeterBandDrop {
+ if x, ok := m.GetData().(*OfpMeterBandHeader_Drop); ok {
+ return x.Drop
+ }
+ return nil
+}
+
+func (m *OfpMeterBandHeader) GetDscpRemark() *OfpMeterBandDscpRemark {
+ if x, ok := m.GetData().(*OfpMeterBandHeader_DscpRemark); ok {
+ return x.DscpRemark
+ }
+ return nil
+}
+
+func (m *OfpMeterBandHeader) GetExperimenter() *OfpMeterBandExperimenter {
+ if x, ok := m.GetData().(*OfpMeterBandHeader_Experimenter); ok {
+ return x.Experimenter
+ }
+ return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*OfpMeterBandHeader) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*OfpMeterBandHeader_Drop)(nil),
+ (*OfpMeterBandHeader_DscpRemark)(nil),
+ (*OfpMeterBandHeader_Experimenter)(nil),
+ }
+}
+
+// OFPMBT_DROP band - drop packets
+type OfpMeterBandDrop struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpMeterBandDrop) Reset() { *m = OfpMeterBandDrop{} }
+func (m *OfpMeterBandDrop) String() string { return proto.CompactTextString(m) }
+func (*OfpMeterBandDrop) ProtoMessage() {}
+func (*OfpMeterBandDrop) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{36}
+}
+
+func (m *OfpMeterBandDrop) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpMeterBandDrop.Unmarshal(m, b)
+}
+func (m *OfpMeterBandDrop) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpMeterBandDrop.Marshal(b, m, deterministic)
+}
+func (m *OfpMeterBandDrop) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpMeterBandDrop.Merge(m, src)
+}
+func (m *OfpMeterBandDrop) XXX_Size() int {
+ return xxx_messageInfo_OfpMeterBandDrop.Size(m)
+}
+func (m *OfpMeterBandDrop) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpMeterBandDrop.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpMeterBandDrop proto.InternalMessageInfo
+
+// OFPMBT_DSCP_REMARK band - Remark DSCP in the IP header
+type OfpMeterBandDscpRemark struct {
+ PrecLevel uint32 `protobuf:"varint,1,opt,name=prec_level,json=precLevel,proto3" json:"prec_level,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpMeterBandDscpRemark) Reset() { *m = OfpMeterBandDscpRemark{} }
+func (m *OfpMeterBandDscpRemark) String() string { return proto.CompactTextString(m) }
+func (*OfpMeterBandDscpRemark) ProtoMessage() {}
+func (*OfpMeterBandDscpRemark) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{37}
+}
+
+func (m *OfpMeterBandDscpRemark) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpMeterBandDscpRemark.Unmarshal(m, b)
+}
+func (m *OfpMeterBandDscpRemark) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpMeterBandDscpRemark.Marshal(b, m, deterministic)
+}
+func (m *OfpMeterBandDscpRemark) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpMeterBandDscpRemark.Merge(m, src)
+}
+func (m *OfpMeterBandDscpRemark) XXX_Size() int {
+ return xxx_messageInfo_OfpMeterBandDscpRemark.Size(m)
+}
+func (m *OfpMeterBandDscpRemark) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpMeterBandDscpRemark.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpMeterBandDscpRemark proto.InternalMessageInfo
+
+func (m *OfpMeterBandDscpRemark) GetPrecLevel() uint32 {
+ if m != nil {
+ return m.PrecLevel
+ }
+ return 0
+}
+
+// OFPMBT_EXPERIMENTER band - Experimenter type.
+// The rest of the band is experimenter-defined.
+type OfpMeterBandExperimenter struct {
+ Experimenter uint32 `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpMeterBandExperimenter) Reset() { *m = OfpMeterBandExperimenter{} }
+func (m *OfpMeterBandExperimenter) String() string { return proto.CompactTextString(m) }
+func (*OfpMeterBandExperimenter) ProtoMessage() {}
+func (*OfpMeterBandExperimenter) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{38}
+}
+
+func (m *OfpMeterBandExperimenter) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpMeterBandExperimenter.Unmarshal(m, b)
+}
+func (m *OfpMeterBandExperimenter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpMeterBandExperimenter.Marshal(b, m, deterministic)
+}
+func (m *OfpMeterBandExperimenter) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpMeterBandExperimenter.Merge(m, src)
+}
+func (m *OfpMeterBandExperimenter) XXX_Size() int {
+ return xxx_messageInfo_OfpMeterBandExperimenter.Size(m)
+}
+func (m *OfpMeterBandExperimenter) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpMeterBandExperimenter.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpMeterBandExperimenter proto.InternalMessageInfo
+
+func (m *OfpMeterBandExperimenter) GetExperimenter() uint32 {
+ if m != nil {
+ return m.Experimenter
+ }
+ return 0
+}
+
+// Meter configuration. OFPT_METER_MOD.
+type OfpMeterMod struct {
+ Command OfpMeterModCommand `protobuf:"varint,1,opt,name=command,proto3,enum=openflow_13.OfpMeterModCommand" json:"command,omitempty"`
+ Flags uint32 `protobuf:"varint,2,opt,name=flags,proto3" json:"flags,omitempty"`
+ MeterId uint32 `protobuf:"varint,3,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"`
+ Bands []*OfpMeterBandHeader `protobuf:"bytes,4,rep,name=bands,proto3" json:"bands,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpMeterMod) Reset() { *m = OfpMeterMod{} }
+func (m *OfpMeterMod) String() string { return proto.CompactTextString(m) }
+func (*OfpMeterMod) ProtoMessage() {}
+func (*OfpMeterMod) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{39}
+}
+
+func (m *OfpMeterMod) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpMeterMod.Unmarshal(m, b)
+}
+func (m *OfpMeterMod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpMeterMod.Marshal(b, m, deterministic)
+}
+func (m *OfpMeterMod) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpMeterMod.Merge(m, src)
+}
+func (m *OfpMeterMod) XXX_Size() int {
+ return xxx_messageInfo_OfpMeterMod.Size(m)
+}
+func (m *OfpMeterMod) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpMeterMod.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpMeterMod proto.InternalMessageInfo
+
+func (m *OfpMeterMod) GetCommand() OfpMeterModCommand {
+ if m != nil {
+ return m.Command
+ }
+ return OfpMeterModCommand_OFPMC_ADD
+}
+
+func (m *OfpMeterMod) GetFlags() uint32 {
+ if m != nil {
+ return m.Flags
+ }
+ return 0
+}
+
+func (m *OfpMeterMod) GetMeterId() uint32 {
+ if m != nil {
+ return m.MeterId
+ }
+ return 0
+}
+
+func (m *OfpMeterMod) GetBands() []*OfpMeterBandHeader {
+ if m != nil {
+ return m.Bands
+ }
+ return nil
+}
+
+// OFPT_ERROR: Error message (datapath -> controller).
+type OfpErrorMsg struct {
+ //ofp_header header;
+ Type uint32 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`
+ Code uint32 `protobuf:"varint,2,opt,name=code,proto3" json:"code,omitempty"`
+ Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpErrorMsg) Reset() { *m = OfpErrorMsg{} }
+func (m *OfpErrorMsg) String() string { return proto.CompactTextString(m) }
+func (*OfpErrorMsg) ProtoMessage() {}
+func (*OfpErrorMsg) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{40}
+}
+
+func (m *OfpErrorMsg) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpErrorMsg.Unmarshal(m, b)
+}
+func (m *OfpErrorMsg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpErrorMsg.Marshal(b, m, deterministic)
+}
+func (m *OfpErrorMsg) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpErrorMsg.Merge(m, src)
+}
+func (m *OfpErrorMsg) XXX_Size() int {
+ return xxx_messageInfo_OfpErrorMsg.Size(m)
+}
+func (m *OfpErrorMsg) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpErrorMsg.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpErrorMsg proto.InternalMessageInfo
+
+func (m *OfpErrorMsg) GetType() uint32 {
+ if m != nil {
+ return m.Type
+ }
+ return 0
+}
+
+func (m *OfpErrorMsg) GetCode() uint32 {
+ if m != nil {
+ return m.Code
+ }
+ return 0
+}
+
+func (m *OfpErrorMsg) GetData() []byte {
+ if m != nil {
+ return m.Data
+ }
+ return nil
+}
+
+// OFPET_EXPERIMENTER: Error message (datapath -> controller).
+type OfpErrorExperimenterMsg struct {
+ Type uint32 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`
+ ExpType uint32 `protobuf:"varint,2,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"`
+ Experimenter uint32 `protobuf:"varint,3,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+ Data []byte `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpErrorExperimenterMsg) Reset() { *m = OfpErrorExperimenterMsg{} }
+func (m *OfpErrorExperimenterMsg) String() string { return proto.CompactTextString(m) }
+func (*OfpErrorExperimenterMsg) ProtoMessage() {}
+func (*OfpErrorExperimenterMsg) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{41}
+}
+
+func (m *OfpErrorExperimenterMsg) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpErrorExperimenterMsg.Unmarshal(m, b)
+}
+func (m *OfpErrorExperimenterMsg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpErrorExperimenterMsg.Marshal(b, m, deterministic)
+}
+func (m *OfpErrorExperimenterMsg) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpErrorExperimenterMsg.Merge(m, src)
+}
+func (m *OfpErrorExperimenterMsg) XXX_Size() int {
+ return xxx_messageInfo_OfpErrorExperimenterMsg.Size(m)
+}
+func (m *OfpErrorExperimenterMsg) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpErrorExperimenterMsg.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpErrorExperimenterMsg proto.InternalMessageInfo
+
+func (m *OfpErrorExperimenterMsg) GetType() uint32 {
+ if m != nil {
+ return m.Type
+ }
+ return 0
+}
+
+func (m *OfpErrorExperimenterMsg) GetExpType() uint32 {
+ if m != nil {
+ return m.ExpType
+ }
+ return 0
+}
+
+func (m *OfpErrorExperimenterMsg) GetExperimenter() uint32 {
+ if m != nil {
+ return m.Experimenter
+ }
+ return 0
+}
+
+func (m *OfpErrorExperimenterMsg) GetData() []byte {
+ if m != nil {
+ return m.Data
+ }
+ return nil
+}
+
+type OfpMultipartRequest struct {
+ //ofp_header header;
+ Type OfpMultipartType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpMultipartType" json:"type,omitempty"`
+ Flags uint32 `protobuf:"varint,2,opt,name=flags,proto3" json:"flags,omitempty"`
+ Body []byte `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpMultipartRequest) Reset() { *m = OfpMultipartRequest{} }
+func (m *OfpMultipartRequest) String() string { return proto.CompactTextString(m) }
+func (*OfpMultipartRequest) ProtoMessage() {}
+func (*OfpMultipartRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{42}
+}
+
+func (m *OfpMultipartRequest) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpMultipartRequest.Unmarshal(m, b)
+}
+func (m *OfpMultipartRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpMultipartRequest.Marshal(b, m, deterministic)
+}
+func (m *OfpMultipartRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpMultipartRequest.Merge(m, src)
+}
+func (m *OfpMultipartRequest) XXX_Size() int {
+ return xxx_messageInfo_OfpMultipartRequest.Size(m)
+}
+func (m *OfpMultipartRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpMultipartRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpMultipartRequest proto.InternalMessageInfo
+
+func (m *OfpMultipartRequest) GetType() OfpMultipartType {
+ if m != nil {
+ return m.Type
+ }
+ return OfpMultipartType_OFPMP_DESC
+}
+
+func (m *OfpMultipartRequest) GetFlags() uint32 {
+ if m != nil {
+ return m.Flags
+ }
+ return 0
+}
+
+func (m *OfpMultipartRequest) GetBody() []byte {
+ if m != nil {
+ return m.Body
+ }
+ return nil
+}
+
+type OfpMultipartReply struct {
+ //ofp_header header;
+ Type OfpMultipartType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpMultipartType" json:"type,omitempty"`
+ Flags uint32 `protobuf:"varint,2,opt,name=flags,proto3" json:"flags,omitempty"`
+ Body []byte `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpMultipartReply) Reset() { *m = OfpMultipartReply{} }
+func (m *OfpMultipartReply) String() string { return proto.CompactTextString(m) }
+func (*OfpMultipartReply) ProtoMessage() {}
+func (*OfpMultipartReply) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{43}
+}
+
+func (m *OfpMultipartReply) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpMultipartReply.Unmarshal(m, b)
+}
+func (m *OfpMultipartReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpMultipartReply.Marshal(b, m, deterministic)
+}
+func (m *OfpMultipartReply) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpMultipartReply.Merge(m, src)
+}
+func (m *OfpMultipartReply) XXX_Size() int {
+ return xxx_messageInfo_OfpMultipartReply.Size(m)
+}
+func (m *OfpMultipartReply) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpMultipartReply.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpMultipartReply proto.InternalMessageInfo
+
+func (m *OfpMultipartReply) GetType() OfpMultipartType {
+ if m != nil {
+ return m.Type
+ }
+ return OfpMultipartType_OFPMP_DESC
+}
+
+func (m *OfpMultipartReply) GetFlags() uint32 {
+ if m != nil {
+ return m.Flags
+ }
+ return 0
+}
+
+func (m *OfpMultipartReply) GetBody() []byte {
+ if m != nil {
+ return m.Body
+ }
+ return nil
+}
+
+// Body of reply to OFPMP_DESC request. Each entry is a NULL-terminated
+// ASCII string.
+type OfpDesc struct {
+ MfrDesc string `protobuf:"bytes,1,opt,name=mfr_desc,json=mfrDesc,proto3" json:"mfr_desc,omitempty"`
+ HwDesc string `protobuf:"bytes,2,opt,name=hw_desc,json=hwDesc,proto3" json:"hw_desc,omitempty"`
+ SwDesc string `protobuf:"bytes,3,opt,name=sw_desc,json=swDesc,proto3" json:"sw_desc,omitempty"`
+ SerialNum string `protobuf:"bytes,4,opt,name=serial_num,json=serialNum,proto3" json:"serial_num,omitempty"`
+ DpDesc string `protobuf:"bytes,5,opt,name=dp_desc,json=dpDesc,proto3" json:"dp_desc,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpDesc) Reset() { *m = OfpDesc{} }
+func (m *OfpDesc) String() string { return proto.CompactTextString(m) }
+func (*OfpDesc) ProtoMessage() {}
+func (*OfpDesc) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{44}
+}
+
+func (m *OfpDesc) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpDesc.Unmarshal(m, b)
+}
+func (m *OfpDesc) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpDesc.Marshal(b, m, deterministic)
+}
+func (m *OfpDesc) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpDesc.Merge(m, src)
+}
+func (m *OfpDesc) XXX_Size() int {
+ return xxx_messageInfo_OfpDesc.Size(m)
+}
+func (m *OfpDesc) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpDesc.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpDesc proto.InternalMessageInfo
+
+func (m *OfpDesc) GetMfrDesc() string {
+ if m != nil {
+ return m.MfrDesc
+ }
+ return ""
+}
+
+func (m *OfpDesc) GetHwDesc() string {
+ if m != nil {
+ return m.HwDesc
+ }
+ return ""
+}
+
+func (m *OfpDesc) GetSwDesc() string {
+ if m != nil {
+ return m.SwDesc
+ }
+ return ""
+}
+
+func (m *OfpDesc) GetSerialNum() string {
+ if m != nil {
+ return m.SerialNum
+ }
+ return ""
+}
+
+func (m *OfpDesc) GetDpDesc() string {
+ if m != nil {
+ return m.DpDesc
+ }
+ return ""
+}
+
+// Body for ofp_multipart_request of type OFPMP_FLOW.
+type OfpFlowStatsRequest struct {
+ TableId uint32 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
+ OutPort uint32 `protobuf:"varint,2,opt,name=out_port,json=outPort,proto3" json:"out_port,omitempty"`
+ OutGroup uint32 `protobuf:"varint,3,opt,name=out_group,json=outGroup,proto3" json:"out_group,omitempty"`
+ Cookie uint64 `protobuf:"varint,4,opt,name=cookie,proto3" json:"cookie,omitempty"`
+ CookieMask uint64 `protobuf:"varint,5,opt,name=cookie_mask,json=cookieMask,proto3" json:"cookie_mask,omitempty"`
+ Match *OfpMatch `protobuf:"bytes,6,opt,name=match,proto3" json:"match,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpFlowStatsRequest) Reset() { *m = OfpFlowStatsRequest{} }
+func (m *OfpFlowStatsRequest) String() string { return proto.CompactTextString(m) }
+func (*OfpFlowStatsRequest) ProtoMessage() {}
+func (*OfpFlowStatsRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{45}
+}
+
+func (m *OfpFlowStatsRequest) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpFlowStatsRequest.Unmarshal(m, b)
+}
+func (m *OfpFlowStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpFlowStatsRequest.Marshal(b, m, deterministic)
+}
+func (m *OfpFlowStatsRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpFlowStatsRequest.Merge(m, src)
+}
+func (m *OfpFlowStatsRequest) XXX_Size() int {
+ return xxx_messageInfo_OfpFlowStatsRequest.Size(m)
+}
+func (m *OfpFlowStatsRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpFlowStatsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpFlowStatsRequest proto.InternalMessageInfo
+
+func (m *OfpFlowStatsRequest) GetTableId() uint32 {
+ if m != nil {
+ return m.TableId
+ }
+ return 0
+}
+
+func (m *OfpFlowStatsRequest) GetOutPort() uint32 {
+ if m != nil {
+ return m.OutPort
+ }
+ return 0
+}
+
+func (m *OfpFlowStatsRequest) GetOutGroup() uint32 {
+ if m != nil {
+ return m.OutGroup
+ }
+ return 0
+}
+
+func (m *OfpFlowStatsRequest) GetCookie() uint64 {
+ if m != nil {
+ return m.Cookie
+ }
+ return 0
+}
+
+func (m *OfpFlowStatsRequest) GetCookieMask() uint64 {
+ if m != nil {
+ return m.CookieMask
+ }
+ return 0
+}
+
+func (m *OfpFlowStatsRequest) GetMatch() *OfpMatch {
+ if m != nil {
+ return m.Match
+ }
+ return nil
+}
+
+// Body of reply to OFPMP_FLOW request.
+type OfpFlowStats struct {
+ Id uint64 `protobuf:"varint,14,opt,name=id,proto3" json:"id,omitempty"`
+ TableId uint32 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
+ DurationSec uint32 `protobuf:"varint,2,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
+ DurationNsec uint32 `protobuf:"varint,3,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
+ Priority uint32 `protobuf:"varint,4,opt,name=priority,proto3" json:"priority,omitempty"`
+ IdleTimeout uint32 `protobuf:"varint,5,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"`
+ HardTimeout uint32 `protobuf:"varint,6,opt,name=hard_timeout,json=hardTimeout,proto3" json:"hard_timeout,omitempty"`
+ Flags uint32 `protobuf:"varint,7,opt,name=flags,proto3" json:"flags,omitempty"`
+ Cookie uint64 `protobuf:"varint,8,opt,name=cookie,proto3" json:"cookie,omitempty"`
+ PacketCount uint64 `protobuf:"varint,9,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"`
+ ByteCount uint64 `protobuf:"varint,10,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`
+ Match *OfpMatch `protobuf:"bytes,12,opt,name=match,proto3" json:"match,omitempty"`
+ Instructions []*OfpInstruction `protobuf:"bytes,13,rep,name=instructions,proto3" json:"instructions,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpFlowStats) Reset() { *m = OfpFlowStats{} }
+func (m *OfpFlowStats) String() string { return proto.CompactTextString(m) }
+func (*OfpFlowStats) ProtoMessage() {}
+func (*OfpFlowStats) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{46}
+}
+
+func (m *OfpFlowStats) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpFlowStats.Unmarshal(m, b)
+}
+func (m *OfpFlowStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpFlowStats.Marshal(b, m, deterministic)
+}
+func (m *OfpFlowStats) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpFlowStats.Merge(m, src)
+}
+func (m *OfpFlowStats) XXX_Size() int {
+ return xxx_messageInfo_OfpFlowStats.Size(m)
+}
+func (m *OfpFlowStats) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpFlowStats.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpFlowStats proto.InternalMessageInfo
+
+func (m *OfpFlowStats) GetId() uint64 {
+ if m != nil {
+ return m.Id
+ }
+ return 0
+}
+
+func (m *OfpFlowStats) GetTableId() uint32 {
+ if m != nil {
+ return m.TableId
+ }
+ return 0
+}
+
+func (m *OfpFlowStats) GetDurationSec() uint32 {
+ if m != nil {
+ return m.DurationSec
+ }
+ return 0
+}
+
+func (m *OfpFlowStats) GetDurationNsec() uint32 {
+ if m != nil {
+ return m.DurationNsec
+ }
+ return 0
+}
+
+func (m *OfpFlowStats) GetPriority() uint32 {
+ if m != nil {
+ return m.Priority
+ }
+ return 0
+}
+
+func (m *OfpFlowStats) GetIdleTimeout() uint32 {
+ if m != nil {
+ return m.IdleTimeout
+ }
+ return 0
+}
+
+func (m *OfpFlowStats) GetHardTimeout() uint32 {
+ if m != nil {
+ return m.HardTimeout
+ }
+ return 0
+}
+
+func (m *OfpFlowStats) GetFlags() uint32 {
+ if m != nil {
+ return m.Flags
+ }
+ return 0
+}
+
+func (m *OfpFlowStats) GetCookie() uint64 {
+ if m != nil {
+ return m.Cookie
+ }
+ return 0
+}
+
+func (m *OfpFlowStats) GetPacketCount() uint64 {
+ if m != nil {
+ return m.PacketCount
+ }
+ return 0
+}
+
+func (m *OfpFlowStats) GetByteCount() uint64 {
+ if m != nil {
+ return m.ByteCount
+ }
+ return 0
+}
+
+func (m *OfpFlowStats) GetMatch() *OfpMatch {
+ if m != nil {
+ return m.Match
+ }
+ return nil
+}
+
+func (m *OfpFlowStats) GetInstructions() []*OfpInstruction {
+ if m != nil {
+ return m.Instructions
+ }
+ return nil
+}
+
+// Body for ofp_multipart_request of type OFPMP_AGGREGATE.
+type OfpAggregateStatsRequest struct {
+ TableId uint32 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
+ OutPort uint32 `protobuf:"varint,2,opt,name=out_port,json=outPort,proto3" json:"out_port,omitempty"`
+ OutGroup uint32 `protobuf:"varint,3,opt,name=out_group,json=outGroup,proto3" json:"out_group,omitempty"`
+ Cookie uint64 `protobuf:"varint,4,opt,name=cookie,proto3" json:"cookie,omitempty"`
+ CookieMask uint64 `protobuf:"varint,5,opt,name=cookie_mask,json=cookieMask,proto3" json:"cookie_mask,omitempty"`
+ Match *OfpMatch `protobuf:"bytes,6,opt,name=match,proto3" json:"match,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpAggregateStatsRequest) Reset() { *m = OfpAggregateStatsRequest{} }
+func (m *OfpAggregateStatsRequest) String() string { return proto.CompactTextString(m) }
+func (*OfpAggregateStatsRequest) ProtoMessage() {}
+func (*OfpAggregateStatsRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{47}
+}
+
+func (m *OfpAggregateStatsRequest) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpAggregateStatsRequest.Unmarshal(m, b)
+}
+func (m *OfpAggregateStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpAggregateStatsRequest.Marshal(b, m, deterministic)
+}
+func (m *OfpAggregateStatsRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpAggregateStatsRequest.Merge(m, src)
+}
+func (m *OfpAggregateStatsRequest) XXX_Size() int {
+ return xxx_messageInfo_OfpAggregateStatsRequest.Size(m)
+}
+func (m *OfpAggregateStatsRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpAggregateStatsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpAggregateStatsRequest proto.InternalMessageInfo
+
+func (m *OfpAggregateStatsRequest) GetTableId() uint32 {
+ if m != nil {
+ return m.TableId
+ }
+ return 0
+}
+
+func (m *OfpAggregateStatsRequest) GetOutPort() uint32 {
+ if m != nil {
+ return m.OutPort
+ }
+ return 0
+}
+
+func (m *OfpAggregateStatsRequest) GetOutGroup() uint32 {
+ if m != nil {
+ return m.OutGroup
+ }
+ return 0
+}
+
+func (m *OfpAggregateStatsRequest) GetCookie() uint64 {
+ if m != nil {
+ return m.Cookie
+ }
+ return 0
+}
+
+func (m *OfpAggregateStatsRequest) GetCookieMask() uint64 {
+ if m != nil {
+ return m.CookieMask
+ }
+ return 0
+}
+
+func (m *OfpAggregateStatsRequest) GetMatch() *OfpMatch {
+ if m != nil {
+ return m.Match
+ }
+ return nil
+}
+
+// Body of reply to OFPMP_AGGREGATE request.
+type OfpAggregateStatsReply struct {
+ PacketCount uint64 `protobuf:"varint,1,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"`
+ ByteCount uint64 `protobuf:"varint,2,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`
+ FlowCount uint32 `protobuf:"varint,3,opt,name=flow_count,json=flowCount,proto3" json:"flow_count,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpAggregateStatsReply) Reset() { *m = OfpAggregateStatsReply{} }
+func (m *OfpAggregateStatsReply) String() string { return proto.CompactTextString(m) }
+func (*OfpAggregateStatsReply) ProtoMessage() {}
+func (*OfpAggregateStatsReply) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{48}
+}
+
+func (m *OfpAggregateStatsReply) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpAggregateStatsReply.Unmarshal(m, b)
+}
+func (m *OfpAggregateStatsReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpAggregateStatsReply.Marshal(b, m, deterministic)
+}
+func (m *OfpAggregateStatsReply) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpAggregateStatsReply.Merge(m, src)
+}
+func (m *OfpAggregateStatsReply) XXX_Size() int {
+ return xxx_messageInfo_OfpAggregateStatsReply.Size(m)
+}
+func (m *OfpAggregateStatsReply) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpAggregateStatsReply.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpAggregateStatsReply proto.InternalMessageInfo
+
+func (m *OfpAggregateStatsReply) GetPacketCount() uint64 {
+ if m != nil {
+ return m.PacketCount
+ }
+ return 0
+}
+
+func (m *OfpAggregateStatsReply) GetByteCount() uint64 {
+ if m != nil {
+ return m.ByteCount
+ }
+ return 0
+}
+
+func (m *OfpAggregateStatsReply) GetFlowCount() uint32 {
+ if m != nil {
+ return m.FlowCount
+ }
+ return 0
+}
+
+// Common header for all Table Feature Properties
+type OfpTableFeatureProperty struct {
+ Type OfpTableFeaturePropType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpTableFeaturePropType" json:"type,omitempty"`
+ // Types that are valid to be assigned to Value:
+ // *OfpTableFeatureProperty_Instructions
+ // *OfpTableFeatureProperty_NextTables
+ // *OfpTableFeatureProperty_Actions
+ // *OfpTableFeatureProperty_Oxm
+ // *OfpTableFeatureProperty_Experimenter
+ Value isOfpTableFeatureProperty_Value `protobuf_oneof:"value"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpTableFeatureProperty) Reset() { *m = OfpTableFeatureProperty{} }
+func (m *OfpTableFeatureProperty) String() string { return proto.CompactTextString(m) }
+func (*OfpTableFeatureProperty) ProtoMessage() {}
+func (*OfpTableFeatureProperty) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{49}
+}
+
+func (m *OfpTableFeatureProperty) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpTableFeatureProperty.Unmarshal(m, b)
+}
+func (m *OfpTableFeatureProperty) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpTableFeatureProperty.Marshal(b, m, deterministic)
+}
+func (m *OfpTableFeatureProperty) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpTableFeatureProperty.Merge(m, src)
+}
+func (m *OfpTableFeatureProperty) XXX_Size() int {
+ return xxx_messageInfo_OfpTableFeatureProperty.Size(m)
+}
+func (m *OfpTableFeatureProperty) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpTableFeatureProperty.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpTableFeatureProperty proto.InternalMessageInfo
+
+func (m *OfpTableFeatureProperty) GetType() OfpTableFeaturePropType {
+ if m != nil {
+ return m.Type
+ }
+ return OfpTableFeaturePropType_OFPTFPT_INSTRUCTIONS
+}
+
+type isOfpTableFeatureProperty_Value interface {
+ isOfpTableFeatureProperty_Value()
+}
+
+type OfpTableFeatureProperty_Instructions struct {
+ Instructions *OfpTableFeaturePropInstructions `protobuf:"bytes,2,opt,name=instructions,proto3,oneof"`
+}
+
+type OfpTableFeatureProperty_NextTables struct {
+ NextTables *OfpTableFeaturePropNextTables `protobuf:"bytes,3,opt,name=next_tables,json=nextTables,proto3,oneof"`
+}
+
+type OfpTableFeatureProperty_Actions struct {
+ Actions *OfpTableFeaturePropActions `protobuf:"bytes,4,opt,name=actions,proto3,oneof"`
+}
+
+type OfpTableFeatureProperty_Oxm struct {
+ Oxm *OfpTableFeaturePropOxm `protobuf:"bytes,5,opt,name=oxm,proto3,oneof"`
+}
+
+type OfpTableFeatureProperty_Experimenter struct {
+ Experimenter *OfpTableFeaturePropExperimenter `protobuf:"bytes,6,opt,name=experimenter,proto3,oneof"`
+}
+
+func (*OfpTableFeatureProperty_Instructions) isOfpTableFeatureProperty_Value() {}
+
+func (*OfpTableFeatureProperty_NextTables) isOfpTableFeatureProperty_Value() {}
+
+func (*OfpTableFeatureProperty_Actions) isOfpTableFeatureProperty_Value() {}
+
+func (*OfpTableFeatureProperty_Oxm) isOfpTableFeatureProperty_Value() {}
+
+func (*OfpTableFeatureProperty_Experimenter) isOfpTableFeatureProperty_Value() {}
+
+func (m *OfpTableFeatureProperty) GetValue() isOfpTableFeatureProperty_Value {
+ if m != nil {
+ return m.Value
+ }
+ return nil
+}
+
+func (m *OfpTableFeatureProperty) GetInstructions() *OfpTableFeaturePropInstructions {
+ if x, ok := m.GetValue().(*OfpTableFeatureProperty_Instructions); ok {
+ return x.Instructions
+ }
+ return nil
+}
+
+func (m *OfpTableFeatureProperty) GetNextTables() *OfpTableFeaturePropNextTables {
+ if x, ok := m.GetValue().(*OfpTableFeatureProperty_NextTables); ok {
+ return x.NextTables
+ }
+ return nil
+}
+
+func (m *OfpTableFeatureProperty) GetActions() *OfpTableFeaturePropActions {
+ if x, ok := m.GetValue().(*OfpTableFeatureProperty_Actions); ok {
+ return x.Actions
+ }
+ return nil
+}
+
+func (m *OfpTableFeatureProperty) GetOxm() *OfpTableFeaturePropOxm {
+ if x, ok := m.GetValue().(*OfpTableFeatureProperty_Oxm); ok {
+ return x.Oxm
+ }
+ return nil
+}
+
+func (m *OfpTableFeatureProperty) GetExperimenter() *OfpTableFeaturePropExperimenter {
+ if x, ok := m.GetValue().(*OfpTableFeatureProperty_Experimenter); ok {
+ return x.Experimenter
+ }
+ return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*OfpTableFeatureProperty) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*OfpTableFeatureProperty_Instructions)(nil),
+ (*OfpTableFeatureProperty_NextTables)(nil),
+ (*OfpTableFeatureProperty_Actions)(nil),
+ (*OfpTableFeatureProperty_Oxm)(nil),
+ (*OfpTableFeatureProperty_Experimenter)(nil),
+ }
+}
+
+// Instructions property
+type OfpTableFeaturePropInstructions struct {
+ // One of OFPTFPT_INSTRUCTIONS,
+ //OFPTFPT_INSTRUCTIONS_MISS.
+ Instructions []*OfpInstruction `protobuf:"bytes,1,rep,name=instructions,proto3" json:"instructions,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpTableFeaturePropInstructions) Reset() { *m = OfpTableFeaturePropInstructions{} }
+func (m *OfpTableFeaturePropInstructions) String() string { return proto.CompactTextString(m) }
+func (*OfpTableFeaturePropInstructions) ProtoMessage() {}
+func (*OfpTableFeaturePropInstructions) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{50}
+}
+
+func (m *OfpTableFeaturePropInstructions) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpTableFeaturePropInstructions.Unmarshal(m, b)
+}
+func (m *OfpTableFeaturePropInstructions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpTableFeaturePropInstructions.Marshal(b, m, deterministic)
+}
+func (m *OfpTableFeaturePropInstructions) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpTableFeaturePropInstructions.Merge(m, src)
+}
+func (m *OfpTableFeaturePropInstructions) XXX_Size() int {
+ return xxx_messageInfo_OfpTableFeaturePropInstructions.Size(m)
+}
+func (m *OfpTableFeaturePropInstructions) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpTableFeaturePropInstructions.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpTableFeaturePropInstructions proto.InternalMessageInfo
+
+func (m *OfpTableFeaturePropInstructions) GetInstructions() []*OfpInstruction {
+ if m != nil {
+ return m.Instructions
+ }
+ return nil
+}
+
+// Next Tables property
+type OfpTableFeaturePropNextTables struct {
+ // One of OFPTFPT_NEXT_TABLES,
+ //OFPTFPT_NEXT_TABLES_MISS.
+ NextTableIds []uint32 `protobuf:"varint,1,rep,packed,name=next_table_ids,json=nextTableIds,proto3" json:"next_table_ids,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpTableFeaturePropNextTables) Reset() { *m = OfpTableFeaturePropNextTables{} }
+func (m *OfpTableFeaturePropNextTables) String() string { return proto.CompactTextString(m) }
+func (*OfpTableFeaturePropNextTables) ProtoMessage() {}
+func (*OfpTableFeaturePropNextTables) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{51}
+}
+
+func (m *OfpTableFeaturePropNextTables) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpTableFeaturePropNextTables.Unmarshal(m, b)
+}
+func (m *OfpTableFeaturePropNextTables) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpTableFeaturePropNextTables.Marshal(b, m, deterministic)
+}
+func (m *OfpTableFeaturePropNextTables) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpTableFeaturePropNextTables.Merge(m, src)
+}
+func (m *OfpTableFeaturePropNextTables) XXX_Size() int {
+ return xxx_messageInfo_OfpTableFeaturePropNextTables.Size(m)
+}
+func (m *OfpTableFeaturePropNextTables) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpTableFeaturePropNextTables.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpTableFeaturePropNextTables proto.InternalMessageInfo
+
+func (m *OfpTableFeaturePropNextTables) GetNextTableIds() []uint32 {
+ if m != nil {
+ return m.NextTableIds
+ }
+ return nil
+}
+
+// Actions property
+type OfpTableFeaturePropActions struct {
+ // One of OFPTFPT_WRITE_ACTIONS,
+ //OFPTFPT_WRITE_ACTIONS_MISS,
+ //OFPTFPT_APPLY_ACTIONS,
+ //OFPTFPT_APPLY_ACTIONS_MISS.
+ Actions []*OfpAction `protobuf:"bytes,1,rep,name=actions,proto3" json:"actions,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpTableFeaturePropActions) Reset() { *m = OfpTableFeaturePropActions{} }
+func (m *OfpTableFeaturePropActions) String() string { return proto.CompactTextString(m) }
+func (*OfpTableFeaturePropActions) ProtoMessage() {}
+func (*OfpTableFeaturePropActions) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{52}
+}
+
+func (m *OfpTableFeaturePropActions) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpTableFeaturePropActions.Unmarshal(m, b)
+}
+func (m *OfpTableFeaturePropActions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpTableFeaturePropActions.Marshal(b, m, deterministic)
+}
+func (m *OfpTableFeaturePropActions) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpTableFeaturePropActions.Merge(m, src)
+}
+func (m *OfpTableFeaturePropActions) XXX_Size() int {
+ return xxx_messageInfo_OfpTableFeaturePropActions.Size(m)
+}
+func (m *OfpTableFeaturePropActions) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpTableFeaturePropActions.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpTableFeaturePropActions proto.InternalMessageInfo
+
+func (m *OfpTableFeaturePropActions) GetActions() []*OfpAction {
+ if m != nil {
+ return m.Actions
+ }
+ return nil
+}
+
+// Match, Wildcard or Set-Field property
+type OfpTableFeaturePropOxm struct {
+ // TODO is this a uint32???
+ OxmIds []uint32 `protobuf:"varint,3,rep,packed,name=oxm_ids,json=oxmIds,proto3" json:"oxm_ids,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpTableFeaturePropOxm) Reset() { *m = OfpTableFeaturePropOxm{} }
+func (m *OfpTableFeaturePropOxm) String() string { return proto.CompactTextString(m) }
+func (*OfpTableFeaturePropOxm) ProtoMessage() {}
+func (*OfpTableFeaturePropOxm) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{53}
+}
+
+func (m *OfpTableFeaturePropOxm) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpTableFeaturePropOxm.Unmarshal(m, b)
+}
+func (m *OfpTableFeaturePropOxm) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpTableFeaturePropOxm.Marshal(b, m, deterministic)
+}
+func (m *OfpTableFeaturePropOxm) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpTableFeaturePropOxm.Merge(m, src)
+}
+func (m *OfpTableFeaturePropOxm) XXX_Size() int {
+ return xxx_messageInfo_OfpTableFeaturePropOxm.Size(m)
+}
+func (m *OfpTableFeaturePropOxm) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpTableFeaturePropOxm.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpTableFeaturePropOxm proto.InternalMessageInfo
+
+func (m *OfpTableFeaturePropOxm) GetOxmIds() []uint32 {
+ if m != nil {
+ return m.OxmIds
+ }
+ return nil
+}
+
+// Experimenter table feature property
+type OfpTableFeaturePropExperimenter struct {
+ // One of OFPTFPT_EXPERIMENTER,
+ //OFPTFPT_EXPERIMENTER_MISS.
+ Experimenter uint32 `protobuf:"varint,2,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+ ExpType uint32 `protobuf:"varint,3,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"`
+ ExperimenterData []uint32 `protobuf:"varint,4,rep,packed,name=experimenter_data,json=experimenterData,proto3" json:"experimenter_data,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpTableFeaturePropExperimenter) Reset() { *m = OfpTableFeaturePropExperimenter{} }
+func (m *OfpTableFeaturePropExperimenter) String() string { return proto.CompactTextString(m) }
+func (*OfpTableFeaturePropExperimenter) ProtoMessage() {}
+func (*OfpTableFeaturePropExperimenter) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{54}
+}
+
+func (m *OfpTableFeaturePropExperimenter) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpTableFeaturePropExperimenter.Unmarshal(m, b)
+}
+func (m *OfpTableFeaturePropExperimenter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpTableFeaturePropExperimenter.Marshal(b, m, deterministic)
+}
+func (m *OfpTableFeaturePropExperimenter) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpTableFeaturePropExperimenter.Merge(m, src)
+}
+func (m *OfpTableFeaturePropExperimenter) XXX_Size() int {
+ return xxx_messageInfo_OfpTableFeaturePropExperimenter.Size(m)
+}
+func (m *OfpTableFeaturePropExperimenter) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpTableFeaturePropExperimenter.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpTableFeaturePropExperimenter proto.InternalMessageInfo
+
+func (m *OfpTableFeaturePropExperimenter) GetExperimenter() uint32 {
+ if m != nil {
+ return m.Experimenter
+ }
+ return 0
+}
+
+func (m *OfpTableFeaturePropExperimenter) GetExpType() uint32 {
+ if m != nil {
+ return m.ExpType
+ }
+ return 0
+}
+
+func (m *OfpTableFeaturePropExperimenter) GetExperimenterData() []uint32 {
+ if m != nil {
+ return m.ExperimenterData
+ }
+ return nil
+}
+
+// Body for ofp_multipart_request of type OFPMP_TABLE_FEATURES./
+// Body of reply to OFPMP_TABLE_FEATURES request.
+type OfpTableFeatures struct {
+ TableId uint32 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ MetadataMatch uint64 `protobuf:"varint,3,opt,name=metadata_match,json=metadataMatch,proto3" json:"metadata_match,omitempty"`
+ MetadataWrite uint64 `protobuf:"varint,4,opt,name=metadata_write,json=metadataWrite,proto3" json:"metadata_write,omitempty"`
+ Config uint32 `protobuf:"varint,5,opt,name=config,proto3" json:"config,omitempty"`
+ MaxEntries uint32 `protobuf:"varint,6,opt,name=max_entries,json=maxEntries,proto3" json:"max_entries,omitempty"`
+ // Table Feature Property list
+ Properties []*OfpTableFeatureProperty `protobuf:"bytes,7,rep,name=properties,proto3" json:"properties,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpTableFeatures) Reset() { *m = OfpTableFeatures{} }
+func (m *OfpTableFeatures) String() string { return proto.CompactTextString(m) }
+func (*OfpTableFeatures) ProtoMessage() {}
+func (*OfpTableFeatures) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{55}
+}
+
+func (m *OfpTableFeatures) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpTableFeatures.Unmarshal(m, b)
+}
+func (m *OfpTableFeatures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpTableFeatures.Marshal(b, m, deterministic)
+}
+func (m *OfpTableFeatures) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpTableFeatures.Merge(m, src)
+}
+func (m *OfpTableFeatures) XXX_Size() int {
+ return xxx_messageInfo_OfpTableFeatures.Size(m)
+}
+func (m *OfpTableFeatures) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpTableFeatures.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpTableFeatures proto.InternalMessageInfo
+
+func (m *OfpTableFeatures) GetTableId() uint32 {
+ if m != nil {
+ return m.TableId
+ }
+ return 0
+}
+
+func (m *OfpTableFeatures) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *OfpTableFeatures) GetMetadataMatch() uint64 {
+ if m != nil {
+ return m.MetadataMatch
+ }
+ return 0
+}
+
+func (m *OfpTableFeatures) GetMetadataWrite() uint64 {
+ if m != nil {
+ return m.MetadataWrite
+ }
+ return 0
+}
+
+func (m *OfpTableFeatures) GetConfig() uint32 {
+ if m != nil {
+ return m.Config
+ }
+ return 0
+}
+
+func (m *OfpTableFeatures) GetMaxEntries() uint32 {
+ if m != nil {
+ return m.MaxEntries
+ }
+ return 0
+}
+
+func (m *OfpTableFeatures) GetProperties() []*OfpTableFeatureProperty {
+ if m != nil {
+ return m.Properties
+ }
+ return nil
+}
+
+// Body of reply to OFPMP_TABLE request.
+type OfpTableStats struct {
+ TableId uint32 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
+ ActiveCount uint32 `protobuf:"varint,2,opt,name=active_count,json=activeCount,proto3" json:"active_count,omitempty"`
+ LookupCount uint64 `protobuf:"varint,3,opt,name=lookup_count,json=lookupCount,proto3" json:"lookup_count,omitempty"`
+ MatchedCount uint64 `protobuf:"varint,4,opt,name=matched_count,json=matchedCount,proto3" json:"matched_count,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpTableStats) Reset() { *m = OfpTableStats{} }
+func (m *OfpTableStats) String() string { return proto.CompactTextString(m) }
+func (*OfpTableStats) ProtoMessage() {}
+func (*OfpTableStats) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{56}
+}
+
+func (m *OfpTableStats) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpTableStats.Unmarshal(m, b)
+}
+func (m *OfpTableStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpTableStats.Marshal(b, m, deterministic)
+}
+func (m *OfpTableStats) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpTableStats.Merge(m, src)
+}
+func (m *OfpTableStats) XXX_Size() int {
+ return xxx_messageInfo_OfpTableStats.Size(m)
+}
+func (m *OfpTableStats) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpTableStats.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpTableStats proto.InternalMessageInfo
+
+func (m *OfpTableStats) GetTableId() uint32 {
+ if m != nil {
+ return m.TableId
+ }
+ return 0
+}
+
+func (m *OfpTableStats) GetActiveCount() uint32 {
+ if m != nil {
+ return m.ActiveCount
+ }
+ return 0
+}
+
+func (m *OfpTableStats) GetLookupCount() uint64 {
+ if m != nil {
+ return m.LookupCount
+ }
+ return 0
+}
+
+func (m *OfpTableStats) GetMatchedCount() uint64 {
+ if m != nil {
+ return m.MatchedCount
+ }
+ return 0
+}
+
+// Body for ofp_multipart_request of type OFPMP_PORT.
+type OfpPortStatsRequest struct {
+ PortNo uint32 `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpPortStatsRequest) Reset() { *m = OfpPortStatsRequest{} }
+func (m *OfpPortStatsRequest) String() string { return proto.CompactTextString(m) }
+func (*OfpPortStatsRequest) ProtoMessage() {}
+func (*OfpPortStatsRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{57}
+}
+
+func (m *OfpPortStatsRequest) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpPortStatsRequest.Unmarshal(m, b)
+}
+func (m *OfpPortStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpPortStatsRequest.Marshal(b, m, deterministic)
+}
+func (m *OfpPortStatsRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpPortStatsRequest.Merge(m, src)
+}
+func (m *OfpPortStatsRequest) XXX_Size() int {
+ return xxx_messageInfo_OfpPortStatsRequest.Size(m)
+}
+func (m *OfpPortStatsRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpPortStatsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpPortStatsRequest proto.InternalMessageInfo
+
+func (m *OfpPortStatsRequest) GetPortNo() uint32 {
+ if m != nil {
+ return m.PortNo
+ }
+ return 0
+}
+
+// Body of reply to OFPMP_PORT request. If a counter is unsupported, set
+// the field to all ones.
+type OfpPortStats struct {
+ PortNo uint32 `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+ RxPackets uint64 `protobuf:"varint,2,opt,name=rx_packets,json=rxPackets,proto3" json:"rx_packets,omitempty"`
+ TxPackets uint64 `protobuf:"varint,3,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"`
+ RxBytes uint64 `protobuf:"varint,4,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"`
+ TxBytes uint64 `protobuf:"varint,5,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`
+ RxDropped uint64 `protobuf:"varint,6,opt,name=rx_dropped,json=rxDropped,proto3" json:"rx_dropped,omitempty"`
+ TxDropped uint64 `protobuf:"varint,7,opt,name=tx_dropped,json=txDropped,proto3" json:"tx_dropped,omitempty"`
+ RxErrors uint64 `protobuf:"varint,8,opt,name=rx_errors,json=rxErrors,proto3" json:"rx_errors,omitempty"`
+ TxErrors uint64 `protobuf:"varint,9,opt,name=tx_errors,json=txErrors,proto3" json:"tx_errors,omitempty"`
+ RxFrameErr uint64 `protobuf:"varint,10,opt,name=rx_frame_err,json=rxFrameErr,proto3" json:"rx_frame_err,omitempty"`
+ RxOverErr uint64 `protobuf:"varint,11,opt,name=rx_over_err,json=rxOverErr,proto3" json:"rx_over_err,omitempty"`
+ RxCrcErr uint64 `protobuf:"varint,12,opt,name=rx_crc_err,json=rxCrcErr,proto3" json:"rx_crc_err,omitempty"`
+ Collisions uint64 `protobuf:"varint,13,opt,name=collisions,proto3" json:"collisions,omitempty"`
+ DurationSec uint32 `protobuf:"varint,14,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
+ DurationNsec uint32 `protobuf:"varint,15,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpPortStats) Reset() { *m = OfpPortStats{} }
+func (m *OfpPortStats) String() string { return proto.CompactTextString(m) }
+func (*OfpPortStats) ProtoMessage() {}
+func (*OfpPortStats) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{58}
+}
+
+func (m *OfpPortStats) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpPortStats.Unmarshal(m, b)
+}
+func (m *OfpPortStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpPortStats.Marshal(b, m, deterministic)
+}
+func (m *OfpPortStats) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpPortStats.Merge(m, src)
+}
+func (m *OfpPortStats) XXX_Size() int {
+ return xxx_messageInfo_OfpPortStats.Size(m)
+}
+func (m *OfpPortStats) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpPortStats.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpPortStats proto.InternalMessageInfo
+
+func (m *OfpPortStats) GetPortNo() uint32 {
+ if m != nil {
+ return m.PortNo
+ }
+ return 0
+}
+
+func (m *OfpPortStats) GetRxPackets() uint64 {
+ if m != nil {
+ return m.RxPackets
+ }
+ return 0
+}
+
+func (m *OfpPortStats) GetTxPackets() uint64 {
+ if m != nil {
+ return m.TxPackets
+ }
+ return 0
+}
+
+func (m *OfpPortStats) GetRxBytes() uint64 {
+ if m != nil {
+ return m.RxBytes
+ }
+ return 0
+}
+
+func (m *OfpPortStats) GetTxBytes() uint64 {
+ if m != nil {
+ return m.TxBytes
+ }
+ return 0
+}
+
+func (m *OfpPortStats) GetRxDropped() uint64 {
+ if m != nil {
+ return m.RxDropped
+ }
+ return 0
+}
+
+func (m *OfpPortStats) GetTxDropped() uint64 {
+ if m != nil {
+ return m.TxDropped
+ }
+ return 0
+}
+
+func (m *OfpPortStats) GetRxErrors() uint64 {
+ if m != nil {
+ return m.RxErrors
+ }
+ return 0
+}
+
+func (m *OfpPortStats) GetTxErrors() uint64 {
+ if m != nil {
+ return m.TxErrors
+ }
+ return 0
+}
+
+func (m *OfpPortStats) GetRxFrameErr() uint64 {
+ if m != nil {
+ return m.RxFrameErr
+ }
+ return 0
+}
+
+func (m *OfpPortStats) GetRxOverErr() uint64 {
+ if m != nil {
+ return m.RxOverErr
+ }
+ return 0
+}
+
+func (m *OfpPortStats) GetRxCrcErr() uint64 {
+ if m != nil {
+ return m.RxCrcErr
+ }
+ return 0
+}
+
+func (m *OfpPortStats) GetCollisions() uint64 {
+ if m != nil {
+ return m.Collisions
+ }
+ return 0
+}
+
+func (m *OfpPortStats) GetDurationSec() uint32 {
+ if m != nil {
+ return m.DurationSec
+ }
+ return 0
+}
+
+func (m *OfpPortStats) GetDurationNsec() uint32 {
+ if m != nil {
+ return m.DurationNsec
+ }
+ return 0
+}
+
+// Body of OFPMP_GROUP request.
+type OfpGroupStatsRequest struct {
+ GroupId uint32 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpGroupStatsRequest) Reset() { *m = OfpGroupStatsRequest{} }
+func (m *OfpGroupStatsRequest) String() string { return proto.CompactTextString(m) }
+func (*OfpGroupStatsRequest) ProtoMessage() {}
+func (*OfpGroupStatsRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{59}
+}
+
+func (m *OfpGroupStatsRequest) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpGroupStatsRequest.Unmarshal(m, b)
+}
+func (m *OfpGroupStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpGroupStatsRequest.Marshal(b, m, deterministic)
+}
+func (m *OfpGroupStatsRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpGroupStatsRequest.Merge(m, src)
+}
+func (m *OfpGroupStatsRequest) XXX_Size() int {
+ return xxx_messageInfo_OfpGroupStatsRequest.Size(m)
+}
+func (m *OfpGroupStatsRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpGroupStatsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpGroupStatsRequest proto.InternalMessageInfo
+
+func (m *OfpGroupStatsRequest) GetGroupId() uint32 {
+ if m != nil {
+ return m.GroupId
+ }
+ return 0
+}
+
+// Used in group stats replies.
+type OfpBucketCounter struct {
+ PacketCount uint64 `protobuf:"varint,1,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"`
+ ByteCount uint64 `protobuf:"varint,2,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpBucketCounter) Reset() { *m = OfpBucketCounter{} }
+func (m *OfpBucketCounter) String() string { return proto.CompactTextString(m) }
+func (*OfpBucketCounter) ProtoMessage() {}
+func (*OfpBucketCounter) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{60}
+}
+
+func (m *OfpBucketCounter) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpBucketCounter.Unmarshal(m, b)
+}
+func (m *OfpBucketCounter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpBucketCounter.Marshal(b, m, deterministic)
+}
+func (m *OfpBucketCounter) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpBucketCounter.Merge(m, src)
+}
+func (m *OfpBucketCounter) XXX_Size() int {
+ return xxx_messageInfo_OfpBucketCounter.Size(m)
+}
+func (m *OfpBucketCounter) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpBucketCounter.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpBucketCounter proto.InternalMessageInfo
+
+func (m *OfpBucketCounter) GetPacketCount() uint64 {
+ if m != nil {
+ return m.PacketCount
+ }
+ return 0
+}
+
+func (m *OfpBucketCounter) GetByteCount() uint64 {
+ if m != nil {
+ return m.ByteCount
+ }
+ return 0
+}
+
+// Body of reply to OFPMP_GROUP request.
+type OfpGroupStats struct {
+ GroupId uint32 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
+ RefCount uint32 `protobuf:"varint,2,opt,name=ref_count,json=refCount,proto3" json:"ref_count,omitempty"`
+ PacketCount uint64 `protobuf:"varint,3,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"`
+ ByteCount uint64 `protobuf:"varint,4,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`
+ DurationSec uint32 `protobuf:"varint,5,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
+ DurationNsec uint32 `protobuf:"varint,6,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
+ BucketStats []*OfpBucketCounter `protobuf:"bytes,7,rep,name=bucket_stats,json=bucketStats,proto3" json:"bucket_stats,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpGroupStats) Reset() { *m = OfpGroupStats{} }
+func (m *OfpGroupStats) String() string { return proto.CompactTextString(m) }
+func (*OfpGroupStats) ProtoMessage() {}
+func (*OfpGroupStats) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{61}
+}
+
+func (m *OfpGroupStats) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpGroupStats.Unmarshal(m, b)
+}
+func (m *OfpGroupStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpGroupStats.Marshal(b, m, deterministic)
+}
+func (m *OfpGroupStats) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpGroupStats.Merge(m, src)
+}
+func (m *OfpGroupStats) XXX_Size() int {
+ return xxx_messageInfo_OfpGroupStats.Size(m)
+}
+func (m *OfpGroupStats) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpGroupStats.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpGroupStats proto.InternalMessageInfo
+
+func (m *OfpGroupStats) GetGroupId() uint32 {
+ if m != nil {
+ return m.GroupId
+ }
+ return 0
+}
+
+func (m *OfpGroupStats) GetRefCount() uint32 {
+ if m != nil {
+ return m.RefCount
+ }
+ return 0
+}
+
+func (m *OfpGroupStats) GetPacketCount() uint64 {
+ if m != nil {
+ return m.PacketCount
+ }
+ return 0
+}
+
+func (m *OfpGroupStats) GetByteCount() uint64 {
+ if m != nil {
+ return m.ByteCount
+ }
+ return 0
+}
+
+func (m *OfpGroupStats) GetDurationSec() uint32 {
+ if m != nil {
+ return m.DurationSec
+ }
+ return 0
+}
+
+func (m *OfpGroupStats) GetDurationNsec() uint32 {
+ if m != nil {
+ return m.DurationNsec
+ }
+ return 0
+}
+
+func (m *OfpGroupStats) GetBucketStats() []*OfpBucketCounter {
+ if m != nil {
+ return m.BucketStats
+ }
+ return nil
+}
+
+// Body of reply to OFPMP_GROUP_DESC request.
+type OfpGroupDesc struct {
+ Type OfpGroupType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpGroupType" json:"type,omitempty"`
+ GroupId uint32 `protobuf:"varint,2,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
+ Buckets []*OfpBucket `protobuf:"bytes,3,rep,name=buckets,proto3" json:"buckets,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpGroupDesc) Reset() { *m = OfpGroupDesc{} }
+func (m *OfpGroupDesc) String() string { return proto.CompactTextString(m) }
+func (*OfpGroupDesc) ProtoMessage() {}
+func (*OfpGroupDesc) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{62}
+}
+
+func (m *OfpGroupDesc) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpGroupDesc.Unmarshal(m, b)
+}
+func (m *OfpGroupDesc) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpGroupDesc.Marshal(b, m, deterministic)
+}
+func (m *OfpGroupDesc) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpGroupDesc.Merge(m, src)
+}
+func (m *OfpGroupDesc) XXX_Size() int {
+ return xxx_messageInfo_OfpGroupDesc.Size(m)
+}
+func (m *OfpGroupDesc) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpGroupDesc.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpGroupDesc proto.InternalMessageInfo
+
+func (m *OfpGroupDesc) GetType() OfpGroupType {
+ if m != nil {
+ return m.Type
+ }
+ return OfpGroupType_OFPGT_ALL
+}
+
+func (m *OfpGroupDesc) GetGroupId() uint32 {
+ if m != nil {
+ return m.GroupId
+ }
+ return 0
+}
+
+func (m *OfpGroupDesc) GetBuckets() []*OfpBucket {
+ if m != nil {
+ return m.Buckets
+ }
+ return nil
+}
+
+type OfpGroupEntry struct {
+ Desc *OfpGroupDesc `protobuf:"bytes,1,opt,name=desc,proto3" json:"desc,omitempty"`
+ Stats *OfpGroupStats `protobuf:"bytes,2,opt,name=stats,proto3" json:"stats,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpGroupEntry) Reset() { *m = OfpGroupEntry{} }
+func (m *OfpGroupEntry) String() string { return proto.CompactTextString(m) }
+func (*OfpGroupEntry) ProtoMessage() {}
+func (*OfpGroupEntry) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{63}
+}
+
+func (m *OfpGroupEntry) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpGroupEntry.Unmarshal(m, b)
+}
+func (m *OfpGroupEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpGroupEntry.Marshal(b, m, deterministic)
+}
+func (m *OfpGroupEntry) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpGroupEntry.Merge(m, src)
+}
+func (m *OfpGroupEntry) XXX_Size() int {
+ return xxx_messageInfo_OfpGroupEntry.Size(m)
+}
+func (m *OfpGroupEntry) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpGroupEntry.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpGroupEntry proto.InternalMessageInfo
+
+func (m *OfpGroupEntry) GetDesc() *OfpGroupDesc {
+ if m != nil {
+ return m.Desc
+ }
+ return nil
+}
+
+func (m *OfpGroupEntry) GetStats() *OfpGroupStats {
+ if m != nil {
+ return m.Stats
+ }
+ return nil
+}
+
+// Body of reply to OFPMP_GROUP_FEATURES request. Group features.
+type OfpGroupFeatures struct {
+ Types uint32 `protobuf:"varint,1,opt,name=types,proto3" json:"types,omitempty"`
+ Capabilities uint32 `protobuf:"varint,2,opt,name=capabilities,proto3" json:"capabilities,omitempty"`
+ MaxGroups []uint32 `protobuf:"varint,3,rep,packed,name=max_groups,json=maxGroups,proto3" json:"max_groups,omitempty"`
+ Actions []uint32 `protobuf:"varint,4,rep,packed,name=actions,proto3" json:"actions,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpGroupFeatures) Reset() { *m = OfpGroupFeatures{} }
+func (m *OfpGroupFeatures) String() string { return proto.CompactTextString(m) }
+func (*OfpGroupFeatures) ProtoMessage() {}
+func (*OfpGroupFeatures) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{64}
+}
+
+func (m *OfpGroupFeatures) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpGroupFeatures.Unmarshal(m, b)
+}
+func (m *OfpGroupFeatures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpGroupFeatures.Marshal(b, m, deterministic)
+}
+func (m *OfpGroupFeatures) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpGroupFeatures.Merge(m, src)
+}
+func (m *OfpGroupFeatures) XXX_Size() int {
+ return xxx_messageInfo_OfpGroupFeatures.Size(m)
+}
+func (m *OfpGroupFeatures) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpGroupFeatures.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpGroupFeatures proto.InternalMessageInfo
+
+func (m *OfpGroupFeatures) GetTypes() uint32 {
+ if m != nil {
+ return m.Types
+ }
+ return 0
+}
+
+func (m *OfpGroupFeatures) GetCapabilities() uint32 {
+ if m != nil {
+ return m.Capabilities
+ }
+ return 0
+}
+
+func (m *OfpGroupFeatures) GetMaxGroups() []uint32 {
+ if m != nil {
+ return m.MaxGroups
+ }
+ return nil
+}
+
+func (m *OfpGroupFeatures) GetActions() []uint32 {
+ if m != nil {
+ return m.Actions
+ }
+ return nil
+}
+
+// Body of OFPMP_METER and OFPMP_METER_CONFIG requests.
+type OfpMeterMultipartRequest struct {
+ MeterId uint32 `protobuf:"varint,1,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpMeterMultipartRequest) Reset() { *m = OfpMeterMultipartRequest{} }
+func (m *OfpMeterMultipartRequest) String() string { return proto.CompactTextString(m) }
+func (*OfpMeterMultipartRequest) ProtoMessage() {}
+func (*OfpMeterMultipartRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{65}
+}
+
+func (m *OfpMeterMultipartRequest) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpMeterMultipartRequest.Unmarshal(m, b)
+}
+func (m *OfpMeterMultipartRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpMeterMultipartRequest.Marshal(b, m, deterministic)
+}
+func (m *OfpMeterMultipartRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpMeterMultipartRequest.Merge(m, src)
+}
+func (m *OfpMeterMultipartRequest) XXX_Size() int {
+ return xxx_messageInfo_OfpMeterMultipartRequest.Size(m)
+}
+func (m *OfpMeterMultipartRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpMeterMultipartRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpMeterMultipartRequest proto.InternalMessageInfo
+
+func (m *OfpMeterMultipartRequest) GetMeterId() uint32 {
+ if m != nil {
+ return m.MeterId
+ }
+ return 0
+}
+
+// Statistics for each meter band
+type OfpMeterBandStats struct {
+ PacketBandCount uint64 `protobuf:"varint,1,opt,name=packet_band_count,json=packetBandCount,proto3" json:"packet_band_count,omitempty"`
+ ByteBandCount uint64 `protobuf:"varint,2,opt,name=byte_band_count,json=byteBandCount,proto3" json:"byte_band_count,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpMeterBandStats) Reset() { *m = OfpMeterBandStats{} }
+func (m *OfpMeterBandStats) String() string { return proto.CompactTextString(m) }
+func (*OfpMeterBandStats) ProtoMessage() {}
+func (*OfpMeterBandStats) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{66}
+}
+
+func (m *OfpMeterBandStats) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpMeterBandStats.Unmarshal(m, b)
+}
+func (m *OfpMeterBandStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpMeterBandStats.Marshal(b, m, deterministic)
+}
+func (m *OfpMeterBandStats) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpMeterBandStats.Merge(m, src)
+}
+func (m *OfpMeterBandStats) XXX_Size() int {
+ return xxx_messageInfo_OfpMeterBandStats.Size(m)
+}
+func (m *OfpMeterBandStats) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpMeterBandStats.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpMeterBandStats proto.InternalMessageInfo
+
+func (m *OfpMeterBandStats) GetPacketBandCount() uint64 {
+ if m != nil {
+ return m.PacketBandCount
+ }
+ return 0
+}
+
+func (m *OfpMeterBandStats) GetByteBandCount() uint64 {
+ if m != nil {
+ return m.ByteBandCount
+ }
+ return 0
+}
+
+// Body of reply to OFPMP_METER request. Meter statistics.
+type OfpMeterStats struct {
+ MeterId uint32 `protobuf:"varint,1,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"`
+ FlowCount uint32 `protobuf:"varint,2,opt,name=flow_count,json=flowCount,proto3" json:"flow_count,omitempty"`
+ PacketInCount uint64 `protobuf:"varint,3,opt,name=packet_in_count,json=packetInCount,proto3" json:"packet_in_count,omitempty"`
+ ByteInCount uint64 `protobuf:"varint,4,opt,name=byte_in_count,json=byteInCount,proto3" json:"byte_in_count,omitempty"`
+ DurationSec uint32 `protobuf:"varint,5,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
+ DurationNsec uint32 `protobuf:"varint,6,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
+ BandStats []*OfpMeterBandStats `protobuf:"bytes,7,rep,name=band_stats,json=bandStats,proto3" json:"band_stats,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpMeterStats) Reset() { *m = OfpMeterStats{} }
+func (m *OfpMeterStats) String() string { return proto.CompactTextString(m) }
+func (*OfpMeterStats) ProtoMessage() {}
+func (*OfpMeterStats) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{67}
+}
+
+func (m *OfpMeterStats) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpMeterStats.Unmarshal(m, b)
+}
+func (m *OfpMeterStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpMeterStats.Marshal(b, m, deterministic)
+}
+func (m *OfpMeterStats) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpMeterStats.Merge(m, src)
+}
+func (m *OfpMeterStats) XXX_Size() int {
+ return xxx_messageInfo_OfpMeterStats.Size(m)
+}
+func (m *OfpMeterStats) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpMeterStats.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpMeterStats proto.InternalMessageInfo
+
+func (m *OfpMeterStats) GetMeterId() uint32 {
+ if m != nil {
+ return m.MeterId
+ }
+ return 0
+}
+
+func (m *OfpMeterStats) GetFlowCount() uint32 {
+ if m != nil {
+ return m.FlowCount
+ }
+ return 0
+}
+
+func (m *OfpMeterStats) GetPacketInCount() uint64 {
+ if m != nil {
+ return m.PacketInCount
+ }
+ return 0
+}
+
+func (m *OfpMeterStats) GetByteInCount() uint64 {
+ if m != nil {
+ return m.ByteInCount
+ }
+ return 0
+}
+
+func (m *OfpMeterStats) GetDurationSec() uint32 {
+ if m != nil {
+ return m.DurationSec
+ }
+ return 0
+}
+
+func (m *OfpMeterStats) GetDurationNsec() uint32 {
+ if m != nil {
+ return m.DurationNsec
+ }
+ return 0
+}
+
+func (m *OfpMeterStats) GetBandStats() []*OfpMeterBandStats {
+ if m != nil {
+ return m.BandStats
+ }
+ return nil
+}
+
+// Body of reply to OFPMP_METER_CONFIG request. Meter configuration.
+type OfpMeterConfig struct {
+ Flags uint32 `protobuf:"varint,1,opt,name=flags,proto3" json:"flags,omitempty"`
+ MeterId uint32 `protobuf:"varint,2,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"`
+ Bands []*OfpMeterBandHeader `protobuf:"bytes,3,rep,name=bands,proto3" json:"bands,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpMeterConfig) Reset() { *m = OfpMeterConfig{} }
+func (m *OfpMeterConfig) String() string { return proto.CompactTextString(m) }
+func (*OfpMeterConfig) ProtoMessage() {}
+func (*OfpMeterConfig) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{68}
+}
+
+func (m *OfpMeterConfig) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpMeterConfig.Unmarshal(m, b)
+}
+func (m *OfpMeterConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpMeterConfig.Marshal(b, m, deterministic)
+}
+func (m *OfpMeterConfig) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpMeterConfig.Merge(m, src)
+}
+func (m *OfpMeterConfig) XXX_Size() int {
+ return xxx_messageInfo_OfpMeterConfig.Size(m)
+}
+func (m *OfpMeterConfig) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpMeterConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpMeterConfig proto.InternalMessageInfo
+
+func (m *OfpMeterConfig) GetFlags() uint32 {
+ if m != nil {
+ return m.Flags
+ }
+ return 0
+}
+
+func (m *OfpMeterConfig) GetMeterId() uint32 {
+ if m != nil {
+ return m.MeterId
+ }
+ return 0
+}
+
+func (m *OfpMeterConfig) GetBands() []*OfpMeterBandHeader {
+ if m != nil {
+ return m.Bands
+ }
+ return nil
+}
+
+// Body of reply to OFPMP_METER_FEATURES request. Meter features.
+type OfpMeterFeatures struct {
+ MaxMeter uint32 `protobuf:"varint,1,opt,name=max_meter,json=maxMeter,proto3" json:"max_meter,omitempty"`
+ BandTypes uint32 `protobuf:"varint,2,opt,name=band_types,json=bandTypes,proto3" json:"band_types,omitempty"`
+ Capabilities uint32 `protobuf:"varint,3,opt,name=capabilities,proto3" json:"capabilities,omitempty"`
+ MaxBands uint32 `protobuf:"varint,4,opt,name=max_bands,json=maxBands,proto3" json:"max_bands,omitempty"`
+ MaxColor uint32 `protobuf:"varint,5,opt,name=max_color,json=maxColor,proto3" json:"max_color,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpMeterFeatures) Reset() { *m = OfpMeterFeatures{} }
+func (m *OfpMeterFeatures) String() string { return proto.CompactTextString(m) }
+func (*OfpMeterFeatures) ProtoMessage() {}
+func (*OfpMeterFeatures) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{69}
+}
+
+func (m *OfpMeterFeatures) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpMeterFeatures.Unmarshal(m, b)
+}
+func (m *OfpMeterFeatures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpMeterFeatures.Marshal(b, m, deterministic)
+}
+func (m *OfpMeterFeatures) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpMeterFeatures.Merge(m, src)
+}
+func (m *OfpMeterFeatures) XXX_Size() int {
+ return xxx_messageInfo_OfpMeterFeatures.Size(m)
+}
+func (m *OfpMeterFeatures) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpMeterFeatures.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpMeterFeatures proto.InternalMessageInfo
+
+func (m *OfpMeterFeatures) GetMaxMeter() uint32 {
+ if m != nil {
+ return m.MaxMeter
+ }
+ return 0
+}
+
+func (m *OfpMeterFeatures) GetBandTypes() uint32 {
+ if m != nil {
+ return m.BandTypes
+ }
+ return 0
+}
+
+func (m *OfpMeterFeatures) GetCapabilities() uint32 {
+ if m != nil {
+ return m.Capabilities
+ }
+ return 0
+}
+
+func (m *OfpMeterFeatures) GetMaxBands() uint32 {
+ if m != nil {
+ return m.MaxBands
+ }
+ return 0
+}
+
+func (m *OfpMeterFeatures) GetMaxColor() uint32 {
+ if m != nil {
+ return m.MaxColor
+ }
+ return 0
+}
+
+type OfpMeterEntry struct {
+ Config *OfpMeterConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
+ Stats *OfpMeterStats `protobuf:"bytes,2,opt,name=stats,proto3" json:"stats,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpMeterEntry) Reset() { *m = OfpMeterEntry{} }
+func (m *OfpMeterEntry) String() string { return proto.CompactTextString(m) }
+func (*OfpMeterEntry) ProtoMessage() {}
+func (*OfpMeterEntry) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{70}
+}
+
+func (m *OfpMeterEntry) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpMeterEntry.Unmarshal(m, b)
+}
+func (m *OfpMeterEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpMeterEntry.Marshal(b, m, deterministic)
+}
+func (m *OfpMeterEntry) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpMeterEntry.Merge(m, src)
+}
+func (m *OfpMeterEntry) XXX_Size() int {
+ return xxx_messageInfo_OfpMeterEntry.Size(m)
+}
+func (m *OfpMeterEntry) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpMeterEntry.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpMeterEntry proto.InternalMessageInfo
+
+func (m *OfpMeterEntry) GetConfig() *OfpMeterConfig {
+ if m != nil {
+ return m.Config
+ }
+ return nil
+}
+
+func (m *OfpMeterEntry) GetStats() *OfpMeterStats {
+ if m != nil {
+ return m.Stats
+ }
+ return nil
+}
+
+// Body for ofp_multipart_request/reply of type OFPMP_EXPERIMENTER.
+type OfpExperimenterMultipartHeader struct {
+ Experimenter uint32 `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+ ExpType uint32 `protobuf:"varint,2,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"`
+ Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpExperimenterMultipartHeader) Reset() { *m = OfpExperimenterMultipartHeader{} }
+func (m *OfpExperimenterMultipartHeader) String() string { return proto.CompactTextString(m) }
+func (*OfpExperimenterMultipartHeader) ProtoMessage() {}
+func (*OfpExperimenterMultipartHeader) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{71}
+}
+
+func (m *OfpExperimenterMultipartHeader) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpExperimenterMultipartHeader.Unmarshal(m, b)
+}
+func (m *OfpExperimenterMultipartHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpExperimenterMultipartHeader.Marshal(b, m, deterministic)
+}
+func (m *OfpExperimenterMultipartHeader) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpExperimenterMultipartHeader.Merge(m, src)
+}
+func (m *OfpExperimenterMultipartHeader) XXX_Size() int {
+ return xxx_messageInfo_OfpExperimenterMultipartHeader.Size(m)
+}
+func (m *OfpExperimenterMultipartHeader) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpExperimenterMultipartHeader.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpExperimenterMultipartHeader proto.InternalMessageInfo
+
+func (m *OfpExperimenterMultipartHeader) GetExperimenter() uint32 {
+ if m != nil {
+ return m.Experimenter
+ }
+ return 0
+}
+
+func (m *OfpExperimenterMultipartHeader) GetExpType() uint32 {
+ if m != nil {
+ return m.ExpType
+ }
+ return 0
+}
+
+func (m *OfpExperimenterMultipartHeader) GetData() []byte {
+ if m != nil {
+ return m.Data
+ }
+ return nil
+}
+
+// Experimenter extension.
+type OfpExperimenterHeader struct {
+ //ofp_header header; /* Type OFPT_EXPERIMENTER. */
+ Experimenter uint32 `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+ ExpType uint32 `protobuf:"varint,2,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"`
+ Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpExperimenterHeader) Reset() { *m = OfpExperimenterHeader{} }
+func (m *OfpExperimenterHeader) String() string { return proto.CompactTextString(m) }
+func (*OfpExperimenterHeader) ProtoMessage() {}
+func (*OfpExperimenterHeader) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{72}
+}
+
+func (m *OfpExperimenterHeader) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpExperimenterHeader.Unmarshal(m, b)
+}
+func (m *OfpExperimenterHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpExperimenterHeader.Marshal(b, m, deterministic)
+}
+func (m *OfpExperimenterHeader) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpExperimenterHeader.Merge(m, src)
+}
+func (m *OfpExperimenterHeader) XXX_Size() int {
+ return xxx_messageInfo_OfpExperimenterHeader.Size(m)
+}
+func (m *OfpExperimenterHeader) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpExperimenterHeader.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpExperimenterHeader proto.InternalMessageInfo
+
+func (m *OfpExperimenterHeader) GetExperimenter() uint32 {
+ if m != nil {
+ return m.Experimenter
+ }
+ return 0
+}
+
+func (m *OfpExperimenterHeader) GetExpType() uint32 {
+ if m != nil {
+ return m.ExpType
+ }
+ return 0
+}
+
+func (m *OfpExperimenterHeader) GetData() []byte {
+ if m != nil {
+ return m.Data
+ }
+ return nil
+}
+
+// Common description for a queue.
+type OfpQueuePropHeader struct {
+ Property uint32 `protobuf:"varint,1,opt,name=property,proto3" json:"property,omitempty"`
+ Len uint32 `protobuf:"varint,2,opt,name=len,proto3" json:"len,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpQueuePropHeader) Reset() { *m = OfpQueuePropHeader{} }
+func (m *OfpQueuePropHeader) String() string { return proto.CompactTextString(m) }
+func (*OfpQueuePropHeader) ProtoMessage() {}
+func (*OfpQueuePropHeader) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{73}
+}
+
+func (m *OfpQueuePropHeader) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpQueuePropHeader.Unmarshal(m, b)
+}
+func (m *OfpQueuePropHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpQueuePropHeader.Marshal(b, m, deterministic)
+}
+func (m *OfpQueuePropHeader) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpQueuePropHeader.Merge(m, src)
+}
+func (m *OfpQueuePropHeader) XXX_Size() int {
+ return xxx_messageInfo_OfpQueuePropHeader.Size(m)
+}
+func (m *OfpQueuePropHeader) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpQueuePropHeader.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpQueuePropHeader proto.InternalMessageInfo
+
+func (m *OfpQueuePropHeader) GetProperty() uint32 {
+ if m != nil {
+ return m.Property
+ }
+ return 0
+}
+
+func (m *OfpQueuePropHeader) GetLen() uint32 {
+ if m != nil {
+ return m.Len
+ }
+ return 0
+}
+
+// Min-Rate queue property description.
+type OfpQueuePropMinRate struct {
+ PropHeader *OfpQueuePropHeader `protobuf:"bytes,1,opt,name=prop_header,json=propHeader,proto3" json:"prop_header,omitempty"`
+ Rate uint32 `protobuf:"varint,2,opt,name=rate,proto3" json:"rate,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpQueuePropMinRate) Reset() { *m = OfpQueuePropMinRate{} }
+func (m *OfpQueuePropMinRate) String() string { return proto.CompactTextString(m) }
+func (*OfpQueuePropMinRate) ProtoMessage() {}
+func (*OfpQueuePropMinRate) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{74}
+}
+
+func (m *OfpQueuePropMinRate) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpQueuePropMinRate.Unmarshal(m, b)
+}
+func (m *OfpQueuePropMinRate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpQueuePropMinRate.Marshal(b, m, deterministic)
+}
+func (m *OfpQueuePropMinRate) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpQueuePropMinRate.Merge(m, src)
+}
+func (m *OfpQueuePropMinRate) XXX_Size() int {
+ return xxx_messageInfo_OfpQueuePropMinRate.Size(m)
+}
+func (m *OfpQueuePropMinRate) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpQueuePropMinRate.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpQueuePropMinRate proto.InternalMessageInfo
+
+func (m *OfpQueuePropMinRate) GetPropHeader() *OfpQueuePropHeader {
+ if m != nil {
+ return m.PropHeader
+ }
+ return nil
+}
+
+func (m *OfpQueuePropMinRate) GetRate() uint32 {
+ if m != nil {
+ return m.Rate
+ }
+ return 0
+}
+
+// Max-Rate queue property description.
+type OfpQueuePropMaxRate struct {
+ PropHeader *OfpQueuePropHeader `protobuf:"bytes,1,opt,name=prop_header,json=propHeader,proto3" json:"prop_header,omitempty"`
+ Rate uint32 `protobuf:"varint,2,opt,name=rate,proto3" json:"rate,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpQueuePropMaxRate) Reset() { *m = OfpQueuePropMaxRate{} }
+func (m *OfpQueuePropMaxRate) String() string { return proto.CompactTextString(m) }
+func (*OfpQueuePropMaxRate) ProtoMessage() {}
+func (*OfpQueuePropMaxRate) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{75}
+}
+
+func (m *OfpQueuePropMaxRate) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpQueuePropMaxRate.Unmarshal(m, b)
+}
+func (m *OfpQueuePropMaxRate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpQueuePropMaxRate.Marshal(b, m, deterministic)
+}
+func (m *OfpQueuePropMaxRate) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpQueuePropMaxRate.Merge(m, src)
+}
+func (m *OfpQueuePropMaxRate) XXX_Size() int {
+ return xxx_messageInfo_OfpQueuePropMaxRate.Size(m)
+}
+func (m *OfpQueuePropMaxRate) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpQueuePropMaxRate.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpQueuePropMaxRate proto.InternalMessageInfo
+
+func (m *OfpQueuePropMaxRate) GetPropHeader() *OfpQueuePropHeader {
+ if m != nil {
+ return m.PropHeader
+ }
+ return nil
+}
+
+func (m *OfpQueuePropMaxRate) GetRate() uint32 {
+ if m != nil {
+ return m.Rate
+ }
+ return 0
+}
+
+// Experimenter queue property description.
+type OfpQueuePropExperimenter struct {
+ PropHeader *OfpQueuePropHeader `protobuf:"bytes,1,opt,name=prop_header,json=propHeader,proto3" json:"prop_header,omitempty"`
+ Experimenter uint32 `protobuf:"varint,2,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+ Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpQueuePropExperimenter) Reset() { *m = OfpQueuePropExperimenter{} }
+func (m *OfpQueuePropExperimenter) String() string { return proto.CompactTextString(m) }
+func (*OfpQueuePropExperimenter) ProtoMessage() {}
+func (*OfpQueuePropExperimenter) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{76}
+}
+
+func (m *OfpQueuePropExperimenter) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpQueuePropExperimenter.Unmarshal(m, b)
+}
+func (m *OfpQueuePropExperimenter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpQueuePropExperimenter.Marshal(b, m, deterministic)
+}
+func (m *OfpQueuePropExperimenter) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpQueuePropExperimenter.Merge(m, src)
+}
+func (m *OfpQueuePropExperimenter) XXX_Size() int {
+ return xxx_messageInfo_OfpQueuePropExperimenter.Size(m)
+}
+func (m *OfpQueuePropExperimenter) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpQueuePropExperimenter.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpQueuePropExperimenter proto.InternalMessageInfo
+
+func (m *OfpQueuePropExperimenter) GetPropHeader() *OfpQueuePropHeader {
+ if m != nil {
+ return m.PropHeader
+ }
+ return nil
+}
+
+func (m *OfpQueuePropExperimenter) GetExperimenter() uint32 {
+ if m != nil {
+ return m.Experimenter
+ }
+ return 0
+}
+
+func (m *OfpQueuePropExperimenter) GetData() []byte {
+ if m != nil {
+ return m.Data
+ }
+ return nil
+}
+
+// Full description for a queue.
+type OfpPacketQueue struct {
+ QueueId uint32 `protobuf:"varint,1,opt,name=queue_id,json=queueId,proto3" json:"queue_id,omitempty"`
+ Port uint32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
+ Properties []*OfpQueuePropHeader `protobuf:"bytes,4,rep,name=properties,proto3" json:"properties,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpPacketQueue) Reset() { *m = OfpPacketQueue{} }
+func (m *OfpPacketQueue) String() string { return proto.CompactTextString(m) }
+func (*OfpPacketQueue) ProtoMessage() {}
+func (*OfpPacketQueue) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{77}
+}
+
+func (m *OfpPacketQueue) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpPacketQueue.Unmarshal(m, b)
+}
+func (m *OfpPacketQueue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpPacketQueue.Marshal(b, m, deterministic)
+}
+func (m *OfpPacketQueue) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpPacketQueue.Merge(m, src)
+}
+func (m *OfpPacketQueue) XXX_Size() int {
+ return xxx_messageInfo_OfpPacketQueue.Size(m)
+}
+func (m *OfpPacketQueue) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpPacketQueue.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpPacketQueue proto.InternalMessageInfo
+
+func (m *OfpPacketQueue) GetQueueId() uint32 {
+ if m != nil {
+ return m.QueueId
+ }
+ return 0
+}
+
+func (m *OfpPacketQueue) GetPort() uint32 {
+ if m != nil {
+ return m.Port
+ }
+ return 0
+}
+
+func (m *OfpPacketQueue) GetProperties() []*OfpQueuePropHeader {
+ if m != nil {
+ return m.Properties
+ }
+ return nil
+}
+
+// Query for port queue configuration.
+type OfpQueueGetConfigRequest struct {
+ //ofp_header header;
+ Port uint32 `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpQueueGetConfigRequest) Reset() { *m = OfpQueueGetConfigRequest{} }
+func (m *OfpQueueGetConfigRequest) String() string { return proto.CompactTextString(m) }
+func (*OfpQueueGetConfigRequest) ProtoMessage() {}
+func (*OfpQueueGetConfigRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{78}
+}
+
+func (m *OfpQueueGetConfigRequest) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpQueueGetConfigRequest.Unmarshal(m, b)
+}
+func (m *OfpQueueGetConfigRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpQueueGetConfigRequest.Marshal(b, m, deterministic)
+}
+func (m *OfpQueueGetConfigRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpQueueGetConfigRequest.Merge(m, src)
+}
+func (m *OfpQueueGetConfigRequest) XXX_Size() int {
+ return xxx_messageInfo_OfpQueueGetConfigRequest.Size(m)
+}
+func (m *OfpQueueGetConfigRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpQueueGetConfigRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpQueueGetConfigRequest proto.InternalMessageInfo
+
+func (m *OfpQueueGetConfigRequest) GetPort() uint32 {
+ if m != nil {
+ return m.Port
+ }
+ return 0
+}
+
+// Queue configuration for a given port.
+type OfpQueueGetConfigReply struct {
+ //ofp_header header;
+ Port uint32 `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
+ Queues []*OfpPacketQueue `protobuf:"bytes,2,rep,name=queues,proto3" json:"queues,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpQueueGetConfigReply) Reset() { *m = OfpQueueGetConfigReply{} }
+func (m *OfpQueueGetConfigReply) String() string { return proto.CompactTextString(m) }
+func (*OfpQueueGetConfigReply) ProtoMessage() {}
+func (*OfpQueueGetConfigReply) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{79}
+}
+
+func (m *OfpQueueGetConfigReply) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpQueueGetConfigReply.Unmarshal(m, b)
+}
+func (m *OfpQueueGetConfigReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpQueueGetConfigReply.Marshal(b, m, deterministic)
+}
+func (m *OfpQueueGetConfigReply) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpQueueGetConfigReply.Merge(m, src)
+}
+func (m *OfpQueueGetConfigReply) XXX_Size() int {
+ return xxx_messageInfo_OfpQueueGetConfigReply.Size(m)
+}
+func (m *OfpQueueGetConfigReply) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpQueueGetConfigReply.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpQueueGetConfigReply proto.InternalMessageInfo
+
+func (m *OfpQueueGetConfigReply) GetPort() uint32 {
+ if m != nil {
+ return m.Port
+ }
+ return 0
+}
+
+func (m *OfpQueueGetConfigReply) GetQueues() []*OfpPacketQueue {
+ if m != nil {
+ return m.Queues
+ }
+ return nil
+}
+
+// OFPAT_SET_QUEUE action struct: send packets to given queue on port.
+type OfpActionSetQueue struct {
+ Type uint32 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`
+ QueueId uint32 `protobuf:"varint,3,opt,name=queue_id,json=queueId,proto3" json:"queue_id,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpActionSetQueue) Reset() { *m = OfpActionSetQueue{} }
+func (m *OfpActionSetQueue) String() string { return proto.CompactTextString(m) }
+func (*OfpActionSetQueue) ProtoMessage() {}
+func (*OfpActionSetQueue) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{80}
+}
+
+func (m *OfpActionSetQueue) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpActionSetQueue.Unmarshal(m, b)
+}
+func (m *OfpActionSetQueue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpActionSetQueue.Marshal(b, m, deterministic)
+}
+func (m *OfpActionSetQueue) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpActionSetQueue.Merge(m, src)
+}
+func (m *OfpActionSetQueue) XXX_Size() int {
+ return xxx_messageInfo_OfpActionSetQueue.Size(m)
+}
+func (m *OfpActionSetQueue) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpActionSetQueue.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpActionSetQueue proto.InternalMessageInfo
+
+func (m *OfpActionSetQueue) GetType() uint32 {
+ if m != nil {
+ return m.Type
+ }
+ return 0
+}
+
+func (m *OfpActionSetQueue) GetQueueId() uint32 {
+ if m != nil {
+ return m.QueueId
+ }
+ return 0
+}
+
+type OfpQueueStatsRequest struct {
+ PortNo uint32 `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+ QueueId uint32 `protobuf:"varint,2,opt,name=queue_id,json=queueId,proto3" json:"queue_id,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpQueueStatsRequest) Reset() { *m = OfpQueueStatsRequest{} }
+func (m *OfpQueueStatsRequest) String() string { return proto.CompactTextString(m) }
+func (*OfpQueueStatsRequest) ProtoMessage() {}
+func (*OfpQueueStatsRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{81}
+}
+
+func (m *OfpQueueStatsRequest) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpQueueStatsRequest.Unmarshal(m, b)
+}
+func (m *OfpQueueStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpQueueStatsRequest.Marshal(b, m, deterministic)
+}
+func (m *OfpQueueStatsRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpQueueStatsRequest.Merge(m, src)
+}
+func (m *OfpQueueStatsRequest) XXX_Size() int {
+ return xxx_messageInfo_OfpQueueStatsRequest.Size(m)
+}
+func (m *OfpQueueStatsRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpQueueStatsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpQueueStatsRequest proto.InternalMessageInfo
+
+func (m *OfpQueueStatsRequest) GetPortNo() uint32 {
+ if m != nil {
+ return m.PortNo
+ }
+ return 0
+}
+
+func (m *OfpQueueStatsRequest) GetQueueId() uint32 {
+ if m != nil {
+ return m.QueueId
+ }
+ return 0
+}
+
+type OfpQueueStats struct {
+ PortNo uint32 `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+ QueueId uint32 `protobuf:"varint,2,opt,name=queue_id,json=queueId,proto3" json:"queue_id,omitempty"`
+ TxBytes uint64 `protobuf:"varint,3,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`
+ TxPackets uint64 `protobuf:"varint,4,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"`
+ TxErrors uint64 `protobuf:"varint,5,opt,name=tx_errors,json=txErrors,proto3" json:"tx_errors,omitempty"`
+ DurationSec uint32 `protobuf:"varint,6,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
+ DurationNsec uint32 `protobuf:"varint,7,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpQueueStats) Reset() { *m = OfpQueueStats{} }
+func (m *OfpQueueStats) String() string { return proto.CompactTextString(m) }
+func (*OfpQueueStats) ProtoMessage() {}
+func (*OfpQueueStats) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{82}
+}
+
+func (m *OfpQueueStats) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpQueueStats.Unmarshal(m, b)
+}
+func (m *OfpQueueStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpQueueStats.Marshal(b, m, deterministic)
+}
+func (m *OfpQueueStats) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpQueueStats.Merge(m, src)
+}
+func (m *OfpQueueStats) XXX_Size() int {
+ return xxx_messageInfo_OfpQueueStats.Size(m)
+}
+func (m *OfpQueueStats) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpQueueStats.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpQueueStats proto.InternalMessageInfo
+
+func (m *OfpQueueStats) GetPortNo() uint32 {
+ if m != nil {
+ return m.PortNo
+ }
+ return 0
+}
+
+func (m *OfpQueueStats) GetQueueId() uint32 {
+ if m != nil {
+ return m.QueueId
+ }
+ return 0
+}
+
+func (m *OfpQueueStats) GetTxBytes() uint64 {
+ if m != nil {
+ return m.TxBytes
+ }
+ return 0
+}
+
+func (m *OfpQueueStats) GetTxPackets() uint64 {
+ if m != nil {
+ return m.TxPackets
+ }
+ return 0
+}
+
+func (m *OfpQueueStats) GetTxErrors() uint64 {
+ if m != nil {
+ return m.TxErrors
+ }
+ return 0
+}
+
+func (m *OfpQueueStats) GetDurationSec() uint32 {
+ if m != nil {
+ return m.DurationSec
+ }
+ return 0
+}
+
+func (m *OfpQueueStats) GetDurationNsec() uint32 {
+ if m != nil {
+ return m.DurationNsec
+ }
+ return 0
+}
+
+// Role request and reply message.
+type OfpRoleRequest struct {
+ //ofp_header header; /* Type OFPT_ROLE_REQUEST/OFPT_ROLE_REPLY. */
+ Role OfpControllerRole `protobuf:"varint,1,opt,name=role,proto3,enum=openflow_13.OfpControllerRole" json:"role,omitempty"`
+ GenerationId uint64 `protobuf:"varint,2,opt,name=generation_id,json=generationId,proto3" json:"generation_id,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpRoleRequest) Reset() { *m = OfpRoleRequest{} }
+func (m *OfpRoleRequest) String() string { return proto.CompactTextString(m) }
+func (*OfpRoleRequest) ProtoMessage() {}
+func (*OfpRoleRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{83}
+}
+
+func (m *OfpRoleRequest) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpRoleRequest.Unmarshal(m, b)
+}
+func (m *OfpRoleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpRoleRequest.Marshal(b, m, deterministic)
+}
+func (m *OfpRoleRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpRoleRequest.Merge(m, src)
+}
+func (m *OfpRoleRequest) XXX_Size() int {
+ return xxx_messageInfo_OfpRoleRequest.Size(m)
+}
+func (m *OfpRoleRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpRoleRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpRoleRequest proto.InternalMessageInfo
+
+func (m *OfpRoleRequest) GetRole() OfpControllerRole {
+ if m != nil {
+ return m.Role
+ }
+ return OfpControllerRole_OFPCR_ROLE_NOCHANGE
+}
+
+func (m *OfpRoleRequest) GetGenerationId() uint64 {
+ if m != nil {
+ return m.GenerationId
+ }
+ return 0
+}
+
+// Asynchronous message configuration.
+type OfpAsyncConfig struct {
+ //ofp_header header; /* OFPT_GET_ASYNC_REPLY or OFPT_SET_ASYNC. */
+ PacketInMask []uint32 `protobuf:"varint,1,rep,packed,name=packet_in_mask,json=packetInMask,proto3" json:"packet_in_mask,omitempty"`
+ PortStatusMask []uint32 `protobuf:"varint,2,rep,packed,name=port_status_mask,json=portStatusMask,proto3" json:"port_status_mask,omitempty"`
+ FlowRemovedMask []uint32 `protobuf:"varint,3,rep,packed,name=flow_removed_mask,json=flowRemovedMask,proto3" json:"flow_removed_mask,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfpAsyncConfig) Reset() { *m = OfpAsyncConfig{} }
+func (m *OfpAsyncConfig) String() string { return proto.CompactTextString(m) }
+func (*OfpAsyncConfig) ProtoMessage() {}
+func (*OfpAsyncConfig) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{84}
+}
+
+func (m *OfpAsyncConfig) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfpAsyncConfig.Unmarshal(m, b)
+}
+func (m *OfpAsyncConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfpAsyncConfig.Marshal(b, m, deterministic)
+}
+func (m *OfpAsyncConfig) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfpAsyncConfig.Merge(m, src)
+}
+func (m *OfpAsyncConfig) XXX_Size() int {
+ return xxx_messageInfo_OfpAsyncConfig.Size(m)
+}
+func (m *OfpAsyncConfig) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfpAsyncConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfpAsyncConfig proto.InternalMessageInfo
+
+func (m *OfpAsyncConfig) GetPacketInMask() []uint32 {
+ if m != nil {
+ return m.PacketInMask
+ }
+ return nil
+}
+
+func (m *OfpAsyncConfig) GetPortStatusMask() []uint32 {
+ if m != nil {
+ return m.PortStatusMask
+ }
+ return nil
+}
+
+func (m *OfpAsyncConfig) GetFlowRemovedMask() []uint32 {
+ if m != nil {
+ return m.FlowRemovedMask
+ }
+ return nil
+}
+
+type MeterModUpdate struct {
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ MeterMod *OfpMeterMod `protobuf:"bytes,2,opt,name=meter_mod,json=meterMod,proto3" json:"meter_mod,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *MeterModUpdate) Reset() { *m = MeterModUpdate{} }
+func (m *MeterModUpdate) String() string { return proto.CompactTextString(m) }
+func (*MeterModUpdate) ProtoMessage() {}
+func (*MeterModUpdate) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{85}
+}
+
+func (m *MeterModUpdate) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_MeterModUpdate.Unmarshal(m, b)
+}
+func (m *MeterModUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_MeterModUpdate.Marshal(b, m, deterministic)
+}
+func (m *MeterModUpdate) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_MeterModUpdate.Merge(m, src)
+}
+func (m *MeterModUpdate) XXX_Size() int {
+ return xxx_messageInfo_MeterModUpdate.Size(m)
+}
+func (m *MeterModUpdate) XXX_DiscardUnknown() {
+ xxx_messageInfo_MeterModUpdate.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MeterModUpdate proto.InternalMessageInfo
+
+func (m *MeterModUpdate) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *MeterModUpdate) GetMeterMod() *OfpMeterMod {
+ if m != nil {
+ return m.MeterMod
+ }
+ return nil
+}
+
+type MeterStatsReply struct {
+ MeterStats []*OfpMeterStats `protobuf:"bytes,1,rep,name=meter_stats,json=meterStats,proto3" json:"meter_stats,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *MeterStatsReply) Reset() { *m = MeterStatsReply{} }
+func (m *MeterStatsReply) String() string { return proto.CompactTextString(m) }
+func (*MeterStatsReply) ProtoMessage() {}
+func (*MeterStatsReply) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{86}
+}
+
+func (m *MeterStatsReply) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_MeterStatsReply.Unmarshal(m, b)
+}
+func (m *MeterStatsReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_MeterStatsReply.Marshal(b, m, deterministic)
+}
+func (m *MeterStatsReply) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_MeterStatsReply.Merge(m, src)
+}
+func (m *MeterStatsReply) XXX_Size() int {
+ return xxx_messageInfo_MeterStatsReply.Size(m)
+}
+func (m *MeterStatsReply) XXX_DiscardUnknown() {
+ xxx_messageInfo_MeterStatsReply.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MeterStatsReply proto.InternalMessageInfo
+
+func (m *MeterStatsReply) GetMeterStats() []*OfpMeterStats {
+ if m != nil {
+ return m.MeterStats
+ }
+ return nil
+}
+
+type FlowTableUpdate struct {
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ FlowMod *OfpFlowMod `protobuf:"bytes,2,opt,name=flow_mod,json=flowMod,proto3" json:"flow_mod,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *FlowTableUpdate) Reset() { *m = FlowTableUpdate{} }
+func (m *FlowTableUpdate) String() string { return proto.CompactTextString(m) }
+func (*FlowTableUpdate) ProtoMessage() {}
+func (*FlowTableUpdate) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{87}
+}
+
+func (m *FlowTableUpdate) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_FlowTableUpdate.Unmarshal(m, b)
+}
+func (m *FlowTableUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_FlowTableUpdate.Marshal(b, m, deterministic)
+}
+func (m *FlowTableUpdate) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_FlowTableUpdate.Merge(m, src)
+}
+func (m *FlowTableUpdate) XXX_Size() int {
+ return xxx_messageInfo_FlowTableUpdate.Size(m)
+}
+func (m *FlowTableUpdate) XXX_DiscardUnknown() {
+ xxx_messageInfo_FlowTableUpdate.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FlowTableUpdate proto.InternalMessageInfo
+
+func (m *FlowTableUpdate) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *FlowTableUpdate) GetFlowMod() *OfpFlowMod {
+ if m != nil {
+ return m.FlowMod
+ }
+ return nil
+}
+
+type FlowGroupTableUpdate struct {
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ GroupMod *OfpGroupMod `protobuf:"bytes,2,opt,name=group_mod,json=groupMod,proto3" json:"group_mod,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *FlowGroupTableUpdate) Reset() { *m = FlowGroupTableUpdate{} }
+func (m *FlowGroupTableUpdate) String() string { return proto.CompactTextString(m) }
+func (*FlowGroupTableUpdate) ProtoMessage() {}
+func (*FlowGroupTableUpdate) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{88}
+}
+
+func (m *FlowGroupTableUpdate) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_FlowGroupTableUpdate.Unmarshal(m, b)
+}
+func (m *FlowGroupTableUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_FlowGroupTableUpdate.Marshal(b, m, deterministic)
+}
+func (m *FlowGroupTableUpdate) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_FlowGroupTableUpdate.Merge(m, src)
+}
+func (m *FlowGroupTableUpdate) XXX_Size() int {
+ return xxx_messageInfo_FlowGroupTableUpdate.Size(m)
+}
+func (m *FlowGroupTableUpdate) XXX_DiscardUnknown() {
+ xxx_messageInfo_FlowGroupTableUpdate.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FlowGroupTableUpdate proto.InternalMessageInfo
+
+func (m *FlowGroupTableUpdate) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *FlowGroupTableUpdate) GetGroupMod() *OfpGroupMod {
+ if m != nil {
+ return m.GroupMod
+ }
+ return nil
+}
+
+type Flows struct {
+ Items []*OfpFlowStats `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Flows) Reset() { *m = Flows{} }
+func (m *Flows) String() string { return proto.CompactTextString(m) }
+func (*Flows) ProtoMessage() {}
+func (*Flows) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{89}
+}
+
+func (m *Flows) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Flows.Unmarshal(m, b)
+}
+func (m *Flows) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Flows.Marshal(b, m, deterministic)
+}
+func (m *Flows) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Flows.Merge(m, src)
+}
+func (m *Flows) XXX_Size() int {
+ return xxx_messageInfo_Flows.Size(m)
+}
+func (m *Flows) XXX_DiscardUnknown() {
+ xxx_messageInfo_Flows.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Flows proto.InternalMessageInfo
+
+func (m *Flows) GetItems() []*OfpFlowStats {
+ if m != nil {
+ return m.Items
+ }
+ return nil
+}
+
+type Meters struct {
+ Items []*OfpMeterEntry `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Meters) Reset() { *m = Meters{} }
+func (m *Meters) String() string { return proto.CompactTextString(m) }
+func (*Meters) ProtoMessage() {}
+func (*Meters) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{90}
+}
+
+func (m *Meters) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Meters.Unmarshal(m, b)
+}
+func (m *Meters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Meters.Marshal(b, m, deterministic)
+}
+func (m *Meters) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Meters.Merge(m, src)
+}
+func (m *Meters) XXX_Size() int {
+ return xxx_messageInfo_Meters.Size(m)
+}
+func (m *Meters) XXX_DiscardUnknown() {
+ xxx_messageInfo_Meters.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Meters proto.InternalMessageInfo
+
+func (m *Meters) GetItems() []*OfpMeterEntry {
+ if m != nil {
+ return m.Items
+ }
+ return nil
+}
+
+type FlowGroups struct {
+ Items []*OfpGroupEntry `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *FlowGroups) Reset() { *m = FlowGroups{} }
+func (m *FlowGroups) String() string { return proto.CompactTextString(m) }
+func (*FlowGroups) ProtoMessage() {}
+func (*FlowGroups) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{91}
+}
+
+func (m *FlowGroups) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_FlowGroups.Unmarshal(m, b)
+}
+func (m *FlowGroups) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_FlowGroups.Marshal(b, m, deterministic)
+}
+func (m *FlowGroups) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_FlowGroups.Merge(m, src)
+}
+func (m *FlowGroups) XXX_Size() int {
+ return xxx_messageInfo_FlowGroups.Size(m)
+}
+func (m *FlowGroups) XXX_DiscardUnknown() {
+ xxx_messageInfo_FlowGroups.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FlowGroups proto.InternalMessageInfo
+
+func (m *FlowGroups) GetItems() []*OfpGroupEntry {
+ if m != nil {
+ return m.Items
+ }
+ return nil
+}
+
+type FlowChanges struct {
+ ToAdd *Flows `protobuf:"bytes,1,opt,name=to_add,json=toAdd,proto3" json:"to_add,omitempty"`
+ ToRemove *Flows `protobuf:"bytes,2,opt,name=to_remove,json=toRemove,proto3" json:"to_remove,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *FlowChanges) Reset() { *m = FlowChanges{} }
+func (m *FlowChanges) String() string { return proto.CompactTextString(m) }
+func (*FlowChanges) ProtoMessage() {}
+func (*FlowChanges) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{92}
+}
+
+func (m *FlowChanges) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_FlowChanges.Unmarshal(m, b)
+}
+func (m *FlowChanges) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_FlowChanges.Marshal(b, m, deterministic)
+}
+func (m *FlowChanges) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_FlowChanges.Merge(m, src)
+}
+func (m *FlowChanges) XXX_Size() int {
+ return xxx_messageInfo_FlowChanges.Size(m)
+}
+func (m *FlowChanges) XXX_DiscardUnknown() {
+ xxx_messageInfo_FlowChanges.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FlowChanges proto.InternalMessageInfo
+
+func (m *FlowChanges) GetToAdd() *Flows {
+ if m != nil {
+ return m.ToAdd
+ }
+ return nil
+}
+
+func (m *FlowChanges) GetToRemove() *Flows {
+ if m != nil {
+ return m.ToRemove
+ }
+ return nil
+}
+
+type FlowGroupChanges struct {
+ ToAdd *FlowGroups `protobuf:"bytes,1,opt,name=to_add,json=toAdd,proto3" json:"to_add,omitempty"`
+ ToRemove *FlowGroups `protobuf:"bytes,2,opt,name=to_remove,json=toRemove,proto3" json:"to_remove,omitempty"`
+ ToUpdate *FlowGroups `protobuf:"bytes,3,opt,name=to_update,json=toUpdate,proto3" json:"to_update,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *FlowGroupChanges) Reset() { *m = FlowGroupChanges{} }
+func (m *FlowGroupChanges) String() string { return proto.CompactTextString(m) }
+func (*FlowGroupChanges) ProtoMessage() {}
+func (*FlowGroupChanges) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{93}
+}
+
+func (m *FlowGroupChanges) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_FlowGroupChanges.Unmarshal(m, b)
+}
+func (m *FlowGroupChanges) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_FlowGroupChanges.Marshal(b, m, deterministic)
+}
+func (m *FlowGroupChanges) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_FlowGroupChanges.Merge(m, src)
+}
+func (m *FlowGroupChanges) XXX_Size() int {
+ return xxx_messageInfo_FlowGroupChanges.Size(m)
+}
+func (m *FlowGroupChanges) XXX_DiscardUnknown() {
+ xxx_messageInfo_FlowGroupChanges.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FlowGroupChanges proto.InternalMessageInfo
+
+func (m *FlowGroupChanges) GetToAdd() *FlowGroups {
+ if m != nil {
+ return m.ToAdd
+ }
+ return nil
+}
+
+func (m *FlowGroupChanges) GetToRemove() *FlowGroups {
+ if m != nil {
+ return m.ToRemove
+ }
+ return nil
+}
+
+func (m *FlowGroupChanges) GetToUpdate() *FlowGroups {
+ if m != nil {
+ return m.ToUpdate
+ }
+ return nil
+}
+
+type PacketIn struct {
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ PacketIn *OfpPacketIn `protobuf:"bytes,2,opt,name=packet_in,json=packetIn,proto3" json:"packet_in,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *PacketIn) Reset() { *m = PacketIn{} }
+func (m *PacketIn) String() string { return proto.CompactTextString(m) }
+func (*PacketIn) ProtoMessage() {}
+func (*PacketIn) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{94}
+}
+
+func (m *PacketIn) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_PacketIn.Unmarshal(m, b)
+}
+func (m *PacketIn) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_PacketIn.Marshal(b, m, deterministic)
+}
+func (m *PacketIn) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_PacketIn.Merge(m, src)
+}
+func (m *PacketIn) XXX_Size() int {
+ return xxx_messageInfo_PacketIn.Size(m)
+}
+func (m *PacketIn) XXX_DiscardUnknown() {
+ xxx_messageInfo_PacketIn.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PacketIn proto.InternalMessageInfo
+
+func (m *PacketIn) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *PacketIn) GetPacketIn() *OfpPacketIn {
+ if m != nil {
+ return m.PacketIn
+ }
+ return nil
+}
+
+type PacketOut struct {
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ PacketOut *OfpPacketOut `protobuf:"bytes,2,opt,name=packet_out,json=packetOut,proto3" json:"packet_out,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *PacketOut) Reset() { *m = PacketOut{} }
+func (m *PacketOut) String() string { return proto.CompactTextString(m) }
+func (*PacketOut) ProtoMessage() {}
+func (*PacketOut) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{95}
+}
+
+func (m *PacketOut) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_PacketOut.Unmarshal(m, b)
+}
+func (m *PacketOut) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_PacketOut.Marshal(b, m, deterministic)
+}
+func (m *PacketOut) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_PacketOut.Merge(m, src)
+}
+func (m *PacketOut) XXX_Size() int {
+ return xxx_messageInfo_PacketOut.Size(m)
+}
+func (m *PacketOut) XXX_DiscardUnknown() {
+ xxx_messageInfo_PacketOut.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PacketOut proto.InternalMessageInfo
+
+func (m *PacketOut) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *PacketOut) GetPacketOut() *OfpPacketOut {
+ if m != nil {
+ return m.PacketOut
+ }
+ return nil
+}
+
+type ChangeEvent struct {
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // Types that are valid to be assigned to Event:
+ // *ChangeEvent_PortStatus
+ Event isChangeEvent_Event `protobuf_oneof:"event"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *ChangeEvent) Reset() { *m = ChangeEvent{} }
+func (m *ChangeEvent) String() string { return proto.CompactTextString(m) }
+func (*ChangeEvent) ProtoMessage() {}
+func (*ChangeEvent) Descriptor() ([]byte, []int) {
+ return fileDescriptor_08e3a4e375aeddc7, []int{96}
+}
+
+func (m *ChangeEvent) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_ChangeEvent.Unmarshal(m, b)
+}
+func (m *ChangeEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_ChangeEvent.Marshal(b, m, deterministic)
+}
+func (m *ChangeEvent) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ChangeEvent.Merge(m, src)
+}
+func (m *ChangeEvent) XXX_Size() int {
+ return xxx_messageInfo_ChangeEvent.Size(m)
+}
+func (m *ChangeEvent) XXX_DiscardUnknown() {
+ xxx_messageInfo_ChangeEvent.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ChangeEvent proto.InternalMessageInfo
+
+func (m *ChangeEvent) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+type isChangeEvent_Event interface {
+ isChangeEvent_Event()
+}
+
+type ChangeEvent_PortStatus struct {
+ PortStatus *OfpPortStatus `protobuf:"bytes,2,opt,name=port_status,json=portStatus,proto3,oneof"`
+}
+
+func (*ChangeEvent_PortStatus) isChangeEvent_Event() {}
+
+func (m *ChangeEvent) GetEvent() isChangeEvent_Event {
+ if m != nil {
+ return m.Event
+ }
+ return nil
+}
+
+func (m *ChangeEvent) GetPortStatus() *OfpPortStatus {
+ if x, ok := m.GetEvent().(*ChangeEvent_PortStatus); ok {
+ return x.PortStatus
+ }
+ return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*ChangeEvent) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*ChangeEvent_PortStatus)(nil),
+ }
+}
+
+func init() {
+ proto.RegisterEnum("openflow_13.OfpPortNo", OfpPortNo_name, OfpPortNo_value)
+ proto.RegisterEnum("openflow_13.OfpType", OfpType_name, OfpType_value)
+ proto.RegisterEnum("openflow_13.OfpHelloElemType", OfpHelloElemType_name, OfpHelloElemType_value)
+ proto.RegisterEnum("openflow_13.OfpConfigFlags", OfpConfigFlags_name, OfpConfigFlags_value)
+ proto.RegisterEnum("openflow_13.OfpTableConfig", OfpTableConfig_name, OfpTableConfig_value)
+ proto.RegisterEnum("openflow_13.OfpTable", OfpTable_name, OfpTable_value)
+ proto.RegisterEnum("openflow_13.OfpCapabilities", OfpCapabilities_name, OfpCapabilities_value)
+ proto.RegisterEnum("openflow_13.OfpPortConfig", OfpPortConfig_name, OfpPortConfig_value)
+ proto.RegisterEnum("openflow_13.OfpPortState", OfpPortState_name, OfpPortState_value)
+ proto.RegisterEnum("openflow_13.OfpPortFeatures", OfpPortFeatures_name, OfpPortFeatures_value)
+ proto.RegisterEnum("openflow_13.OfpPortReason", OfpPortReason_name, OfpPortReason_value)
+ proto.RegisterEnum("openflow_13.OfpMatchType", OfpMatchType_name, OfpMatchType_value)
+ proto.RegisterEnum("openflow_13.OfpOxmClass", OfpOxmClass_name, OfpOxmClass_value)
+ proto.RegisterEnum("openflow_13.OxmOfbFieldTypes", OxmOfbFieldTypes_name, OxmOfbFieldTypes_value)
+ proto.RegisterEnum("openflow_13.OfpVlanId", OfpVlanId_name, OfpVlanId_value)
+ proto.RegisterEnum("openflow_13.OfpIpv6ExthdrFlags", OfpIpv6ExthdrFlags_name, OfpIpv6ExthdrFlags_value)
+ proto.RegisterEnum("openflow_13.OfpActionType", OfpActionType_name, OfpActionType_value)
+ proto.RegisterEnum("openflow_13.OfpControllerMaxLen", OfpControllerMaxLen_name, OfpControllerMaxLen_value)
+ proto.RegisterEnum("openflow_13.OfpInstructionType", OfpInstructionType_name, OfpInstructionType_value)
+ proto.RegisterEnum("openflow_13.OfpFlowModCommand", OfpFlowModCommand_name, OfpFlowModCommand_value)
+ proto.RegisterEnum("openflow_13.OfpFlowModFlags", OfpFlowModFlags_name, OfpFlowModFlags_value)
+ proto.RegisterEnum("openflow_13.OfpGroup", OfpGroup_name, OfpGroup_value)
+ proto.RegisterEnum("openflow_13.OfpGroupModCommand", OfpGroupModCommand_name, OfpGroupModCommand_value)
+ proto.RegisterEnum("openflow_13.OfpGroupType", OfpGroupType_name, OfpGroupType_value)
+ proto.RegisterEnum("openflow_13.OfpPacketInReason", OfpPacketInReason_name, OfpPacketInReason_value)
+ proto.RegisterEnum("openflow_13.OfpFlowRemovedReason", OfpFlowRemovedReason_name, OfpFlowRemovedReason_value)
+ proto.RegisterEnum("openflow_13.OfpMeter", OfpMeter_name, OfpMeter_value)
+ proto.RegisterEnum("openflow_13.OfpMeterBandType", OfpMeterBandType_name, OfpMeterBandType_value)
+ proto.RegisterEnum("openflow_13.OfpMeterModCommand", OfpMeterModCommand_name, OfpMeterModCommand_value)
+ proto.RegisterEnum("openflow_13.OfpMeterFlags", OfpMeterFlags_name, OfpMeterFlags_value)
+ proto.RegisterEnum("openflow_13.OfpErrorType", OfpErrorType_name, OfpErrorType_value)
+ proto.RegisterEnum("openflow_13.OfpHelloFailedCode", OfpHelloFailedCode_name, OfpHelloFailedCode_value)
+ proto.RegisterEnum("openflow_13.OfpBadRequestCode", OfpBadRequestCode_name, OfpBadRequestCode_value)
+ proto.RegisterEnum("openflow_13.OfpBadActionCode", OfpBadActionCode_name, OfpBadActionCode_value)
+ proto.RegisterEnum("openflow_13.OfpBadInstructionCode", OfpBadInstructionCode_name, OfpBadInstructionCode_value)
+ proto.RegisterEnum("openflow_13.OfpBadMatchCode", OfpBadMatchCode_name, OfpBadMatchCode_value)
+ proto.RegisterEnum("openflow_13.OfpFlowModFailedCode", OfpFlowModFailedCode_name, OfpFlowModFailedCode_value)
+ proto.RegisterEnum("openflow_13.OfpGroupModFailedCode", OfpGroupModFailedCode_name, OfpGroupModFailedCode_value)
+ proto.RegisterEnum("openflow_13.OfpPortModFailedCode", OfpPortModFailedCode_name, OfpPortModFailedCode_value)
+ proto.RegisterEnum("openflow_13.OfpTableModFailedCode", OfpTableModFailedCode_name, OfpTableModFailedCode_value)
+ proto.RegisterEnum("openflow_13.OfpQueueOpFailedCode", OfpQueueOpFailedCode_name, OfpQueueOpFailedCode_value)
+ proto.RegisterEnum("openflow_13.OfpSwitchConfigFailedCode", OfpSwitchConfigFailedCode_name, OfpSwitchConfigFailedCode_value)
+ proto.RegisterEnum("openflow_13.OfpRoleRequestFailedCode", OfpRoleRequestFailedCode_name, OfpRoleRequestFailedCode_value)
+ proto.RegisterEnum("openflow_13.OfpMeterModFailedCode", OfpMeterModFailedCode_name, OfpMeterModFailedCode_value)
+ proto.RegisterEnum("openflow_13.OfpTableFeaturesFailedCode", OfpTableFeaturesFailedCode_name, OfpTableFeaturesFailedCode_value)
+ proto.RegisterEnum("openflow_13.OfpMultipartType", OfpMultipartType_name, OfpMultipartType_value)
+ proto.RegisterEnum("openflow_13.OfpMultipartRequestFlags", OfpMultipartRequestFlags_name, OfpMultipartRequestFlags_value)
+ proto.RegisterEnum("openflow_13.OfpMultipartReplyFlags", OfpMultipartReplyFlags_name, OfpMultipartReplyFlags_value)
+ proto.RegisterEnum("openflow_13.OfpTableFeaturePropType", OfpTableFeaturePropType_name, OfpTableFeaturePropType_value)
+ proto.RegisterEnum("openflow_13.OfpGroupCapabilities", OfpGroupCapabilities_name, OfpGroupCapabilities_value)
+ proto.RegisterEnum("openflow_13.OfpQueueProperties", OfpQueueProperties_name, OfpQueueProperties_value)
+ proto.RegisterEnum("openflow_13.OfpControllerRole", OfpControllerRole_name, OfpControllerRole_value)
+ proto.RegisterType((*OfpHeader)(nil), "openflow_13.ofp_header")
+ proto.RegisterType((*OfpHelloElemHeader)(nil), "openflow_13.ofp_hello_elem_header")
+ proto.RegisterType((*OfpHelloElemVersionbitmap)(nil), "openflow_13.ofp_hello_elem_versionbitmap")
+ proto.RegisterType((*OfpHello)(nil), "openflow_13.ofp_hello")
+ proto.RegisterType((*OfpSwitchConfig)(nil), "openflow_13.ofp_switch_config")
+ proto.RegisterType((*OfpTableMod)(nil), "openflow_13.ofp_table_mod")
+ proto.RegisterType((*OfpPort)(nil), "openflow_13.ofp_port")
+ proto.RegisterType((*OfpSwitchFeatures)(nil), "openflow_13.ofp_switch_features")
+ proto.RegisterType((*OfpPortStatus)(nil), "openflow_13.ofp_port_status")
+ proto.RegisterType((*OfpPortMod)(nil), "openflow_13.ofp_port_mod")
+ proto.RegisterType((*OfpMatch)(nil), "openflow_13.ofp_match")
+ proto.RegisterType((*OfpOxmField)(nil), "openflow_13.ofp_oxm_field")
+ proto.RegisterType((*OfpOxmOfbField)(nil), "openflow_13.ofp_oxm_ofb_field")
+ proto.RegisterType((*OfpOxmExperimenterField)(nil), "openflow_13.ofp_oxm_experimenter_field")
+ proto.RegisterType((*OfpAction)(nil), "openflow_13.ofp_action")
+ proto.RegisterType((*OfpActionOutput)(nil), "openflow_13.ofp_action_output")
+ proto.RegisterType((*OfpActionMplsTtl)(nil), "openflow_13.ofp_action_mpls_ttl")
+ proto.RegisterType((*OfpActionPush)(nil), "openflow_13.ofp_action_push")
+ proto.RegisterType((*OfpActionPopMpls)(nil), "openflow_13.ofp_action_pop_mpls")
+ proto.RegisterType((*OfpActionGroup)(nil), "openflow_13.ofp_action_group")
+ proto.RegisterType((*OfpActionNwTtl)(nil), "openflow_13.ofp_action_nw_ttl")
+ proto.RegisterType((*OfpActionSetField)(nil), "openflow_13.ofp_action_set_field")
+ proto.RegisterType((*OfpActionExperimenter)(nil), "openflow_13.ofp_action_experimenter")
+ proto.RegisterType((*OfpInstruction)(nil), "openflow_13.ofp_instruction")
+ proto.RegisterType((*OfpInstructionGotoTable)(nil), "openflow_13.ofp_instruction_goto_table")
+ proto.RegisterType((*OfpInstructionWriteMetadata)(nil), "openflow_13.ofp_instruction_write_metadata")
+ proto.RegisterType((*OfpInstructionActions)(nil), "openflow_13.ofp_instruction_actions")
+ proto.RegisterType((*OfpInstructionMeter)(nil), "openflow_13.ofp_instruction_meter")
+ proto.RegisterType((*OfpInstructionExperimenter)(nil), "openflow_13.ofp_instruction_experimenter")
+ proto.RegisterType((*OfpFlowMod)(nil), "openflow_13.ofp_flow_mod")
+ proto.RegisterType((*OfpBucket)(nil), "openflow_13.ofp_bucket")
+ proto.RegisterType((*OfpGroupMod)(nil), "openflow_13.ofp_group_mod")
+ proto.RegisterType((*OfpPacketOut)(nil), "openflow_13.ofp_packet_out")
+ proto.RegisterType((*OfpPacketIn)(nil), "openflow_13.ofp_packet_in")
+ proto.RegisterType((*OfpFlowRemoved)(nil), "openflow_13.ofp_flow_removed")
+ proto.RegisterType((*OfpMeterBandHeader)(nil), "openflow_13.ofp_meter_band_header")
+ proto.RegisterType((*OfpMeterBandDrop)(nil), "openflow_13.ofp_meter_band_drop")
+ proto.RegisterType((*OfpMeterBandDscpRemark)(nil), "openflow_13.ofp_meter_band_dscp_remark")
+ proto.RegisterType((*OfpMeterBandExperimenter)(nil), "openflow_13.ofp_meter_band_experimenter")
+ proto.RegisterType((*OfpMeterMod)(nil), "openflow_13.ofp_meter_mod")
+ proto.RegisterType((*OfpErrorMsg)(nil), "openflow_13.ofp_error_msg")
+ proto.RegisterType((*OfpErrorExperimenterMsg)(nil), "openflow_13.ofp_error_experimenter_msg")
+ proto.RegisterType((*OfpMultipartRequest)(nil), "openflow_13.ofp_multipart_request")
+ proto.RegisterType((*OfpMultipartReply)(nil), "openflow_13.ofp_multipart_reply")
+ proto.RegisterType((*OfpDesc)(nil), "openflow_13.ofp_desc")
+ proto.RegisterType((*OfpFlowStatsRequest)(nil), "openflow_13.ofp_flow_stats_request")
+ proto.RegisterType((*OfpFlowStats)(nil), "openflow_13.ofp_flow_stats")
+ proto.RegisterType((*OfpAggregateStatsRequest)(nil), "openflow_13.ofp_aggregate_stats_request")
+ proto.RegisterType((*OfpAggregateStatsReply)(nil), "openflow_13.ofp_aggregate_stats_reply")
+ proto.RegisterType((*OfpTableFeatureProperty)(nil), "openflow_13.ofp_table_feature_property")
+ proto.RegisterType((*OfpTableFeaturePropInstructions)(nil), "openflow_13.ofp_table_feature_prop_instructions")
+ proto.RegisterType((*OfpTableFeaturePropNextTables)(nil), "openflow_13.ofp_table_feature_prop_next_tables")
+ proto.RegisterType((*OfpTableFeaturePropActions)(nil), "openflow_13.ofp_table_feature_prop_actions")
+ proto.RegisterType((*OfpTableFeaturePropOxm)(nil), "openflow_13.ofp_table_feature_prop_oxm")
+ proto.RegisterType((*OfpTableFeaturePropExperimenter)(nil), "openflow_13.ofp_table_feature_prop_experimenter")
+ proto.RegisterType((*OfpTableFeatures)(nil), "openflow_13.ofp_table_features")
+ proto.RegisterType((*OfpTableStats)(nil), "openflow_13.ofp_table_stats")
+ proto.RegisterType((*OfpPortStatsRequest)(nil), "openflow_13.ofp_port_stats_request")
+ proto.RegisterType((*OfpPortStats)(nil), "openflow_13.ofp_port_stats")
+ proto.RegisterType((*OfpGroupStatsRequest)(nil), "openflow_13.ofp_group_stats_request")
+ proto.RegisterType((*OfpBucketCounter)(nil), "openflow_13.ofp_bucket_counter")
+ proto.RegisterType((*OfpGroupStats)(nil), "openflow_13.ofp_group_stats")
+ proto.RegisterType((*OfpGroupDesc)(nil), "openflow_13.ofp_group_desc")
+ proto.RegisterType((*OfpGroupEntry)(nil), "openflow_13.ofp_group_entry")
+ proto.RegisterType((*OfpGroupFeatures)(nil), "openflow_13.ofp_group_features")
+ proto.RegisterType((*OfpMeterMultipartRequest)(nil), "openflow_13.ofp_meter_multipart_request")
+ proto.RegisterType((*OfpMeterBandStats)(nil), "openflow_13.ofp_meter_band_stats")
+ proto.RegisterType((*OfpMeterStats)(nil), "openflow_13.ofp_meter_stats")
+ proto.RegisterType((*OfpMeterConfig)(nil), "openflow_13.ofp_meter_config")
+ proto.RegisterType((*OfpMeterFeatures)(nil), "openflow_13.ofp_meter_features")
+ proto.RegisterType((*OfpMeterEntry)(nil), "openflow_13.ofp_meter_entry")
+ proto.RegisterType((*OfpExperimenterMultipartHeader)(nil), "openflow_13.ofp_experimenter_multipart_header")
+ proto.RegisterType((*OfpExperimenterHeader)(nil), "openflow_13.ofp_experimenter_header")
+ proto.RegisterType((*OfpQueuePropHeader)(nil), "openflow_13.ofp_queue_prop_header")
+ proto.RegisterType((*OfpQueuePropMinRate)(nil), "openflow_13.ofp_queue_prop_min_rate")
+ proto.RegisterType((*OfpQueuePropMaxRate)(nil), "openflow_13.ofp_queue_prop_max_rate")
+ proto.RegisterType((*OfpQueuePropExperimenter)(nil), "openflow_13.ofp_queue_prop_experimenter")
+ proto.RegisterType((*OfpPacketQueue)(nil), "openflow_13.ofp_packet_queue")
+ proto.RegisterType((*OfpQueueGetConfigRequest)(nil), "openflow_13.ofp_queue_get_config_request")
+ proto.RegisterType((*OfpQueueGetConfigReply)(nil), "openflow_13.ofp_queue_get_config_reply")
+ proto.RegisterType((*OfpActionSetQueue)(nil), "openflow_13.ofp_action_set_queue")
+ proto.RegisterType((*OfpQueueStatsRequest)(nil), "openflow_13.ofp_queue_stats_request")
+ proto.RegisterType((*OfpQueueStats)(nil), "openflow_13.ofp_queue_stats")
+ proto.RegisterType((*OfpRoleRequest)(nil), "openflow_13.ofp_role_request")
+ proto.RegisterType((*OfpAsyncConfig)(nil), "openflow_13.ofp_async_config")
+ proto.RegisterType((*MeterModUpdate)(nil), "openflow_13.MeterModUpdate")
+ proto.RegisterType((*MeterStatsReply)(nil), "openflow_13.MeterStatsReply")
+ proto.RegisterType((*FlowTableUpdate)(nil), "openflow_13.FlowTableUpdate")
+ proto.RegisterType((*FlowGroupTableUpdate)(nil), "openflow_13.FlowGroupTableUpdate")
+ proto.RegisterType((*Flows)(nil), "openflow_13.Flows")
+ proto.RegisterType((*Meters)(nil), "openflow_13.Meters")
+ proto.RegisterType((*FlowGroups)(nil), "openflow_13.FlowGroups")
+ proto.RegisterType((*FlowChanges)(nil), "openflow_13.FlowChanges")
+ proto.RegisterType((*FlowGroupChanges)(nil), "openflow_13.FlowGroupChanges")
+ proto.RegisterType((*PacketIn)(nil), "openflow_13.PacketIn")
+ proto.RegisterType((*PacketOut)(nil), "openflow_13.PacketOut")
+ proto.RegisterType((*ChangeEvent)(nil), "openflow_13.ChangeEvent")
+}
+
+func init() { proto.RegisterFile("voltha_protos/openflow_13.proto", fileDescriptor_08e3a4e375aeddc7) }
+
+var fileDescriptor_08e3a4e375aeddc7 = []byte{
+ // 8423 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x7d, 0x5b, 0x8c, 0x1b, 0x59,
+ 0x76, 0x98, 0xf8, 0xe8, 0x6e, 0xf2, 0xb2, 0xbb, 0x55, 0x2a, 0xbd, 0x28, 0xb5, 0x34, 0x92, 0x38,
+ 0x33, 0xbb, 0xb3, 0xdc, 0x78, 0x34, 0x7a, 0xac, 0x76, 0xbd, 0x0f, 0x47, 0x45, 0xb2, 0xd8, 0xe4,
+ 0x88, 0x2f, 0x55, 0x55, 0xb7, 0xa4, 0x0d, 0x92, 0x02, 0x9b, 0x2c, 0x75, 0xd3, 0x43, 0xb2, 0xb8,
+ 0x55, 0xd5, 0xad, 0x96, 0x63, 0x07, 0x4a, 0x8c, 0x20, 0x40, 0x12, 0xdb, 0x09, 0xfc, 0xb1, 0x40,
+ 0xe0, 0x00, 0x31, 0x92, 0x7c, 0x04, 0x01, 0xf2, 0x11, 0x20, 0x40, 0x80, 0x7c, 0x1b, 0x48, 0x80,
+ 0x20, 0x01, 0x0c, 0x04, 0xfe, 0xb1, 0xff, 0x9c, 0x9f, 0x00, 0xfe, 0x4f, 0x36, 0x9b, 0x55, 0x70,
+ 0xee, 0x39, 0xf7, 0xd6, 0x2d, 0x3e, 0x7a, 0x7a, 0x37, 0xb3, 0xf9, 0xf0, 0x97, 0x58, 0xe7, 0x75,
+ 0xcf, 0x3d, 0xf7, 0x9c, 0x73, 0xcf, 0x3d, 0x75, 0xab, 0xc5, 0xee, 0x9c, 0xf8, 0xe3, 0xe8, 0xa8,
+ 0xef, 0xce, 0x02, 0x3f, 0xf2, 0xc3, 0xfb, 0xfe, 0xcc, 0x9b, 0xbe, 0x1e, 0xfb, 0x6f, 0xdc, 0x07,
+ 0x8f, 0x3e, 0xe5, 0x20, 0xbd, 0xa0, 0x80, 0x6e, 0xde, 0x3a, 0xf4, 0xfd, 0xc3, 0xb1, 0x77, 0xbf,
+ 0x3f, 0x1b, 0xdd, 0xef, 0x4f, 0xa7, 0x7e, 0xd4, 0x8f, 0x46, 0xfe, 0x34, 0x44, 0xd2, 0xd2, 0x80,
+ 0x31, 0xff, 0xf5, 0xcc, 0x3d, 0xf2, 0xfa, 0x43, 0x2f, 0xd0, 0x8b, 0x6c, 0xe3, 0xc4, 0x0b, 0xc2,
+ 0x91, 0x3f, 0x2d, 0xa6, 0xee, 0xa6, 0x3e, 0xd9, 0xb2, 0xc4, 0xa3, 0xfe, 0x0d, 0x96, 0x8d, 0xde,
+ 0xce, 0xbc, 0x62, 0xfa, 0x6e, 0xea, 0x93, 0xed, 0x87, 0x57, 0x3f, 0x55, 0x07, 0x05, 0x01, 0x80,
+ 0xb4, 0x38, 0x89, 0xae, 0xb1, 0xcc, 0xe9, 0x68, 0x58, 0xcc, 0x70, 0x01, 0xf0, 0xb3, 0xf4, 0xaf,
+ 0x53, 0xec, 0x2a, 0x8e, 0x32, 0x1e, 0xfb, 0xae, 0x37, 0xf6, 0x26, 0x62, 0xc0, 0xc7, 0x24, 0x36,
+ 0xc5, 0xc5, 0xde, 0x5d, 0x10, 0xab, 0x70, 0x28, 0x23, 0x3c, 0x67, 0x5b, 0xa4, 0xd7, 0xc1, 0x28,
+ 0x9a, 0xf4, 0x67, 0x5c, 0xab, 0xc2, 0xc3, 0x6f, 0x9c, 0xc5, 0x9e, 0x60, 0x68, 0x5c, 0xb0, 0x92,
+ 0x12, 0x2a, 0x79, 0xb6, 0x01, 0x64, 0xde, 0x34, 0x2a, 0x7d, 0x87, 0xdd, 0x3a, 0x8b, 0x17, 0x8c,
+ 0x84, 0xbf, 0xc2, 0x62, 0xfa, 0x6e, 0x06, 0x8c, 0x44, 0x8f, 0xa5, 0x67, 0x2c, 0x2f, 0x39, 0xf5,
+ 0x5f, 0x63, 0x39, 0x92, 0x18, 0x16, 0x53, 0x77, 0x33, 0x9f, 0x14, 0x1e, 0x96, 0xce, 0xd2, 0x0f,
+ 0x0d, 0x62, 0x49, 0x9e, 0x52, 0x9b, 0x5d, 0x02, 0x92, 0xf0, 0xcd, 0x28, 0x1a, 0x1c, 0xb9, 0x03,
+ 0x7f, 0xfa, 0x7a, 0x74, 0xa8, 0x5f, 0x61, 0x6b, 0xaf, 0xc7, 0xfd, 0xc3, 0x90, 0x96, 0x07, 0x1f,
+ 0xf4, 0x12, 0xdb, 0x9a, 0x8c, 0xc2, 0xd0, 0x0d, 0xbd, 0xe9, 0xd0, 0x1d, 0x7b, 0x53, 0x6e, 0x8f,
+ 0x2d, 0xab, 0x00, 0x40, 0xdb, 0x9b, 0x0e, 0x5b, 0xde, 0xb4, 0x54, 0x61, 0x5b, 0x7c, 0x9d, 0xfa,
+ 0x07, 0x63, 0xcf, 0x9d, 0xf8, 0x43, 0xfd, 0x06, 0xcb, 0xe1, 0xc3, 0x68, 0x28, 0x16, 0x9b, 0x3f,
+ 0x37, 0x87, 0xfa, 0x35, 0xb6, 0x8e, 0xe3, 0x91, 0x20, 0x7a, 0x2a, 0xfd, 0xb3, 0x34, 0xcb, 0x81,
+ 0x90, 0x99, 0x1f, 0x44, 0xfa, 0x75, 0xb6, 0x01, 0xff, 0xba, 0x53, 0x9f, 0xd8, 0xd7, 0xe1, 0xb1,
+ 0xe3, 0x03, 0xe2, 0xe8, 0x8d, 0xdb, 0x1f, 0x0e, 0x03, 0xb2, 0xcf, 0xfa, 0xd1, 0x1b, 0x63, 0x38,
+ 0x0c, 0x74, 0x9d, 0x65, 0xa7, 0xfd, 0x89, 0xc7, 0x3d, 0x23, 0x6f, 0xf1, 0xdf, 0xca, 0x50, 0x59,
+ 0x75, 0x28, 0x98, 0x68, 0x18, 0xf5, 0x23, 0xaf, 0xb8, 0x86, 0x13, 0xe5, 0x0f, 0x20, 0x61, 0x70,
+ 0x1c, 0x04, 0xc5, 0x75, 0x0e, 0xe4, 0xbf, 0xf5, 0x0f, 0x18, 0xeb, 0x0f, 0x4f, 0xbc, 0x20, 0x1a,
+ 0x85, 0xde, 0xb0, 0xb8, 0xc1, 0x31, 0x0a, 0x44, 0xbf, 0xc5, 0xf2, 0xe1, 0xf1, 0x0c, 0x74, 0xf3,
+ 0x86, 0xc5, 0x1c, 0x47, 0xc7, 0x00, 0x90, 0x38, 0xf3, 0xbc, 0xa0, 0x98, 0x47, 0x89, 0xf0, 0x5b,
+ 0xbf, 0xcd, 0x18, 0x48, 0x76, 0xc3, 0x99, 0xe7, 0x0d, 0x8b, 0x0c, 0x59, 0x00, 0x62, 0x03, 0x40,
+ 0xdf, 0x61, 0xf9, 0x49, 0xff, 0x94, 0xb0, 0x05, 0x8e, 0xcd, 0x4d, 0xfa, 0xa7, 0x1c, 0x59, 0xfa,
+ 0x77, 0x29, 0x76, 0x59, 0x59, 0xb6, 0xd7, 0x5e, 0x3f, 0x3a, 0x0e, 0xbc, 0x50, 0xbf, 0xc3, 0x0a,
+ 0xc3, 0x7e, 0xd4, 0x9f, 0xf5, 0xa3, 0x23, 0x61, 0xf0, 0xac, 0xc5, 0x04, 0xa8, 0xc9, 0xa5, 0x4e,
+ 0xdd, 0x83, 0xe3, 0xd7, 0xaf, 0xbd, 0x20, 0x24, 0xb3, 0xe7, 0xa6, 0x15, 0x7c, 0x86, 0xb5, 0x9a,
+ 0xe2, 0xd2, 0x85, 0x14, 0x57, 0x1b, 0x53, 0x87, 0x3f, 0xea, 0xf7, 0xd8, 0x66, 0xff, 0xf8, 0x74,
+ 0x34, 0x1e, 0xf5, 0x83, 0xb7, 0x20, 0x19, 0xcd, 0x58, 0x90, 0xb0, 0xe6, 0x50, 0x2f, 0xb1, 0xcd,
+ 0x41, 0x7f, 0xd6, 0x3f, 0x18, 0x8d, 0x47, 0xd1, 0xc8, 0x0b, 0xc9, 0xa4, 0x09, 0x58, 0x29, 0x60,
+ 0x17, 0xc5, 0xca, 0xba, 0x60, 0xeb, 0xe3, 0x50, 0x7f, 0xcc, 0xd6, 0x03, 0xaf, 0x1f, 0x52, 0x2e,
+ 0xd8, 0x7e, 0x78, 0x6b, 0xc1, 0x7d, 0x39, 0x35, 0xd2, 0x58, 0x44, 0x0b, 0x89, 0x62, 0xe8, 0x85,
+ 0x03, 0x0a, 0xc9, 0xab, 0x4b, 0x79, 0x2c, 0x4e, 0x52, 0xfa, 0xfb, 0x29, 0xb6, 0x29, 0xc5, 0x80,
+ 0x4b, 0xfe, 0xfc, 0x2e, 0x15, 0xbb, 0x4f, 0x26, 0xe1, 0x3e, 0x3a, 0xcb, 0x4e, 0xfa, 0xe1, 0x17,
+ 0x64, 0x0d, 0xfe, 0x1b, 0x1c, 0x41, 0xba, 0x05, 0xd9, 0x20, 0x06, 0x94, 0xde, 0x60, 0xec, 0x4e,
+ 0xfa, 0xd1, 0xe0, 0x48, 0xbf, 0x9f, 0x48, 0x4b, 0x3b, 0x0b, 0x93, 0xe0, 0x54, 0x6a, 0x46, 0xfa,
+ 0x55, 0xc6, 0xfc, 0xd3, 0x89, 0xfb, 0x7a, 0xe4, 0x8d, 0x87, 0x98, 0x16, 0x0a, 0x0f, 0x6f, 0x2e,
+ 0xb0, 0x49, 0x12, 0x2b, 0xef, 0x9f, 0x4e, 0xea, 0x9c, 0xb8, 0xf4, 0x3f, 0x52, 0x18, 0x99, 0x12,
+ 0xa9, 0x7f, 0x9b, 0x01, 0xda, 0x1d, 0x8c, 0xfb, 0x61, 0x48, 0x2a, 0x2c, 0x97, 0xc5, 0x29, 0xac,
+ 0x9c, 0x7f, 0x3a, 0xa9, 0xc2, 0x2f, 0xfd, 0x07, 0x30, 0x87, 0x03, 0x94, 0xc2, 0xa7, 0x5e, 0x78,
+ 0xf8, 0xc1, 0x52, 0x46, 0x49, 0xd5, 0xb8, 0x60, 0xe5, 0xfc, 0xd7, 0x07, 0x5c, 0x15, 0xfd, 0x25,
+ 0xd3, 0xbd, 0xd3, 0x99, 0x17, 0x8c, 0x20, 0x01, 0x79, 0x01, 0xc9, 0x59, 0xe3, 0x72, 0xbe, 0xbe,
+ 0x54, 0xce, 0x22, 0x79, 0xe3, 0x82, 0x75, 0x49, 0x85, 0x72, 0xc9, 0x95, 0x0d, 0xb6, 0xc6, 0xb1,
+ 0xa5, 0x3f, 0xd9, 0xc6, 0xac, 0x96, 0x50, 0xe2, 0xec, 0x5d, 0x40, 0xa5, 0xe4, 0x26, 0x0f, 0xc9,
+ 0xe6, 0x37, 0x58, 0xee, 0xa8, 0x1f, 0xba, 0x7c, 0x9d, 0xc1, 0xdb, 0x72, 0xd6, 0xc6, 0x51, 0x3f,
+ 0x6c, 0xc3, 0x52, 0x5f, 0x61, 0x59, 0xf0, 0x1c, 0x74, 0x8a, 0xc6, 0x05, 0x8b, 0x3f, 0xe9, 0x1f,
+ 0xb3, 0xad, 0xd9, 0xd1, 0xdb, 0x70, 0x34, 0xe8, 0x8f, 0xb9, 0xcf, 0xa1, 0x77, 0x34, 0x2e, 0x58,
+ 0x9b, 0x02, 0xdc, 0x03, 0xb2, 0xaf, 0xb3, 0x6d, 0xca, 0x92, 0x5e, 0xd4, 0x87, 0x08, 0xe5, 0x26,
+ 0xc8, 0xc2, 0x9e, 0xc1, 0xe1, 0x6d, 0x02, 0xeb, 0x37, 0xd8, 0x86, 0x17, 0x1d, 0xb9, 0xc3, 0x30,
+ 0xe2, 0x09, 0x69, 0xb3, 0x71, 0xc1, 0x5a, 0xf7, 0xa2, 0xa3, 0x5a, 0x18, 0x09, 0x54, 0x18, 0x0c,
+ 0x78, 0x46, 0x12, 0x28, 0x3b, 0x18, 0xe8, 0x3b, 0x2c, 0x07, 0x28, 0x3e, 0xe1, 0x1c, 0x29, 0x00,
+ 0xc4, 0x0e, 0xcc, 0x69, 0x87, 0xe5, 0x4e, 0xc6, 0xfd, 0xa9, 0x7b, 0x32, 0x1a, 0x62, 0x4a, 0x02,
+ 0x24, 0x40, 0xf6, 0x47, 0x43, 0x89, 0x9c, 0x0d, 0x66, 0x98, 0x95, 0x04, 0xb2, 0x37, 0x98, 0xc1,
+ 0x88, 0xa3, 0x99, 0x3b, 0x0c, 0x07, 0x33, 0xcc, 0x49, 0x30, 0xe2, 0x68, 0x56, 0x0b, 0x07, 0x33,
+ 0xfd, 0x3a, 0x5b, 0x1f, 0xcd, 0x5c, 0x6f, 0x30, 0x2d, 0x6e, 0x12, 0x66, 0x6d, 0x34, 0x33, 0x07,
+ 0x53, 0x10, 0x38, 0x9a, 0x61, 0x19, 0x51, 0xdc, 0x12, 0x02, 0x47, 0xb3, 0x1e, 0x2f, 0x22, 0x38,
+ 0xf2, 0xe4, 0x31, 0x9f, 0xc3, 0x76, 0x8c, 0x3c, 0x79, 0x4c, 0x93, 0xe0, 0x48, 0x98, 0xfb, 0x45,
+ 0x15, 0x49, 0x93, 0x8f, 0x06, 0x33, 0xce, 0xa8, 0x09, 0x55, 0xa2, 0xc1, 0x0c, 0xf8, 0x08, 0x05,
+ 0x6c, 0x97, 0x14, 0x14, 0x71, 0x1d, 0x0f, 0x91, 0x4b, 0x17, 0xa8, 0xe3, 0xa1, 0xe0, 0x02, 0x14,
+ 0x70, 0x5d, 0x56, 0x50, 0xc0, 0xb5, 0xc3, 0x72, 0xe1, 0x20, 0x42, 0xb6, 0x2b, 0x42, 0x11, 0x80,
+ 0x90, 0x96, 0x1c, 0x09, 0x8c, 0x57, 0x55, 0x24, 0x70, 0xde, 0x63, 0x85, 0xd1, 0x60, 0x02, 0x93,
+ 0xe0, 0x4b, 0x71, 0x8d, 0xf0, 0x0c, 0x81, 0x7c, 0x35, 0x62, 0x92, 0x81, 0x3f, 0xf4, 0x8a, 0xd7,
+ 0x93, 0x24, 0x55, 0x7f, 0xe8, 0x81, 0x6d, 0xfb, 0xc1, 0xcc, 0xf5, 0x67, 0xc5, 0xa2, 0xb0, 0x6d,
+ 0x3f, 0x98, 0x75, 0xf9, 0x7a, 0x00, 0x22, 0x9c, 0xf5, 0x8b, 0x37, 0x84, 0xce, 0xfd, 0x60, 0x66,
+ 0xcf, 0xfa, 0x02, 0x15, 0xcd, 0xfa, 0xc5, 0x9b, 0x0a, 0xca, 0x89, 0x51, 0xe1, 0x51, 0xbf, 0xb8,
+ 0x23, 0xfc, 0x06, 0xb8, 0x8e, 0x62, 0xae, 0xa3, 0x7e, 0xf1, 0x96, 0x82, 0x72, 0x8e, 0xfa, 0xb4,
+ 0x1a, 0x4f, 0xb8, 0x11, 0x6e, 0x13, 0x0e, 0x56, 0xe3, 0x49, 0xbc, 0x54, 0x4f, 0xb8, 0x11, 0x3e,
+ 0x50, 0x91, 0xc2, 0x08, 0x80, 0x7c, 0x3d, 0xee, 0x1f, 0x78, 0xe3, 0xe2, 0x1d, 0x39, 0xc3, 0xd9,
+ 0xc9, 0x93, 0x3a, 0x87, 0x49, 0x23, 0x3c, 0x41, 0x3b, 0xdd, 0x4d, 0x18, 0xe1, 0x49, 0xc2, 0x4e,
+ 0x4f, 0xd0, 0x4e, 0xf7, 0x92, 0x24, 0xdc, 0x4e, 0x5f, 0x63, 0xdb, 0x7c, 0xa0, 0xe9, 0xd0, 0x8d,
+ 0xfa, 0xc1, 0xa1, 0x17, 0x15, 0x4b, 0xa4, 0xcb, 0x26, 0xc0, 0x3b, 0x43, 0x87, 0x43, 0xf5, 0xbb,
+ 0xa4, 0xd0, 0x74, 0xe8, 0x86, 0xe1, 0xb8, 0xf8, 0x21, 0x11, 0xe5, 0x91, 0xc8, 0x0e, 0xc7, 0x2a,
+ 0x45, 0x34, 0x1e, 0x17, 0x3f, 0x4a, 0x52, 0x38, 0xe3, 0xb1, 0x7e, 0x87, 0xb1, 0xc9, 0x6c, 0x1c,
+ 0xba, 0x38, 0xa7, 0x8f, 0x49, 0x9b, 0x3c, 0xc0, 0x5a, 0x7c, 0x4a, 0x37, 0xd8, 0x06, 0x27, 0x88,
+ 0x06, 0xc5, 0xaf, 0x89, 0x05, 0x00, 0x80, 0xc3, 0xad, 0xc5, 0x51, 0x07, 0x7e, 0x58, 0xfc, 0xba,
+ 0x70, 0x19, 0x80, 0x54, 0xfc, 0x10, 0x90, 0xb3, 0x83, 0x03, 0x77, 0x14, 0x8e, 0x86, 0xc5, 0x4f,
+ 0x04, 0x72, 0x76, 0x70, 0xd0, 0x0c, 0x47, 0x43, 0xfd, 0x36, 0xcb, 0x47, 0xc7, 0xd3, 0xa9, 0x37,
+ 0x86, 0x5d, 0xf8, 0x1b, 0x94, 0x31, 0x72, 0x08, 0x6a, 0x0e, 0xa5, 0xa5, 0xbd, 0xd3, 0xe8, 0x68,
+ 0x18, 0x14, 0xcb, 0xaa, 0xa5, 0x4d, 0x0e, 0xd3, 0x3f, 0x63, 0x97, 0x93, 0x89, 0x07, 0x73, 0xdb,
+ 0x88, 0xcb, 0x4a, 0x59, 0x97, 0x12, 0xd9, 0x87, 0xe7, 0xb9, 0x12, 0xdb, 0xa4, 0x0c, 0x84, 0xa4,
+ 0xbf, 0xce, 0x8d, 0x91, 0xb2, 0x18, 0xa6, 0x21, 0x95, 0x26, 0x0c, 0x06, 0x48, 0xf3, 0x85, 0x42,
+ 0x63, 0x07, 0x03, 0x4e, 0xf3, 0x11, 0xdb, 0x12, 0x69, 0x07, 0x89, 0x26, 0x5c, 0xbd, 0x94, 0x55,
+ 0xa0, 0xdc, 0x23, 0xa8, 0x44, 0x46, 0x40, 0xaa, 0x40, 0x50, 0x51, 0x5a, 0x48, 0x50, 0x49, 0xa5,
+ 0x42, 0x95, 0x4a, 0xd1, 0x8a, 0xc2, 0x03, 0x89, 0x7e, 0x8b, 0x88, 0x18, 0xc6, 0x88, 0x4a, 0x13,
+ 0x09, 0x9a, 0xbf, 0xa5, 0xd0, 0x38, 0x44, 0xf3, 0x31, 0x1f, 0xed, 0x49, 0xac, 0xd3, 0xdf, 0x4e,
+ 0xd1, 0xfc, 0x0a, 0x14, 0x00, 0x09, 0x32, 0xa9, 0xd4, 0xdf, 0x49, 0x90, 0x09, 0xad, 0xbe, 0xc9,
+ 0x34, 0x25, 0x1c, 0x90, 0xf2, 0xb7, 0x53, 0x34, 0xec, 0x76, 0x1c, 0x14, 0x42, 0xa6, 0xf0, 0x06,
+ 0xa4, 0xfc, 0x87, 0x82, 0xb2, 0x40, 0x3e, 0xc1, 0xc9, 0x60, 0x3b, 0x11, 0x7e, 0x81, 0x74, 0xbf,
+ 0x93, 0xa2, 0x15, 0xdd, 0x14, 0xde, 0x91, 0x18, 0x1c, 0x3d, 0x04, 0x49, 0x7f, 0x37, 0x31, 0x38,
+ 0xfa, 0x09, 0x10, 0xc3, 0x8e, 0x7a, 0xd2, 0x1f, 0x1f, 0x7b, 0x95, 0x75, 0xac, 0x74, 0x4a, 0x2e,
+ 0xbb, 0xb9, 0x7a, 0x57, 0x86, 0x92, 0x16, 0x30, 0x78, 0xc8, 0xa0, 0xe2, 0x0a, 0x8a, 0x8c, 0x06,
+ 0x1e, 0xc3, 0xc0, 0x47, 0x14, 0x26, 0xaa, 0x3f, 0x13, 0xb0, 0xd2, 0xbf, 0xcd, 0xe2, 0x51, 0xb1,
+ 0x3f, 0x80, 0xf3, 0xa3, 0xfe, 0x59, 0x62, 0xcf, 0x5e, 0xac, 0x0d, 0x91, 0x4c, 0xad, 0x91, 0xbe,
+ 0xc3, 0xd6, 0xfd, 0xe3, 0x68, 0x76, 0x1c, 0x51, 0x6d, 0xf8, 0xc1, 0x2a, 0x1e, 0xa4, 0x82, 0xa0,
+ 0xc4, 0x5f, 0xfa, 0x0f, 0x28, 0x28, 0xa3, 0x68, 0xcc, 0xb7, 0xf4, 0xc2, 0x92, 0x93, 0x22, 0xf1,
+ 0x0a, 0x3a, 0x11, 0xb6, 0x4e, 0x34, 0xd6, 0x1f, 0xb2, 0xec, 0xec, 0x38, 0x3c, 0xa2, 0x8a, 0x68,
+ 0xa5, 0xaa, 0x40, 0xc3, 0x6b, 0x85, 0xe3, 0xf0, 0x08, 0x86, 0x9c, 0xf9, 0x33, 0x2e, 0x8e, 0x2a,
+ 0xa0, 0x95, 0x43, 0x0a, 0x3a, 0x9e, 0x0c, 0xfc, 0x59, 0x7b, 0x36, 0x0e, 0xf5, 0x6f, 0xb1, 0xb5,
+ 0xc3, 0xc0, 0x3f, 0x9e, 0xf1, 0xc2, 0xa0, 0xf0, 0xf0, 0xf6, 0x2a, 0x5e, 0x4e, 0x04, 0x9b, 0x06,
+ 0xff, 0xa1, 0x7f, 0x9b, 0xad, 0x4f, 0xdf, 0xf0, 0x69, 0x6e, 0x9c, 0x6d, 0x22, 0xa4, 0x02, 0xc6,
+ 0xe9, 0x1b, 0x98, 0xe2, 0x53, 0x96, 0x0f, 0xbd, 0x88, 0x2a, 0xb6, 0x1c, 0xe7, 0xbd, 0xb7, 0x8a,
+ 0x57, 0x12, 0x42, 0x7e, 0x0a, 0xbd, 0x08, 0x8b, 0xbf, 0xcf, 0xe7, 0x5c, 0x20, 0xcf, 0x85, 0x7c,
+ 0xb4, 0x4a, 0x88, 0x4a, 0x0b, 0x49, 0x5c, 0x7d, 0xae, 0xe4, 0xd8, 0x3a, 0x92, 0x95, 0x9e, 0x62,
+ 0xb9, 0x97, 0x58, 0x58, 0x7e, 0xe6, 0x82, 0xf2, 0x2b, 0x45, 0x67, 0x2e, 0x3a, 0x4d, 0xc2, 0xa1,
+ 0x2a, 0x3e, 0xbc, 0xae, 0x4f, 0xfa, 0xa7, 0x70, 0x6e, 0xfd, 0x0c, 0xcf, 0x53, 0x73, 0xcb, 0x0b,
+ 0xc5, 0x9f, 0x74, 0x09, 0x3a, 0xbd, 0xd2, 0x72, 0x97, 0xee, 0xe3, 0x51, 0x46, 0x59, 0x55, 0x28,
+ 0xfd, 0xbd, 0xe8, 0xc8, 0x0b, 0xa4, 0xc7, 0x6e, 0x59, 0x31, 0xa0, 0xf4, 0x28, 0x31, 0x84, 0x58,
+ 0xce, 0x2f, 0x61, 0xfa, 0x15, 0xa6, 0xcd, 0xaf, 0x23, 0x28, 0xc5, 0x7f, 0x28, 0x47, 0x6a, 0xfe,
+ 0xdc, 0x1c, 0x96, 0xca, 0x09, 0x43, 0xe0, 0xf2, 0xe9, 0x57, 0xe5, 0x72, 0xd3, 0x71, 0x9e, 0x2f,
+ 0x66, 0xa9, 0xc1, 0xae, 0x2c, 0x5b, 0x2e, 0xfd, 0x33, 0xaa, 0xa2, 0x39, 0xf5, 0xd9, 0xe7, 0x0b,
+ 0x2a, 0xb7, 0x9f, 0xb3, 0xeb, 0x2b, 0xd6, 0x6c, 0x21, 0xe4, 0x53, 0x8b, 0x21, 0x0f, 0x0b, 0xc5,
+ 0xeb, 0x5f, 0x58, 0x91, 0x4d, 0x8b, 0xff, 0x2e, 0xfd, 0x41, 0x06, 0xcd, 0x3b, 0x9a, 0x86, 0x51,
+ 0x70, 0x8c, 0xb9, 0x40, 0x57, 0x72, 0xc1, 0x16, 0x45, 0x7b, 0x83, 0xb1, 0x43, 0x3f, 0xf2, 0xf1,
+ 0xd4, 0x4a, 0x11, 0xbf, 0x78, 0x88, 0x50, 0xa4, 0xb8, 0x31, 0x39, 0xec, 0xd6, 0xf0, 0xc4, 0x8f,
+ 0xb8, 0xba, 0xc3, 0xb6, 0xdf, 0x04, 0xa3, 0x48, 0xa9, 0xc7, 0x31, 0x07, 0x7c, 0xf3, 0x4c, 0x69,
+ 0x49, 0x16, 0x28, 0xde, 0x39, 0x44, 0x16, 0xef, 0x4f, 0xd9, 0x06, 0x9a, 0x25, 0xa4, 0xbc, 0xf0,
+ 0xd1, 0x99, 0xe2, 0x88, 0x16, 0x62, 0x9c, 0x7e, 0xea, 0xdf, 0x65, 0x6b, 0x13, 0x0f, 0x4c, 0x87,
+ 0xf9, 0xa1, 0x74, 0x26, 0x3f, 0xa7, 0x84, 0x78, 0xe5, 0x3f, 0xf4, 0xee, 0x9c, 0xf5, 0xd7, 0x57,
+ 0x34, 0xb0, 0x54, 0x11, 0x67, 0x86, 0xdc, 0x3a, 0x2e, 0x55, 0xe9, 0xdb, 0xb8, 0x0d, 0x2c, 0xb7,
+ 0xeb, 0x19, 0x3d, 0x9f, 0x52, 0x9f, 0x7d, 0x70, 0xb6, 0x09, 0xf5, 0x9b, 0x2c, 0x27, 0x57, 0x00,
+ 0xfb, 0x17, 0xf2, 0x59, 0xff, 0x90, 0x6d, 0x25, 0x8b, 0x96, 0x34, 0x27, 0xd8, 0x9c, 0x28, 0xd5,
+ 0x4a, 0xa9, 0x85, 0xde, 0xb8, 0xc4, 0xac, 0xfa, 0x83, 0x78, 0x35, 0xb0, 0x57, 0x76, 0x7d, 0x45,
+ 0xe2, 0x91, 0xe6, 0x2f, 0x3d, 0xc4, 0x9e, 0xe2, 0x82, 0x91, 0x79, 0x6a, 0x80, 0x1f, 0xca, 0x24,
+ 0xf9, 0x73, 0x73, 0x58, 0xda, 0xc7, 0xd6, 0xde, 0x2a, 0xab, 0xfe, 0xc2, 0x41, 0xf1, 0xa7, 0x19,
+ 0xec, 0x64, 0x70, 0x7d, 0x27, 0x3e, 0x75, 0xd0, 0xfc, 0x2f, 0x46, 0x1e, 0x59, 0x8a, 0x9e, 0xf4,
+ 0x3b, 0xac, 0x80, 0xbf, 0x54, 0x2b, 0x31, 0x04, 0xf1, 0x22, 0x40, 0x5d, 0xa1, 0x4c, 0xb2, 0x2b,
+ 0xf7, 0x3d, 0xb6, 0x31, 0xf0, 0x27, 0x93, 0xfe, 0x14, 0xcf, 0xf6, 0xdb, 0x4b, 0x32, 0xbc, 0x18,
+ 0xdf, 0x25, 0x42, 0x4b, 0x70, 0xe8, 0xf7, 0xd8, 0xe6, 0x68, 0x38, 0xf6, 0xdc, 0x68, 0x34, 0xf1,
+ 0xfc, 0xe3, 0x88, 0xfa, 0x1f, 0x05, 0x80, 0x39, 0x08, 0x02, 0x92, 0xa3, 0x7e, 0x30, 0x94, 0x24,
+ 0xd8, 0x64, 0x2b, 0x00, 0x4c, 0x90, 0xdc, 0x64, 0xb9, 0x59, 0x30, 0xf2, 0x83, 0x51, 0xf4, 0x96,
+ 0x3a, 0x6d, 0xf2, 0x59, 0xdf, 0x61, 0x79, 0x6c, 0x5f, 0x81, 0xea, 0xd8, 0x67, 0xcb, 0x21, 0xa0,
+ 0xc9, 0x9b, 0x8d, 0xfe, 0x71, 0x84, 0xa7, 0x6e, 0x6c, 0xb5, 0x6d, 0xf8, 0xc7, 0x11, 0x3f, 0x6e,
+ 0xef, 0xb0, 0x3c, 0xa0, 0x70, 0xbb, 0xc4, 0x66, 0x1b, 0xd0, 0xee, 0xf2, 0x8c, 0x2a, 0xfb, 0x9d,
+ 0x05, 0xb5, 0xdf, 0xf9, 0x57, 0xd8, 0x1a, 0xef, 0xc0, 0xf0, 0xf3, 0x6c, 0xe1, 0xe1, 0xb5, 0xe5,
+ 0xfd, 0x19, 0x0b, 0x89, 0xf4, 0xa7, 0x6c, 0x53, 0x59, 0xf0, 0xb0, 0xb8, 0xc5, 0x1d, 0xec, 0xd6,
+ 0x59, 0xb1, 0x66, 0x25, 0x38, 0x4a, 0x3f, 0x4e, 0x61, 0xe9, 0x73, 0x70, 0x3c, 0xf8, 0xc2, 0x8b,
+ 0x60, 0x71, 0xdf, 0x78, 0xa3, 0xc3, 0x23, 0xb1, 0x83, 0xd1, 0x13, 0x14, 0x59, 0x6f, 0x78, 0x63,
+ 0x88, 0x4f, 0x13, 0xb7, 0xb1, 0x3c, 0x87, 0xf0, 0x89, 0xde, 0x61, 0x05, 0x44, 0xe3, 0x54, 0x71,
+ 0x75, 0x91, 0x03, 0x27, 0xfb, 0x40, 0x4d, 0x49, 0xe7, 0x0b, 0x82, 0xff, 0x4c, 0xcd, 0x23, 0xdc,
+ 0x76, 0xc0, 0xf3, 0xbe, 0x1f, 0x7b, 0x09, 0x96, 0x66, 0x8b, 0x79, 0x49, 0x12, 0x2f, 0xba, 0xc9,
+ 0xfd, 0x44, 0x9b, 0x7f, 0x67, 0x05, 0xab, 0x52, 0xd4, 0xa9, 0x5b, 0x5e, 0x26, 0xb1, 0xe5, 0xc1,
+ 0x74, 0xd0, 0x60, 0xab, 0xa7, 0x83, 0x78, 0x4b, 0xd0, 0x95, 0x7e, 0x27, 0xc5, 0xb6, 0x79, 0x47,
+ 0xb0, 0x0f, 0xcf, 0x50, 0x2f, 0x24, 0xdd, 0x2a, 0x35, 0xe7, 0x56, 0xd7, 0xd9, 0xc6, 0x68, 0xaa,
+ 0x9a, 0x7b, 0x7d, 0x34, 0xe5, 0xb6, 0x56, 0x4c, 0x99, 0x39, 0x9f, 0x29, 0x65, 0x5c, 0x67, 0xd5,
+ 0xb8, 0x26, 0xf3, 0x92, 0x3e, 0xa3, 0xe9, 0xd9, 0xea, 0xfc, 0xaa, 0xec, 0x98, 0xa6, 0x57, 0x04,
+ 0xa8, 0x14, 0x34, 0xdf, 0x36, 0x3d, 0x23, 0xee, 0xe3, 0x5c, 0x92, 0x4d, 0xe4, 0x12, 0x19, 0x05,
+ 0x6b, 0xe7, 0x89, 0x02, 0x31, 0xbd, 0x75, 0x65, 0x7a, 0xff, 0x34, 0x83, 0x45, 0x0c, 0x67, 0x0a,
+ 0xbc, 0x89, 0x7f, 0xe2, 0xad, 0x4e, 0x5d, 0x6a, 0xec, 0xa7, 0xe7, 0x62, 0xff, 0xfb, 0x72, 0xe2,
+ 0x19, 0x3e, 0xf1, 0x8f, 0x96, 0x67, 0x26, 0x1a, 0xe2, 0xac, 0xb9, 0x67, 0x93, 0x73, 0xbf, 0xc7,
+ 0x36, 0x87, 0xc7, 0x41, 0x9f, 0x0a, 0xa1, 0x81, 0x48, 0x5b, 0x02, 0x66, 0x7b, 0x03, 0xd8, 0x7a,
+ 0x24, 0xc9, 0x14, 0x68, 0x30, 0x6f, 0x49, 0xbe, 0x4e, 0xe8, 0x0d, 0x16, 0xd2, 0xdf, 0xc6, 0x97,
+ 0xa7, 0xbf, 0xdc, 0x62, 0xfa, 0xbb, 0xc7, 0x36, 0x69, 0x01, 0x07, 0xfe, 0xf1, 0x14, 0x33, 0x59,
+ 0xd6, 0x2a, 0x20, 0xac, 0x0a, 0x20, 0xc8, 0x01, 0x07, 0x6f, 0x23, 0x8f, 0x08, 0x18, 0x27, 0xc8,
+ 0x03, 0x04, 0xd1, 0x72, 0xcd, 0xde, 0x9e, 0x63, 0xcd, 0x4a, 0x7f, 0x9a, 0xc6, 0x3d, 0x0e, 0xb7,
+ 0xb3, 0x83, 0xfe, 0x74, 0x78, 0xde, 0xf7, 0x66, 0x0a, 0x87, 0x12, 0xac, 0x3a, 0xcb, 0x06, 0xfd,
+ 0xc8, 0xa3, 0xe5, 0xe3, 0xbf, 0xb9, 0xc2, 0xc7, 0x41, 0x18, 0xb9, 0xe1, 0xe8, 0x37, 0x3c, 0x72,
+ 0xbd, 0x3c, 0x87, 0xd8, 0xa3, 0xdf, 0xf0, 0xf4, 0x27, 0x2c, 0x3b, 0x0c, 0xfc, 0x19, 0xd5, 0x48,
+ 0x67, 0x0e, 0x04, 0x74, 0x70, 0x7e, 0x82, 0x7f, 0xf5, 0xcf, 0x59, 0x61, 0x18, 0x0e, 0x66, 0xb0,
+ 0xe4, 0xfd, 0xe0, 0x8b, 0x95, 0x4d, 0x64, 0x95, 0x3d, 0x26, 0x6f, 0x5c, 0xb0, 0x18, 0x3c, 0x5a,
+ 0xfc, 0x49, 0xef, 0x2c, 0x2d, 0x96, 0x3e, 0x39, 0x4b, 0xd8, 0xb9, 0x6a, 0xa5, 0xab, 0x58, 0xf7,
+ 0xcf, 0x4d, 0xa1, 0xf4, 0x3d, 0x2c, 0xa1, 0x96, 0xab, 0x06, 0xf6, 0x9a, 0x05, 0xde, 0xc0, 0x1d,
+ 0x7b, 0x27, 0x9e, 0xa8, 0xdb, 0xf3, 0x00, 0x69, 0x01, 0xa0, 0x64, 0xb0, 0x9d, 0x33, 0x54, 0x39,
+ 0x4f, 0x81, 0x51, 0xfa, 0xf7, 0x94, 0x74, 0x50, 0xc6, 0x39, 0x73, 0xba, 0x24, 0x5e, 0xcc, 0xe9,
+ 0x72, 0x0f, 0x4d, 0xab, 0x7b, 0xa8, 0x5a, 0x25, 0x65, 0x12, 0x55, 0x92, 0xfe, 0x1d, 0xb6, 0x06,
+ 0x9a, 0x8b, 0xb4, 0x5d, 0x3a, 0xcb, 0xd0, 0xf4, 0xda, 0x12, 0x19, 0x4a, 0xcf, 0x50, 0x73, 0x2f,
+ 0x08, 0xfc, 0xc0, 0x9d, 0x84, 0x87, 0x4b, 0x4f, 0x06, 0x3a, 0xcb, 0xf2, 0x36, 0x21, 0x79, 0x21,
+ 0xfc, 0x96, 0xd9, 0x29, 0xa3, 0x64, 0xa7, 0xdf, 0x4e, 0xe1, 0x42, 0xa0, 0xb4, 0x44, 0x53, 0x63,
+ 0x95, 0xe8, 0x1b, 0x2c, 0xe7, 0x9d, 0xe2, 0xfe, 0x44, 0xe2, 0x37, 0xbc, 0xd3, 0x19, 0xef, 0x51,
+ 0xce, 0x5b, 0x3e, 0x73, 0x46, 0x69, 0xa7, 0x6e, 0x01, 0x27, 0x14, 0x82, 0xc7, 0xe3, 0x68, 0x34,
+ 0xeb, 0xf3, 0xf7, 0x5d, 0x3f, 0x3a, 0xf6, 0xc2, 0x48, 0x7f, 0x94, 0x08, 0xc1, 0x3b, 0x8b, 0x46,
+ 0x92, 0x1c, 0x4a, 0x04, 0x2e, 0x5f, 0x0b, 0x9d, 0x65, 0x0f, 0xfc, 0xe1, 0x5b, 0x31, 0x7b, 0xf8,
+ 0x5d, 0x8a, 0xc8, 0x39, 0x95, 0x71, 0x67, 0xe3, 0xb7, 0xbf, 0xec, 0x51, 0x7f, 0x2f, 0x85, 0x6f,
+ 0x78, 0x87, 0x5e, 0x38, 0xe0, 0x2e, 0xf2, 0x3a, 0xe0, 0xbf, 0xf9, 0x78, 0x79, 0x6b, 0x63, 0xf2,
+ 0x3a, 0xa8, 0x01, 0x0a, 0x5f, 0xc8, 0xc9, 0x17, 0x7d, 0x79, 0x6b, 0xfd, 0xe8, 0x8d, 0x40, 0x84,
+ 0x84, 0xc0, 0xd7, 0xbc, 0xeb, 0x21, 0x22, 0x6e, 0x33, 0x16, 0x7a, 0xc1, 0xa8, 0x3f, 0x76, 0xa7,
+ 0xc7, 0x13, 0x6e, 0xe1, 0xbc, 0x95, 0x47, 0x48, 0xe7, 0x78, 0x02, 0x7c, 0x43, 0x1c, 0x96, 0xe7,
+ 0x8a, 0xbc, 0xb5, 0x3e, 0x9c, 0x01, 0x5f, 0xe9, 0x8f, 0x53, 0xec, 0x9a, 0xdc, 0x40, 0xc2, 0xa8,
+ 0x1f, 0x85, 0x72, 0x05, 0xce, 0x78, 0x83, 0xad, 0xd6, 0x9b, 0xe9, 0x33, 0xea, 0xcd, 0xcc, 0x5c,
+ 0xbd, 0xb9, 0x6a, 0xaf, 0x9d, 0xab, 0xdb, 0xd7, 0x16, 0xea, 0x76, 0x99, 0xd8, 0xd7, 0xcf, 0x93,
+ 0xd8, 0xff, 0x28, 0x83, 0x75, 0x4e, 0x3c, 0x29, 0x7d, 0x9b, 0xa5, 0x47, 0x43, 0xfe, 0xa2, 0x25,
+ 0x6b, 0xa5, 0x47, 0x67, 0xbe, 0x9e, 0x9f, 0xdf, 0x14, 0xd3, 0xe7, 0xd8, 0x14, 0x33, 0x4b, 0x36,
+ 0x45, 0x75, 0x47, 0xcf, 0xce, 0xed, 0xe8, 0x5f, 0xcd, 0x79, 0x41, 0x3a, 0xde, 0x86, 0xea, 0x78,
+ 0xb1, 0x91, 0x73, 0x09, 0x23, 0x7f, 0x85, 0xdb, 0xeb, 0xff, 0xa7, 0x83, 0xc1, 0x9f, 0xa4, 0x30,
+ 0xdd, 0xf7, 0x0f, 0x0f, 0x03, 0xef, 0xb0, 0x1f, 0x79, 0x7f, 0x69, 0x3c, 0xf4, 0x37, 0xd9, 0x8d,
+ 0xe5, 0x13, 0x83, 0x24, 0x34, 0xbf, 0x50, 0xa9, 0x2f, 0x5b, 0xa8, 0xf4, 0xfc, 0x42, 0xdd, 0x66,
+ 0x8c, 0x0f, 0x8d, 0x68, 0xaa, 0x3a, 0x00, 0xc2, 0xd1, 0xa5, 0xbf, 0xc8, 0x60, 0xea, 0x47, 0xe3,
+ 0xd1, 0x25, 0x0a, 0x77, 0x16, 0xf8, 0x33, 0x2f, 0xe0, 0xe5, 0xa6, 0x9a, 0x04, 0x17, 0x0b, 0x81,
+ 0x45, 0x36, 0x35, 0x1b, 0xee, 0xcf, 0x2d, 0x3b, 0xf6, 0xa6, 0x3e, 0x3b, 0x8f, 0x14, 0x95, 0x8f,
+ 0xbf, 0xba, 0x52, 0x9e, 0x75, 0x8b, 0x15, 0xa6, 0xde, 0x69, 0xa4, 0xde, 0xd3, 0x28, 0x3c, 0xbc,
+ 0x7f, 0x1e, 0xb1, 0x0a, 0x1b, 0x94, 0x3e, 0xf0, 0x48, 0xb7, 0x3b, 0x76, 0xe7, 0xbb, 0x54, 0xdf,
+ 0x3c, 0x8f, 0xbc, 0x25, 0xcd, 0xaa, 0xef, 0xb1, 0x8c, 0x7f, 0x3a, 0x59, 0x59, 0x87, 0x2d, 0x11,
+ 0xe2, 0x9f, 0x4e, 0x1a, 0x17, 0x2c, 0xe0, 0x02, 0x8b, 0x2d, 0x29, 0xc0, 0xce, 0x65, 0xb1, 0x33,
+ 0x0b, 0x31, 0xf1, 0x12, 0xa3, 0x74, 0xc8, 0x3e, 0x3c, 0x87, 0xc5, 0x17, 0x02, 0x36, 0xf5, 0x73,
+ 0x07, 0xec, 0xe7, 0xac, 0xf4, 0xe5, 0x6b, 0xa0, 0x7f, 0xc4, 0xb6, 0xe3, 0x47, 0x77, 0x34, 0xc4,
+ 0x91, 0xb6, 0xac, 0x4d, 0xb9, 0x32, 0xcd, 0x61, 0x58, 0xb2, 0xb1, 0x63, 0xb6, 0xda, 0xfe, 0xbf,
+ 0x48, 0x57, 0xeb, 0x5b, 0xab, 0x1c, 0x1f, 0xd6, 0x03, 0x76, 0x49, 0xff, 0x74, 0xc2, 0x35, 0xca,
+ 0xe0, 0x3d, 0x18, 0xff, 0x74, 0x02, 0xba, 0xfc, 0xe3, 0xd4, 0x4a, 0x0b, 0x9e, 0x59, 0x7f, 0x2e,
+ 0x79, 0xd1, 0x93, 0x28, 0xa2, 0x32, 0xc9, 0x22, 0xea, 0x9b, 0x2c, 0x71, 0xb9, 0xc3, 0xa5, 0x6a,
+ 0x09, 0x34, 0xd1, 0x54, 0x44, 0x0d, 0x2a, 0xa7, 0xdf, 0x4f, 0x33, 0x7d, 0x41, 0xa7, 0xf0, 0xac,
+ 0x9c, 0x28, 0x2e, 0x88, 0xa5, 0x95, 0x0b, 0x62, 0x1f, 0xb3, 0x6d, 0xa5, 0xb3, 0x08, 0xf9, 0x2b,
+ 0xc3, 0x93, 0xc9, 0x56, 0xdc, 0x5a, 0x84, 0x5c, 0xae, 0x92, 0xf1, 0xbe, 0x25, 0xa5, 0x47, 0x49,
+ 0xf6, 0x02, 0x80, 0xca, 0x7d, 0xa1, 0xb5, 0xc4, 0x7d, 0xa1, 0x3b, 0xac, 0x30, 0xe9, 0x9f, 0xba,
+ 0xde, 0x34, 0x0a, 0x46, 0x5e, 0x48, 0x5b, 0x19, 0x9b, 0xf4, 0x4f, 0x4d, 0x84, 0xe8, 0xbb, 0x50,
+ 0xf6, 0xf3, 0xf4, 0x03, 0xf8, 0x0d, 0xbe, 0x9a, 0xe7, 0x09, 0x23, 0xc8, 0x57, 0x96, 0xc2, 0x5a,
+ 0xfa, 0x71, 0x0a, 0xfb, 0xe7, 0x48, 0x8a, 0x7b, 0xff, 0xd9, 0x7b, 0x3d, 0xb8, 0xc6, 0x89, 0x9a,
+ 0x49, 0xb7, 0xac, 0x02, 0xc2, 0x30, 0x97, 0xde, 0x63, 0x9b, 0x63, 0xdf, 0xff, 0xe2, 0x78, 0xa6,
+ 0x64, 0xd3, 0xac, 0x55, 0x40, 0x18, 0x92, 0x7c, 0xc8, 0xb6, 0xb8, 0xed, 0xbc, 0x21, 0xd1, 0x64,
+ 0xa9, 0x3d, 0x8b, 0x40, 0x4c, 0xba, 0x0f, 0xb0, 0xd0, 0x92, 0x57, 0xc0, 0xe2, 0x6d, 0x6c, 0xd5,
+ 0xbd, 0xac, 0xd2, 0x9f, 0x51, 0x1d, 0x13, 0xf3, 0xac, 0xbe, 0xc3, 0x75, 0x9b, 0xb1, 0xe0, 0x94,
+ 0x1a, 0x20, 0xa1, 0xd8, 0x11, 0x82, 0xd3, 0x1e, 0x02, 0x00, 0x1d, 0xc5, 0x68, 0x9c, 0x43, 0x3e,
+ 0x92, 0xe8, 0x1b, 0x2c, 0x17, 0x9c, 0xba, 0xb0, 0x81, 0x84, 0xa4, 0xfc, 0x46, 0x70, 0x5a, 0x81,
+ 0x47, 0x6e, 0x3d, 0x81, 0xc2, 0x6d, 0x6f, 0x23, 0x22, 0x14, 0x8e, 0x09, 0xa7, 0xba, 0x99, 0x37,
+ 0xe4, 0xab, 0xca, 0xc7, 0xac, 0x21, 0x80, 0xc6, 0x14, 0xe8, 0x0d, 0x31, 0xa6, 0x40, 0xef, 0xb0,
+ 0x7c, 0x70, 0x8a, 0xc7, 0x8f, 0x90, 0x4a, 0x95, 0x5c, 0x70, 0x6a, 0xf2, 0x67, 0x40, 0x46, 0x12,
+ 0x89, 0x95, 0x4a, 0x2e, 0x12, 0xc8, 0xbb, 0x6c, 0x33, 0x38, 0x75, 0x5f, 0x07, 0xfd, 0x89, 0x07,
+ 0x24, 0x54, 0xa8, 0xb0, 0xe0, 0xb4, 0x0e, 0x20, 0x93, 0xdf, 0x5a, 0x2c, 0x04, 0xa7, 0xae, 0x7f,
+ 0xe2, 0x05, 0x9c, 0xa0, 0x20, 0x54, 0xeb, 0x9e, 0x78, 0x01, 0xe0, 0x6f, 0x71, 0xcd, 0x07, 0xc1,
+ 0x80, 0xa3, 0x37, 0xc5, 0xe0, 0xd5, 0x60, 0x80, 0xdc, 0x6c, 0xe0, 0x8f, 0xc7, 0xa3, 0x90, 0xea,
+ 0x16, 0xda, 0xeb, 0x05, 0x64, 0xa1, 0x42, 0xdc, 0x3e, 0x47, 0x85, 0x78, 0x71, 0xb1, 0x42, 0x2c,
+ 0x3d, 0xc6, 0x8e, 0x3d, 0x76, 0xf8, 0x16, 0x4a, 0x9b, 0x55, 0xef, 0xba, 0xf6, 0x31, 0xee, 0xb1,
+ 0xa9, 0x87, 0x0e, 0xe7, 0x05, 0xff, 0xef, 0x45, 0x43, 0xe9, 0xc7, 0x69, 0x0c, 0x1d, 0x45, 0x9d,
+ 0x33, 0xd4, 0xe0, 0xcb, 0xe7, 0xbd, 0x4e, 0xc4, 0x4d, 0x2e, 0xf0, 0x5e, 0xcb, 0xa0, 0x49, 0x68,
+ 0x93, 0xf9, 0x32, 0x6d, 0xb2, 0xf3, 0x25, 0xcc, 0x57, 0xd5, 0x9a, 0xaa, 0xb0, 0x4d, 0xb2, 0x14,
+ 0x9f, 0x11, 0xe5, 0x96, 0x3b, 0x2b, 0x7a, 0xa5, 0xc2, 0x9c, 0x56, 0x01, 0x9f, 0x6d, 0xe0, 0x81,
+ 0x63, 0xdb, 0x76, 0x6c, 0x19, 0x7e, 0x78, 0xfb, 0xb2, 0x2b, 0x8c, 0x67, 0x76, 0x72, 0xd3, 0x2b,
+ 0x3b, 0xb9, 0x99, 0x73, 0x76, 0x72, 0x4f, 0xd4, 0xa5, 0x82, 0xb4, 0xfa, 0x16, 0x34, 0x92, 0x47,
+ 0xc9, 0xc2, 0x4a, 0x8d, 0x80, 0x04, 0xef, 0x87, 0xea, 0x0f, 0xf1, 0x0e, 0xb0, 0xa8, 0xd0, 0x6e,
+ 0xad, 0xe0, 0xe0, 0x34, 0x78, 0x43, 0x38, 0x2c, 0xfd, 0xbd, 0x14, 0x3a, 0x1f, 0xa2, 0xe4, 0xa6,
+ 0x73, 0x85, 0xad, 0xf1, 0xab, 0x83, 0xe2, 0x45, 0x2b, 0x7f, 0x58, 0xb8, 0x18, 0x9b, 0x5e, 0xbc,
+ 0x18, 0x0b, 0x5e, 0x00, 0x3b, 0x03, 0x97, 0x27, 0x76, 0xdd, 0xfc, 0xa4, 0x7f, 0xca, 0xab, 0xf1,
+ 0x50, 0x2f, 0x26, 0x7b, 0xf6, 0x5b, 0xf1, 0x4e, 0xfe, 0x1d, 0xb5, 0x13, 0xb4, 0xd8, 0x3e, 0x38,
+ 0xe3, 0x2d, 0xd5, 0xaf, 0xe3, 0xfb, 0x5f, 0xa5, 0xcb, 0x82, 0xbe, 0x5e, 0x66, 0x97, 0xc8, 0x67,
+ 0x39, 0x50, 0x0d, 0xa3, 0x8b, 0x88, 0xa8, 0xf4, 0xa7, 0x98, 0xcc, 0xf5, 0xaf, 0xb1, 0x8b, 0xdc,
+ 0x79, 0x15, 0x4a, 0x8c, 0xa7, 0x2d, 0x00, 0x4b, 0xba, 0xd2, 0x1f, 0x52, 0x4c, 0xe1, 0x60, 0x32,
+ 0xa6, 0x56, 0xa8, 0x36, 0x57, 0xb7, 0xa7, 0xe7, 0xea, 0x76, 0x18, 0x35, 0xee, 0x70, 0xab, 0x81,
+ 0xb5, 0x85, 0xe0, 0xe6, 0x14, 0xe9, 0x4a, 0x8c, 0xab, 0x11, 0x53, 0x61, 0x74, 0x15, 0x00, 0x28,
+ 0x68, 0xbe, 0xaa, 0xf8, 0x7a, 0xca, 0x58, 0x6c, 0x43, 0x8a, 0xae, 0x7b, 0x67, 0xb5, 0xb4, 0xd0,
+ 0x9f, 0xf2, 0xf0, 0x1b, 0xa3, 0xeb, 0xb7, 0xb0, 0x4b, 0x8e, 0x24, 0x67, 0x5e, 0xc4, 0x57, 0x2d,
+ 0x97, 0x5e, 0xd1, 0x54, 0xcb, 0xfc, 0xbc, 0x4d, 0xb5, 0x7f, 0x43, 0x2e, 0x8d, 0x04, 0xd2, 0xa5,
+ 0xe9, 0x1a, 0x3a, 0xbe, 0x82, 0x4e, 0xc9, 0x6b, 0xe8, 0x6d, 0xfe, 0x0e, 0xf4, 0x36, 0x4d, 0x1a,
+ 0x9d, 0x9e, 0xd6, 0x09, 0x20, 0xce, 0x52, 0xc7, 0xcf, 0x2c, 0x71, 0x7c, 0x92, 0x2f, 0x3a, 0x81,
+ 0x42, 0x3e, 0xb8, 0x8e, 0x44, 0x0e, 0xfc, 0xb1, 0x1f, 0xd0, 0xca, 0x00, 0xb2, 0x0a, 0xcf, 0xa5,
+ 0xdf, 0x54, 0x5d, 0x0a, 0x63, 0xff, 0x5b, 0xb2, 0xee, 0x4a, 0xad, 0xb8, 0x10, 0xa3, 0x5a, 0x57,
+ 0x96, 0x65, 0x5f, 0x9a, 0x01, 0x14, 0xb7, 0x15, 0x19, 0xe0, 0x84, 0xdd, 0xe3, 0x5d, 0xc3, 0x44,
+ 0xbf, 0x50, 0x86, 0xdf, 0xd1, 0xf2, 0x0b, 0x4f, 0xa9, 0x2f, 0xa9, 0x83, 0xe7, 0x9a, 0x89, 0xcb,
+ 0xda, 0x95, 0x63, 0xdc, 0x2b, 0x13, 0xe3, 0xfe, 0xf2, 0x46, 0x33, 0xb1, 0x2d, 0xf9, 0xa3, 0x63,
+ 0xef, 0x98, 0xea, 0x7c, 0x1a, 0x8b, 0x37, 0x75, 0xb0, 0xee, 0x14, 0x5e, 0x21, 0xcf, 0xcd, 0x1a,
+ 0xcb, 0xc4, 0x17, 0x6c, 0xe0, 0x67, 0x29, 0x40, 0xa5, 0x15, 0x31, 0x93, 0xd1, 0xd4, 0xe5, 0x2f,
+ 0x06, 0xaa, 0xac, 0xa0, 0xc8, 0xa5, 0x75, 0x5b, 0x74, 0xdb, 0x05, 0x0d, 0xb0, 0xda, 0xa5, 0x8b,
+ 0x65, 0x4b, 0xde, 0x38, 0x2c, 0x1b, 0xb3, 0x7f, 0xfa, 0x4b, 0x1e, 0xf3, 0x9f, 0x50, 0xa3, 0x46,
+ 0xe1, 0x4c, 0x58, 0xff, 0x2b, 0x19, 0xf8, 0x3c, 0x87, 0xab, 0x65, 0x6b, 0xf9, 0x77, 0x53, 0x98,
+ 0x60, 0x28, 0x75, 0xf2, 0x41, 0xc0, 0x1f, 0x70, 0xb4, 0x38, 0x09, 0xf3, 0x67, 0x3c, 0x26, 0x29,
+ 0x6d, 0x23, 0xbc, 0x3f, 0x55, 0x49, 0x9c, 0x4f, 0x56, 0x35, 0xee, 0x57, 0xe8, 0x4f, 0x47, 0x93,
+ 0x87, 0x78, 0x3b, 0x02, 0x89, 0x0e, 0x79, 0xad, 0x01, 0x51, 0x28, 0xb7, 0xac, 0x25, 0xf7, 0xb6,
+ 0x4a, 0x87, 0x78, 0x5e, 0x5d, 0xc2, 0x33, 0x1b, 0xbf, 0x5d, 0x7a, 0xd3, 0xeb, 0x5b, 0x6c, 0x9d,
+ 0x53, 0x8b, 0xcf, 0x24, 0x6e, 0xaf, 0x7a, 0x49, 0xca, 0xa9, 0x2c, 0x22, 0x2e, 0x99, 0x0b, 0x97,
+ 0xa2, 0xd0, 0x4e, 0x2b, 0x5e, 0x03, 0x48, 0xdb, 0x65, 0x12, 0xb6, 0x2b, 0xb5, 0x55, 0xe7, 0x3b,
+ 0xdf, 0x29, 0x27, 0x21, 0x2e, 0x9d, 0x14, 0xf7, 0xe7, 0x74, 0x9a, 0x53, 0xe4, 0xfd, 0x22, 0x72,
+ 0x12, 0x67, 0x98, 0xcc, 0xc2, 0x19, 0x46, 0x39, 0x18, 0x65, 0xe7, 0x0f, 0x46, 0x89, 0x73, 0xc8,
+ 0xda, 0xdc, 0x39, 0x64, 0x7e, 0x0f, 0x5d, 0x3f, 0xc7, 0x1e, 0xba, 0xb1, 0xe4, 0x1c, 0x30, 0x41,
+ 0x07, 0x0d, 0xfc, 0xb1, 0x27, 0xcd, 0xf5, 0x98, 0x65, 0xe1, 0x79, 0xe5, 0x2b, 0xc8, 0x81, 0x3f,
+ 0x8d, 0x02, 0x7f, 0x3c, 0xf6, 0x02, 0xce, 0x67, 0x71, 0x6a, 0x18, 0xee, 0xd0, 0x9b, 0x7a, 0x34,
+ 0x20, 0x19, 0x22, 0x6b, 0x6d, 0xc6, 0xc0, 0xe6, 0xb0, 0xf4, 0xbb, 0x14, 0x10, 0xfd, 0xf0, 0xed,
+ 0x74, 0x20, 0x76, 0xdc, 0x8f, 0xd8, 0x76, 0x5c, 0x5b, 0xf0, 0x1e, 0x27, 0x35, 0x65, 0x44, 0x69,
+ 0xc1, 0xbb, 0x9c, 0x9f, 0x30, 0x4d, 0xf9, 0x86, 0x49, 0xdc, 0xb2, 0x01, 0xba, 0x6d, 0x80, 0xdb,
+ 0x1c, 0xcc, 0x29, 0xcb, 0xec, 0x52, 0xe2, 0xa5, 0x34, 0x27, 0xc5, 0xfa, 0xee, 0x22, 0x20, 0x2c,
+ 0x84, 0xf3, 0x9b, 0x4b, 0xaf, 0xd8, 0x36, 0xdf, 0x57, 0xdb, 0xfe, 0x70, 0x6f, 0x36, 0x84, 0x4c,
+ 0x85, 0xed, 0x7a, 0x7c, 0x2b, 0x92, 0x1e, 0xf1, 0x6f, 0x76, 0xe4, 0x2b, 0x38, 0xda, 0xad, 0x6e,
+ 0xae, 0x7e, 0x49, 0x67, 0x61, 0x99, 0xd0, 0xf6, 0x87, 0xa5, 0x1e, 0xbb, 0xc8, 0x45, 0xf3, 0x52,
+ 0xc3, 0xe2, 0x51, 0xf3, 0x03, 0x56, 0x50, 0xf6, 0xb5, 0x95, 0x5d, 0x2e, 0x75, 0xef, 0x63, 0x13,
+ 0x29, 0xa3, 0xf4, 0x82, 0x5d, 0xac, 0x8f, 0xfd, 0x37, 0xbc, 0x4f, 0xb5, 0x42, 0xdb, 0xc7, 0x2c,
+ 0x27, 0xae, 0x0a, 0x91, 0xb2, 0x37, 0x56, 0xde, 0x25, 0xb2, 0x36, 0xe0, 0x17, 0xa8, 0xea, 0xb2,
+ 0x2b, 0x20, 0x98, 0x57, 0xbe, 0x67, 0x49, 0xff, 0x36, 0xcb, 0xcb, 0x2b, 0x26, 0x2b, 0x6d, 0x21,
+ 0x29, 0x2c, 0x3c, 0x76, 0xc0, 0x00, 0xdf, 0x65, 0x6b, 0x30, 0x40, 0xa8, 0x3f, 0x60, 0x6b, 0xa3,
+ 0xc8, 0x9b, 0x88, 0xb9, 0xef, 0x2c, 0x57, 0x8e, 0xb6, 0x7d, 0x4e, 0x59, 0xfa, 0x3e, 0x5b, 0xe7,
+ 0x76, 0x0c, 0xa1, 0x68, 0x50, 0x99, 0x57, 0x19, 0x8e, 0x17, 0x26, 0x82, 0xfb, 0x29, 0x63, 0x72,
+ 0x6a, 0xe7, 0x90, 0xa0, 0x1c, 0x6b, 0x84, 0x84, 0x11, 0x2b, 0x80, 0x84, 0xea, 0x51, 0x7f, 0x7a,
+ 0xe8, 0x85, 0xfa, 0x37, 0xd8, 0x7a, 0xe4, 0xbb, 0xfd, 0xa1, 0xb8, 0xac, 0xa9, 0x27, 0x64, 0xf0,
+ 0x59, 0x5a, 0x6b, 0x91, 0x6f, 0x0c, 0x87, 0xfa, 0x7d, 0x96, 0x8f, 0x7c, 0x72, 0x43, 0x32, 0xd7,
+ 0x32, 0xea, 0x5c, 0xe4, 0xa3, 0x4b, 0x42, 0x41, 0xa8, 0x49, 0x6d, 0xc5, 0x80, 0x9f, 0xce, 0x0d,
+ 0x78, 0x7d, 0x41, 0x04, 0x4e, 0x4e, 0x8c, 0xfa, 0x78, 0x71, 0xd4, 0x95, 0x2c, 0x72, 0x68, 0xe2,
+ 0x3a, 0xe6, 0xeb, 0x4e, 0x1d, 0xee, 0xb3, 0xb8, 0xd0, 0x41, 0x4a, 0x36, 0xcb, 0xf5, 0x28, 0x48,
+ 0x97, 0x39, 0x8b, 0x0c, 0xeb, 0x95, 0xce, 0x22, 0x29, 0xac, 0x9c, 0x88, 0xf6, 0xd2, 0x0b, 0x96,
+ 0x47, 0xa1, 0xdd, 0xe3, 0x68, 0x41, 0xea, 0x77, 0x19, 0x8b, 0xef, 0x10, 0x91, 0xd8, 0x9d, 0x55,
+ 0x62, 0xfd, 0xe3, 0xc8, 0x22, 0x25, 0xba, 0xc7, 0xb0, 0xa5, 0x15, 0xd0, 0xa8, 0xe6, 0x89, 0x37,
+ 0x5d, 0x14, 0xfd, 0x57, 0x59, 0x41, 0xc9, 0x30, 0x2b, 0x2b, 0x53, 0x85, 0xa6, 0x71, 0xc1, 0x62,
+ 0x71, 0xf2, 0xa9, 0x6c, 0xb0, 0x35, 0x0f, 0x24, 0x97, 0xff, 0x5b, 0x8a, 0x15, 0x24, 0xe9, 0xd4,
+ 0xd7, 0x35, 0xb6, 0xd9, 0xad, 0xf7, 0x7a, 0x6e, 0xb3, 0xb3, 0x6f, 0xb4, 0x9a, 0x35, 0xed, 0x82,
+ 0xae, 0xb1, 0x1c, 0x87, 0xb4, 0x8d, 0x97, 0xda, 0xbb, 0x9f, 0xbd, 0x7f, 0xbf, 0xa1, 0x5f, 0x91,
+ 0x34, 0x6e, 0xaf, 0x6b, 0x39, 0xda, 0xff, 0x7c, 0x0f, 0x50, 0x9d, 0x31, 0x0e, 0x75, 0x8c, 0x4a,
+ 0xcb, 0xd4, 0xfe, 0x17, 0x87, 0x5d, 0x66, 0x05, 0x0e, 0xeb, 0x74, 0xad, 0xb6, 0xd1, 0xd2, 0x7e,
+ 0x92, 0x20, 0xac, 0xb7, 0xba, 0xdd, 0x9a, 0xf6, 0xbf, 0x39, 0x4c, 0x0c, 0x62, 0xb4, 0x5a, 0xda,
+ 0x4f, 0x39, 0xe4, 0x3a, 0xbb, 0xc8, 0x21, 0xd5, 0x6e, 0xc7, 0xb1, 0xba, 0xad, 0x96, 0x69, 0x69,
+ 0xff, 0x27, 0xc1, 0xde, 0xea, 0x56, 0x8d, 0x96, 0xf6, 0xb3, 0x24, 0x7b, 0xe7, 0x95, 0xf6, 0x1e,
+ 0x20, 0xe5, 0xff, 0xb8, 0x86, 0x2f, 0x91, 0xf9, 0x5e, 0xbc, 0xcd, 0x59, 0x1c, 0xb7, 0x61, 0xb6,
+ 0x5a, 0x5d, 0xed, 0x82, 0x7c, 0x36, 0x2d, 0xab, 0x6b, 0x69, 0x29, 0xfd, 0x2a, 0xbb, 0x84, 0xcf,
+ 0xd5, 0x46, 0xd7, 0xb5, 0xcc, 0xe7, 0x7b, 0xa6, 0xed, 0x68, 0x69, 0xfd, 0x32, 0x57, 0x41, 0x82,
+ 0x7b, 0xad, 0x57, 0x5a, 0x26, 0xa6, 0x7d, 0xd9, 0x33, 0xad, 0x66, 0xdb, 0xec, 0x38, 0xa6, 0xa5,
+ 0x65, 0xf5, 0x1b, 0xec, 0x2a, 0x07, 0xd7, 0x4d, 0xc3, 0xd9, 0xb3, 0x4c, 0x5b, 0x8a, 0x59, 0xd3,
+ 0xaf, 0xb3, 0xcb, 0xf3, 0x28, 0x10, 0xb5, 0xae, 0xef, 0xb0, 0xeb, 0x1c, 0xb1, 0x6b, 0x3a, 0x30,
+ 0xcd, 0x7a, 0x73, 0x57, 0x72, 0x6d, 0x48, 0x81, 0x09, 0x24, 0xf0, 0xe5, 0xa4, 0x5e, 0xb6, 0x44,
+ 0x69, 0x79, 0x5d, 0x67, 0xdb, 0x1c, 0xd8, 0x33, 0xaa, 0xcf, 0x4c, 0xc7, 0x6d, 0x76, 0x34, 0x26,
+ 0x75, 0xad, 0xb7, 0xba, 0x2f, 0x5c, 0xcb, 0x6c, 0x77, 0xf7, 0xcd, 0x9a, 0x56, 0xd0, 0xaf, 0x30,
+ 0x0d, 0x49, 0xbb, 0x96, 0xe3, 0xda, 0x8e, 0xe1, 0xec, 0xd9, 0xda, 0xa6, 0x94, 0x4a, 0x02, 0xba,
+ 0x7b, 0x8e, 0xb6, 0xa5, 0x5f, 0x62, 0x5b, 0xb1, 0x84, 0x76, 0xb7, 0xa6, 0x6d, 0xcb, 0x81, 0x76,
+ 0xad, 0xee, 0x5e, 0x8f, 0xc3, 0x2e, 0x4a, 0x32, 0x2e, 0x11, 0x40, 0x9a, 0x24, 0xe3, 0xee, 0xc0,
+ 0x61, 0x97, 0xf4, 0x9b, 0xec, 0x1a, 0x87, 0xb5, 0xf7, 0x5a, 0x4e, 0xb3, 0x67, 0x58, 0x8e, 0x9c,
+ 0xaf, 0xae, 0x17, 0xd9, 0x95, 0x05, 0x1c, 0x4c, 0xf7, 0xb2, 0xc4, 0x54, 0x0c, 0xcb, 0x6a, 0x9a,
+ 0x96, 0xe4, 0xb9, 0xa2, 0x5f, 0x63, 0xfa, 0x1c, 0x06, 0x38, 0xae, 0xea, 0xf7, 0xd8, 0x6d, 0x0e,
+ 0x7f, 0xbe, 0x67, 0xee, 0x99, 0xcb, 0xcc, 0x7b, 0x4d, 0xbf, 0xc3, 0x76, 0x56, 0x91, 0x80, 0x8c,
+ 0xeb, 0xd2, 0x76, 0x56, 0xb7, 0x65, 0x4a, 0xbe, 0xa2, 0xb4, 0x12, 0x81, 0x81, 0xf6, 0x86, 0x9c,
+ 0x17, 0x88, 0x31, 0xec, 0x57, 0x9d, 0xaa, 0x64, 0xb8, 0x29, 0xb5, 0x57, 0x71, 0xc0, 0xb5, 0x23,
+ 0x2d, 0x64, 0x0b, 0x8c, 0x76, 0x4b, 0xc2, 0xda, 0xa6, 0x63, 0x5a, 0xdc, 0x6a, 0xb7, 0xcb, 0x55,
+ 0xbc, 0x85, 0x31, 0xf7, 0x67, 0x08, 0x88, 0xb4, 0xc1, 0xd7, 0x5a, 0xc4, 0x2a, 0x0e, 0x06, 0xb0,
+ 0x7d, 0xd3, 0xb2, 0x9b, 0xdd, 0x4e, 0xa5, 0xe9, 0xb4, 0x8d, 0x9e, 0x96, 0x2a, 0x7b, 0x58, 0xcd,
+ 0x50, 0x65, 0x8c, 0x9d, 0x02, 0xf4, 0x83, 0xaa, 0x5b, 0xb7, 0x8c, 0x5d, 0x11, 0xa2, 0x17, 0x48,
+ 0x2e, 0x41, 0x6b, 0x56, 0xb7, 0xa7, 0xa5, 0x68, 0xd6, 0x04, 0xb3, 0x4c, 0xc3, 0x6e, 0x6b, 0xe9,
+ 0x24, 0x61, 0xdb, 0xb0, 0x9f, 0x69, 0x99, 0xf2, 0x53, 0x1c, 0x06, 0xdf, 0x24, 0x50, 0xd1, 0x44,
+ 0xce, 0x51, 0x55, 0xf4, 0x24, 0xe7, 0xae, 0xba, 0x35, 0xb3, 0x67, 0x99, 0x55, 0xc3, 0x31, 0x6b,
+ 0x42, 0xc2, 0xaf, 0xe1, 0x37, 0xd0, 0x78, 0x57, 0x9c, 0x58, 0xd5, 0x29, 0x6e, 0xb3, 0x3c, 0x82,
+ 0x20, 0x1f, 0xfd, 0x2c, 0x15, 0x3f, 0x43, 0xea, 0x78, 0x9f, 0x2a, 0xff, 0x07, 0xaa, 0xdb, 0x12,
+ 0x7d, 0x04, 0xcc, 0x6a, 0xaa, 0x06, 0x72, 0x46, 0xe0, 0xd8, 0x10, 0x03, 0xb6, 0x96, 0x92, 0x06,
+ 0x41, 0x9f, 0x45, 0x68, 0x5a, 0x92, 0xca, 0x70, 0xb1, 0xb5, 0xac, 0x24, 0xc5, 0x28, 0x40, 0x68,
+ 0x8e, 0xf4, 0xad, 0xba, 0xcd, 0x1e, 0x59, 0xe9, 0xae, 0x24, 0x44, 0x47, 0x43, 0xc2, 0xa7, 0xfa,
+ 0x35, 0xee, 0x5d, 0x24, 0xb3, 0xd2, 0xea, 0x56, 0x9f, 0x99, 0x35, 0xed, 0x5d, 0xba, 0x7c, 0xa2,
+ 0x7c, 0x02, 0x9f, 0x30, 0xdf, 0x12, 0xe5, 0x05, 0x7b, 0xad, 0xfb, 0xa2, 0xa3, 0xa5, 0x62, 0xba,
+ 0x0e, 0x24, 0xab, 0xea, 0xbe, 0x96, 0x15, 0xc9, 0x9c, 0x83, 0xea, 0x2f, 0x6a, 0xda, 0x5d, 0x8a,
+ 0x18, 0x84, 0xc4, 0x99, 0xe2, 0x69, 0xf9, 0xaf, 0xcd, 0xbd, 0x43, 0x11, 0xa6, 0xef, 0xd9, 0x8b,
+ 0xc3, 0xda, 0x6e, 0xab, 0xd9, 0x79, 0x36, 0x37, 0xac, 0x2d, 0x67, 0x91, 0xa6, 0xf4, 0xca, 0xe9,
+ 0xf6, 0x4d, 0x2d, 0x5b, 0xfe, 0xb3, 0x34, 0x7e, 0x78, 0xc2, 0xa5, 0xcb, 0xde, 0x11, 0x31, 0xd6,
+ 0x95, 0x01, 0x24, 0xe8, 0xc1, 0x67, 0xed, 0x8a, 0xdb, 0xa8, 0xc5, 0xe2, 0x09, 0x54, 0xaf, 0x49,
+ 0xbf, 0xe3, 0x20, 0x22, 0xcb, 0xce, 0xc3, 0xea, 0x35, 0x2d, 0x27, 0x66, 0x5f, 0x77, 0x1f, 0xec,
+ 0x72, 0x2a, 0x2d, 0x09, 0xa9, 0x83, 0x3d, 0x14, 0xf1, 0x08, 0x7a, 0xaa, 0xeb, 0x02, 0xf4, 0x98,
+ 0x40, 0xef, 0xc0, 0xff, 0x63, 0xf1, 0x04, 0x4c, 0xeb, 0x97, 0xa4, 0x34, 0x07, 0x41, 0x60, 0xf0,
+ 0x02, 0x82, 0xba, 0x4e, 0xc3, 0xb4, 0xb4, 0x77, 0xb9, 0x98, 0xa8, 0xda, 0xed, 0xf5, 0x00, 0xa4,
+ 0xc5, 0x44, 0xf5, 0x66, 0x05, 0x20, 0x77, 0xe3, 0x21, 0x8d, 0x3d, 0xa7, 0xdb, 0x31, 0x77, 0xb5,
+ 0x77, 0x4f, 0xf5, 0x4b, 0x82, 0xaa, 0x67, 0xec, 0xd9, 0xa6, 0xf6, 0xee, 0x5d, 0x4a, 0xbf, 0xc6,
+ 0x5d, 0x49, 0x80, 0x20, 0x67, 0xb4, 0xb5, 0x77, 0xef, 0xd2, 0xe5, 0x9a, 0xe2, 0x34, 0x74, 0x9d,
+ 0x75, 0x8b, 0x47, 0x45, 0xcf, 0x72, 0x8d, 0x1a, 0xee, 0xe1, 0x9b, 0xf8, 0x58, 0x33, 0x5b, 0xa6,
+ 0x63, 0x6a, 0xa9, 0x18, 0xd2, 0xee, 0xd6, 0x9a, 0xf5, 0x57, 0x5a, 0xba, 0xfc, 0x08, 0x5d, 0x20,
+ 0xfe, 0xb3, 0x02, 0x64, 0xd4, 0x36, 0x77, 0xfa, 0x4e, 0xcd, 0xb0, 0x40, 0x12, 0x0a, 0x6e, 0x3b,
+ 0x6e, 0xf7, 0x65, 0x5b, 0x4b, 0x95, 0xbf, 0x88, 0xff, 0x6e, 0x00, 0xff, 0x43, 0x00, 0x24, 0xf7,
+ 0x65, 0xbb, 0xea, 0x76, 0x5e, 0xb6, 0xdd, 0xcf, 0xe4, 0xd8, 0x02, 0xf2, 0x40, 0x4b, 0xe9, 0x3b,
+ 0x3c, 0xfa, 0x01, 0xd2, 0xed, 0x99, 0x1d, 0x1e, 0x81, 0x15, 0xc3, 0x6e, 0x56, 0x61, 0x32, 0xfa,
+ 0x0d, 0xbe, 0x5b, 0x02, 0x32, 0xb1, 0xc3, 0xbe, 0x7f, 0x9f, 0x29, 0xff, 0xa3, 0x1c, 0xbb, 0xbc,
+ 0xe4, 0x53, 0x7c, 0x72, 0xea, 0x97, 0xa0, 0x54, 0xbd, 0x22, 0xab, 0x92, 0x0b, 0x94, 0x96, 0x55,
+ 0x78, 0xe3, 0x15, 0xe2, 0x52, 0xb4, 0x29, 0x0b, 0x5c, 0xdb, 0x74, 0x8c, 0x9a, 0xe1, 0x18, 0x5a,
+ 0x7a, 0x4e, 0x98, 0xe9, 0x34, 0xdc, 0x9a, 0xed, 0x68, 0x99, 0x25, 0x70, 0xdb, 0xaa, 0x6a, 0xd9,
+ 0x39, 0x41, 0x00, 0x77, 0x5e, 0xf5, 0x4c, 0xb9, 0xed, 0x0b, 0xc4, 0x7e, 0xcb, 0xe8, 0xb8, 0xfb,
+ 0xcd, 0x9a, 0xb6, 0xbe, 0x0c, 0xd1, 0xab, 0xf6, 0xb4, 0x8d, 0xf9, 0x79, 0xf4, 0xdc, 0x9a, 0x5d,
+ 0xed, 0x69, 0x39, 0xda, 0x8a, 0x14, 0xb8, 0x59, 0xed, 0x68, 0xf9, 0x39, 0x39, 0xcd, 0x9e, 0xdb,
+ 0xb3, 0xba, 0x4e, 0x57, 0x63, 0x0b, 0x88, 0xfd, 0xc7, 0x5c, 0xd7, 0xc2, 0x32, 0x04, 0x4c, 0x6e,
+ 0x73, 0x6e, 0x64, 0xa7, 0xda, 0xe3, 0x0c, 0x5b, 0x4b, 0xe0, 0x40, 0xbf, 0x3d, 0x07, 0xdf, 0xab,
+ 0x21, 0xfd, 0xc5, 0x25, 0x70, 0xa0, 0xd7, 0xe6, 0x06, 0xb6, 0xab, 0x0e, 0x32, 0x5c, 0x5a, 0x86,
+ 0xa8, 0xf1, 0x72, 0x60, 0x6e, 0xed, 0xaa, 0x6d, 0x50, 0x96, 0x5b, 0xf6, 0xf2, 0x72, 0x5c, 0xb5,
+ 0x5b, 0x33, 0xb5, 0x2b, 0x73, 0xb6, 0x32, 0xac, 0x9e, 0xdb, 0xed, 0x69, 0x57, 0xe7, 0x14, 0x03,
+ 0xb0, 0xdd, 0x33, 0xb4, 0x6b, 0x4b, 0xe0, 0x4e, 0xcf, 0xd0, 0xae, 0x2f, 0xa3, 0x6f, 0x18, 0x5a,
+ 0x71, 0x19, 0x7d, 0xc3, 0xd0, 0x6e, 0x2c, 0x5a, 0xf6, 0x09, 0x9f, 0xe0, 0xcd, 0x65, 0x08, 0x98,
+ 0xe0, 0xce, 0xfc, 0x24, 0x00, 0x51, 0x6f, 0x19, 0x15, 0xb3, 0xa5, 0xdd, 0x5a, 0x36, 0xc1, 0x27,
+ 0x38, 0xf9, 0xdb, 0xcb, 0x71, 0x7c, 0xf2, 0x1f, 0xe8, 0xb7, 0xd9, 0x8d, 0x79, 0x99, 0x9d, 0x9a,
+ 0xeb, 0x18, 0xd6, 0xae, 0xe9, 0x68, 0x77, 0x96, 0x0d, 0xd9, 0xa9, 0xb9, 0x76, 0xab, 0xa5, 0xdd,
+ 0x5d, 0x81, 0x73, 0x5a, 0x2d, 0xed, 0x1e, 0xed, 0xd6, 0x32, 0x56, 0x7a, 0x2d, 0xdb, 0x45, 0x4d,
+ 0x4b, 0x73, 0xf6, 0xe0, 0x28, 0xa7, 0xaa, 0x7d, 0x38, 0x1f, 0x5e, 0x00, 0xaf, 0x74, 0x6d, 0xed,
+ 0xa3, 0x39, 0x44, 0xaf, 0x52, 0x71, 0x9b, 0x76, 0xb3, 0xa6, 0x7d, 0x4c, 0xa5, 0x8b, 0x74, 0xb5,
+ 0xbd, 0x4e, 0xc7, 0x6c, 0xb9, 0xcd, 0x9a, 0xf6, 0xb5, 0x65, 0xaa, 0x99, 0x2f, 0x9d, 0x46, 0xcd,
+ 0xd2, 0xbe, 0x5e, 0x7e, 0x84, 0xa7, 0x17, 0xfe, 0xe1, 0xf8, 0x68, 0xa8, 0x5f, 0xe4, 0x49, 0x73,
+ 0xbf, 0x59, 0x73, 0x3b, 0xdd, 0x8e, 0xc9, 0xb7, 0xac, 0x6d, 0x02, 0xf4, 0x2c, 0xd3, 0x36, 0x3b,
+ 0x8e, 0xf6, 0xee, 0x6e, 0xf9, 0x3f, 0xa5, 0xb0, 0x8f, 0x37, 0x9a, 0x9d, 0x3c, 0xa1, 0x0f, 0x9d,
+ 0xc5, 0x6d, 0x54, 0xa0, 0x6e, 0x9a, 0x8d, 0x85, 0x3d, 0x09, 0x60, 0x20, 0xf2, 0x25, 0xe4, 0x0e,
+ 0xdc, 0xdf, 0x00, 0x64, 0xda, 0x3d, 0x2d, 0x4d, 0xa3, 0xc2, 0xb3, 0xb1, 0xe7, 0x34, 0xb4, 0xac,
+ 0x02, 0xa8, 0x41, 0x11, 0x98, 0x53, 0x00, 0x50, 0x2c, 0x69, 0x9a, 0x22, 0xd5, 0xea, 0xee, 0x41,
+ 0x7e, 0xbb, 0xab, 0x48, 0x6d, 0x74, 0x7b, 0xda, 0x53, 0xda, 0x39, 0xe0, 0x79, 0xaf, 0x63, 0x99,
+ 0x3d, 0xd8, 0x86, 0x54, 0x90, 0x6d, 0x3e, 0x87, 0x82, 0xe1, 0xa7, 0xe9, 0xc4, 0x97, 0xa6, 0xf4,
+ 0xc7, 0xaf, 0x80, 0xcc, 0xe0, 0x35, 0x7c, 0x6f, 0x0f, 0x32, 0x21, 0x2e, 0x93, 0x01, 0x45, 0x6e,
+ 0xef, 0x95, 0xeb, 0x38, 0x2d, 0x5e, 0xde, 0x17, 0x28, 0x5a, 0x54, 0x78, 0xb3, 0x23, 0xd3, 0x81,
+ 0x81, 0xa5, 0x29, 0x2e, 0xaa, 0xd3, 0x92, 0xe1, 0x6d, 0x38, 0x6e, 0xcd, 0xac, 0xc6, 0x70, 0x8d,
+ 0x0a, 0x03, 0xc3, 0x71, 0x7b, 0x7b, 0x76, 0x83, 0x67, 0x34, 0xed, 0x12, 0x19, 0x13, 0x80, 0xdd,
+ 0x1e, 0xc2, 0xf4, 0x39, 0x42, 0x90, 0xa0, 0x5d, 0x4e, 0x12, 0x72, 0xd8, 0x95, 0x98, 0x10, 0x34,
+ 0xe0, 0xa5, 0x93, 0x76, 0x95, 0xac, 0x68, 0xd0, 0xd1, 0x43, 0xbb, 0x46, 0xb5, 0x15, 0x51, 0x75,
+ 0x5e, 0x70, 0x6d, 0xae, 0xc7, 0x50, 0xd0, 0x92, 0xa0, 0xc5, 0xa4, 0xc4, 0x7a, 0xd3, 0x6c, 0xd5,
+ 0xb4, 0x1b, 0xca, 0xd0, 0xa0, 0x4f, 0xaf, 0x52, 0xd1, 0x6e, 0xd2, 0xd2, 0x90, 0x3a, 0x00, 0xda,
+ 0xd1, 0x8b, 0x62, 0xde, 0x0b, 0x5b, 0xd2, 0x3e, 0xde, 0x57, 0x51, 0xfa, 0x8c, 0xf4, 0x05, 0xb1,
+ 0xa8, 0x8e, 0xdb, 0xad, 0xc4, 0x51, 0x9a, 0x11, 0x0c, 0x8a, 0xd7, 0xff, 0xfe, 0x3e, 0x43, 0x5b,
+ 0x3a, 0x40, 0x3a, 0x5d, 0xb7, 0xb2, 0x57, 0xaf, 0x93, 0xdc, 0xff, 0x2a, 0x5c, 0x54, 0xf9, 0x4a,
+ 0x90, 0xaf, 0x2d, 0x39, 0x8e, 0x5a, 0x11, 0xe3, 0x7c, 0x9b, 0x8e, 0xbb, 0xdb, 0x75, 0xba, 0x74,
+ 0xfc, 0x4e, 0x51, 0x3c, 0x35, 0x1d, 0xf7, 0x85, 0xd5, 0x74, 0x4c, 0x75, 0x87, 0xc3, 0x10, 0x94,
+ 0x18, 0xa3, 0xea, 0x34, 0xbb, 0x1d, 0x5b, 0xcb, 0xc4, 0x08, 0xa3, 0xd7, 0x6b, 0xbd, 0x92, 0x88,
+ 0x6c, 0x8c, 0xa8, 0xb6, 0x4c, 0xc3, 0x92, 0x88, 0x35, 0xe1, 0xd7, 0x74, 0x5e, 0xd1, 0xd6, 0xc9,
+ 0x52, 0xcd, 0x25, 0x96, 0xfa, 0x9b, 0x38, 0xa1, 0xf9, 0xaf, 0x03, 0xa9, 0xa0, 0xa8, 0x57, 0x13,
+ 0x95, 0x4a, 0xbd, 0x2a, 0xea, 0x12, 0xb1, 0x53, 0x4b, 0x88, 0x6b, 0x3b, 0x56, 0xb3, 0x0a, 0xc7,
+ 0x73, 0x49, 0x4a, 0x45, 0x4d, 0x26, 0x26, 0x45, 0x88, 0x20, 0xcd, 0x96, 0xff, 0x39, 0xbd, 0xbe,
+ 0x94, 0xa3, 0x63, 0xbc, 0xa3, 0x31, 0xeb, 0x6a, 0x09, 0x4a, 0x22, 0xea, 0xae, 0x6d, 0x76, 0x6a,
+ 0xf2, 0xe0, 0x1c, 0xab, 0x51, 0x77, 0xab, 0x0d, 0xb3, 0xfa, 0xcc, 0xed, 0xee, 0x9b, 0x56, 0xcb,
+ 0xe8, 0xc9, 0x82, 0xa1, 0x5e, 0x77, 0x21, 0xc1, 0x40, 0x24, 0xed, 0x75, 0x9c, 0xd8, 0x68, 0xf5,
+ 0x3a, 0x2f, 0xb5, 0x9f, 0x49, 0x44, 0x2e, 0x81, 0xa8, 0xbc, 0x92, 0x08, 0xad, 0x6c, 0xe3, 0xd1,
+ 0x07, 0xbf, 0xe3, 0xc6, 0xd9, 0xed, 0x2e, 0x34, 0x62, 0x76, 0x95, 0x46, 0x8c, 0x80, 0xc4, 0x5d,
+ 0x13, 0x09, 0x91, 0x8d, 0x90, 0xcf, 0xf1, 0x25, 0xdd, 0xc2, 0xf7, 0x76, 0x64, 0xf8, 0xdd, 0xa4,
+ 0xe1, 0x77, 0x15, 0xc3, 0x4b, 0x08, 0xd9, 0x37, 0x5d, 0xb6, 0xd5, 0x1b, 0x1e, 0xdc, 0x1d, 0x49,
+ 0x08, 0x9e, 0xbe, 0xa4, 0x10, 0x08, 0xb2, 0x96, 0x59, 0x85, 0x5c, 0x89, 0x61, 0xb0, 0x0b, 0xfe,
+ 0x5a, 0x6b, 0x5a, 0x26, 0x5f, 0xb8, 0x4d, 0x54, 0xd2, 0x71, 0xeb, 0x75, 0x2d, 0x53, 0xee, 0xa1,
+ 0x63, 0xcc, 0x7f, 0x95, 0x46, 0x8b, 0x63, 0x81, 0x95, 0xda, 0x86, 0x53, 0x6d, 0x68, 0x17, 0xc8,
+ 0xdd, 0x84, 0x03, 0xca, 0x03, 0x9b, 0x25, 0x8c, 0xc4, 0x43, 0x3d, 0x5d, 0xfe, 0x07, 0x29, 0x7c,
+ 0xc1, 0xb2, 0xe4, 0x7b, 0x2f, 0x5a, 0x2d, 0xcb, 0x72, 0x9b, 0xb5, 0x96, 0xe9, 0x3a, 0xcd, 0xb6,
+ 0xd9, 0x55, 0x32, 0xa4, 0x65, 0xb9, 0x0d, 0xc3, 0xaa, 0x49, 0xb8, 0x30, 0x82, 0x25, 0x2b, 0xe7,
+ 0x74, 0x4c, 0x89, 0x47, 0x3f, 0xe9, 0x7c, 0x12, 0x8e, 0x67, 0x77, 0x82, 0x67, 0xcb, 0x53, 0xfa,
+ 0xa3, 0x5e, 0xfc, 0x9d, 0x38, 0x95, 0xcf, 0xee, 0x0f, 0x4d, 0xab, 0x2b, 0x97, 0xb4, 0x8d, 0x4b,
+ 0xfa, 0xee, 0xa7, 0xef, 0x37, 0xf4, 0xab, 0x7c, 0xd6, 0x6d, 0xd7, 0x6e, 0x75, 0x5f, 0xf4, 0x0c,
+ 0xa7, 0x41, 0x4d, 0x2f, 0xec, 0x86, 0xb5, 0xd5, 0x6e, 0x98, 0xda, 0xf9, 0x6a, 0xe3, 0xe9, 0x97,
+ 0x2f, 0xf8, 0x64, 0xe1, 0x8b, 0x22, 0xb5, 0x98, 0xaf, 0xa8, 0x99, 0x03, 0xed, 0x09, 0x30, 0x3a,
+ 0xe7, 0xe3, 0x1c, 0x38, 0xc0, 0xae, 0xc2, 0x19, 0xb6, 0x6d, 0x58, 0xcf, 0x34, 0x51, 0x94, 0x03,
+ 0x7c, 0x21, 0xae, 0x3f, 0x57, 0x3f, 0x0f, 0x5b, 0xf4, 0xaf, 0x76, 0xd2, 0xbf, 0xda, 0x0b, 0xfe,
+ 0xd5, 0x56, 0xfc, 0xeb, 0x50, 0x7d, 0x69, 0xaf, 0x86, 0x68, 0xbb, 0x9e, 0xe8, 0x00, 0x30, 0x04,
+ 0x3d, 0xab, 0xf4, 0xe0, 0xd4, 0x4e, 0xb3, 0xa8, 0x43, 0x94, 0xf5, 0x6c, 0xb9, 0x1f, 0xb7, 0xeb,
+ 0x6e, 0x65, 0xcf, 0xb2, 0x1d, 0xb9, 0x1f, 0xb7, 0xeb, 0xe2, 0x9c, 0x5e, 0xfe, 0x17, 0x74, 0x67,
+ 0x10, 0x3f, 0xeb, 0xe1, 0xf6, 0xc1, 0xa9, 0x9b, 0xd4, 0x24, 0x74, 0xeb, 0x46, 0xb3, 0x65, 0xc2,
+ 0x68, 0xb8, 0x45, 0x9a, 0x8e, 0x5b, 0x31, 0x6a, 0xb2, 0xad, 0x23, 0x3c, 0x8f, 0xc0, 0xe4, 0x8f,
+ 0x69, 0xaa, 0x94, 0x08, 0xda, 0xec, 0xd8, 0x8e, 0xb5, 0x87, 0xa8, 0x0c, 0xed, 0x3f, 0x84, 0x42,
+ 0x87, 0xce, 0xc6, 0xf4, 0xa2, 0xbf, 0x26, 0xc6, 0x5d, 0xa3, 0xaa, 0xc7, 0x54, 0xfa, 0x6c, 0x02,
+ 0xb7, 0x1e, 0xb3, 0x89, 0x7e, 0x9b, 0x40, 0x6d, 0xc4, 0x6c, 0xb2, 0xef, 0x26, 0x70, 0xb9, 0x98,
+ 0x0d, 0x7b, 0x11, 0xdd, 0x9e, 0x40, 0xe5, 0xf5, 0x0f, 0xd8, 0x4d, 0x44, 0xd9, 0x2f, 0x9a, 0x4e,
+ 0xb5, 0x21, 0x9a, 0x61, 0x84, 0x67, 0x54, 0x59, 0x9a, 0xc9, 0x76, 0x98, 0x40, 0x17, 0xe2, 0x51,
+ 0x65, 0xdf, 0x4a, 0xe0, 0x36, 0xa9, 0xd3, 0x26, 0x35, 0x92, 0x5d, 0x50, 0x22, 0xd8, 0xa2, 0x3d,
+ 0xc3, 0x5c, 0xe2, 0x5b, 0x15, 0xf5, 0x4f, 0x76, 0xbe, 0xee, 0x8f, 0xc6, 0xfc, 0xee, 0x28, 0xff,
+ 0x8b, 0x57, 0xe0, 0x8f, 0x8d, 0x7a, 0xd5, 0x6d, 0x76, 0xaa, 0xdd, 0x76, 0xcf, 0x70, 0x9a, 0xb0,
+ 0xeb, 0x09, 0x2f, 0x03, 0x84, 0xd9, 0x33, 0x2d, 0x38, 0xa1, 0xfe, 0x45, 0x1a, 0xf3, 0xcb, 0x41,
+ 0x7f, 0x28, 0x5e, 0x1b, 0xa2, 0x0c, 0x5c, 0xf0, 0x8a, 0x55, 0xe5, 0x2b, 0x42, 0xfd, 0x32, 0xd9,
+ 0xe5, 0x10, 0x70, 0x5e, 0x75, 0x8b, 0xdd, 0x54, 0x00, 0x65, 0x8f, 0x52, 0x4b, 0x53, 0x13, 0x57,
+ 0x60, 0x12, 0x53, 0x10, 0x1b, 0x92, 0x82, 0x44, 0x79, 0xa2, 0x33, 0x03, 0x08, 0xd4, 0x73, 0x8d,
+ 0xe2, 0x53, 0x90, 0xb6, 0xcc, 0x8e, 0x3c, 0x29, 0x72, 0x18, 0x2f, 0x0d, 0x5c, 0xb3, 0xdd, 0x73,
+ 0x5e, 0xc9, 0xe6, 0xb0, 0x82, 0xd8, 0xeb, 0x3c, 0xeb, 0x74, 0x5f, 0x74, 0xe4, 0xee, 0x22, 0xd5,
+ 0xe7, 0x36, 0x6f, 0xc2, 0x12, 0xc7, 0xf3, 0x6a, 0xda, 0xae, 0xdd, 0x32, 0xf6, 0x4d, 0x8d, 0xcd,
+ 0x4d, 0x96, 0x9f, 0x8d, 0x45, 0x55, 0x28, 0x81, 0xbc, 0x4d, 0xa4, 0x6d, 0xea, 0x1f, 0xb1, 0xbb,
+ 0x04, 0x8e, 0x7b, 0xb4, 0x34, 0x3c, 0xec, 0x86, 0xe0, 0xc2, 0xda, 0x56, 0xf9, 0x0f, 0x32, 0x98,
+ 0x7f, 0xc0, 0xde, 0x54, 0x94, 0x72, 0x73, 0xd3, 0x48, 0x86, 0x62, 0x56, 0xd1, 0x6b, 0x14, 0x40,
+ 0x98, 0x74, 0x4a, 0x18, 0xd4, 0x58, 0x62, 0x50, 0x51, 0xbb, 0x28, 0x48, 0x94, 0x94, 0x99, 0x43,
+ 0x74, 0xf7, 0x30, 0x36, 0xe4, 0x36, 0x2c, 0x10, 0x86, 0xb5, 0xbb, 0x07, 0xc2, 0xb4, 0x35, 0xb1,
+ 0x04, 0x86, 0x58, 0x82, 0x75, 0x45, 0x45, 0xa7, 0x0b, 0x9b, 0x4e, 0x07, 0x4c, 0x8d, 0x81, 0x2e,
+ 0xf8, 0xb1, 0x14, 0xcd, 0x09, 0x7f, 0x50, 0x86, 0xc3, 0x9a, 0x34, 0x4f, 0x91, 0x02, 0x18, 0x1e,
+ 0xe4, 0xdc, 0x41, 0x3b, 0x76, 0xd3, 0x76, 0x60, 0x54, 0xa6, 0xdf, 0x62, 0x45, 0x42, 0xef, 0x75,
+ 0xec, 0xbd, 0x1e, 0x28, 0x69, 0xd6, 0xdc, 0xae, 0x55, 0x33, 0x2d, 0xad, 0x30, 0x67, 0x0f, 0xc7,
+ 0xd8, 0xd5, 0x36, 0xe7, 0x26, 0x00, 0x25, 0x06, 0x9f, 0xb2, 0x38, 0x9c, 0xab, 0x08, 0x30, 0xe0,
+ 0xf6, 0x9c, 0x01, 0x79, 0x77, 0x59, 0xcc, 0xfa, 0x62, 0xf9, 0x27, 0x29, 0x56, 0x14, 0xcb, 0xa3,
+ 0x16, 0x97, 0x4a, 0x58, 0x55, 0x9a, 0x55, 0xe1, 0x4f, 0x3c, 0x87, 0xc9, 0x24, 0x88, 0x08, 0x7b,
+ 0xaf, 0x87, 0xe0, 0x94, 0x42, 0x9f, 0xf0, 0x35, 0x91, 0x07, 0x63, 0x7a, 0x59, 0x7d, 0x66, 0x28,
+ 0xd3, 0x2c, 0xa2, 0xb0, 0xff, 0x9b, 0x15, 0xda, 0x37, 0x97, 0x2c, 0xff, 0xda, 0xdc, 0x80, 0x72,
+ 0xf9, 0xd7, 0x85, 0xe1, 0x9a, 0xb1, 0x23, 0x6d, 0x88, 0x05, 0x6e, 0x8a, 0x05, 0xce, 0x95, 0xff,
+ 0x25, 0x7d, 0x0d, 0x00, 0x93, 0xc7, 0x3e, 0x97, 0xea, 0x9a, 0xed, 0x65, 0xae, 0xd9, 0x56, 0x5d,
+ 0x33, 0x09, 0x83, 0xe5, 0x91, 0xf1, 0x4f, 0xb0, 0x5a, 0x0b, 0xb6, 0x3b, 0x8b, 0x9a, 0xd9, 0x73,
+ 0xc8, 0xce, 0x0b, 0x05, 0x99, 0x15, 0x3e, 0x44, 0xc8, 0x17, 0xcd, 0x56, 0xad, 0x6a, 0x58, 0x35,
+ 0x28, 0xab, 0xc9, 0xe7, 0x08, 0x83, 0x87, 0x95, 0xf5, 0x39, 0xe8, 0xbe, 0xd1, 0xda, 0x33, 0xb5,
+ 0x8d, 0x39, 0xe5, 0xb9, 0x68, 0xd1, 0x31, 0x12, 0xc0, 0x9e, 0x65, 0x5a, 0xe6, 0x73, 0x2d, 0xaf,
+ 0x48, 0xa8, 0xed, 0xf5, 0x48, 0x2e, 0x13, 0x76, 0x6a, 0x0b, 0x3b, 0x15, 0xca, 0x7f, 0x4c, 0x4e,
+ 0x12, 0x97, 0xcb, 0x4a, 0xee, 0xc5, 0x01, 0xeb, 0xed, 0xba, 0xf4, 0x12, 0x59, 0x3e, 0x71, 0x20,
+ 0xa5, 0xf9, 0xbd, 0x56, 0x4b, 0xe6, 0x4d, 0x0e, 0x9f, 0x73, 0x11, 0x45, 0x8c, 0xa8, 0xa5, 0x33,
+ 0xa2, 0x20, 0x6f, 0xcb, 0xfc, 0x2d, 0xcb, 0x68, 0x29, 0x81, 0x2a, 0xb3, 0xb5, 0x79, 0x44, 0xb5,
+ 0xdb, 0x6e, 0x1b, 0x1d, 0xb0, 0x13, 0x4e, 0x5e, 0x22, 0xea, 0x2d, 0x63, 0xd7, 0xd6, 0x36, 0xca,
+ 0x7f, 0x98, 0xc1, 0xcf, 0xc9, 0xe2, 0x4a, 0x58, 0x9d, 0x15, 0x2a, 0xba, 0x0b, 0x4c, 0xb8, 0xe1,
+ 0x9a, 0x2f, 0x9b, 0xb6, 0x63, 0xcb, 0x77, 0x15, 0x1c, 0x23, 0xca, 0x4c, 0x8c, 0xf5, 0x14, 0xf9,
+ 0x32, 0x47, 0xbd, 0x30, 0x9b, 0xbb, 0x0d, 0x47, 0x0d, 0x6a, 0x19, 0x06, 0x1c, 0x0f, 0x29, 0xa2,
+ 0x5b, 0x47, 0x4e, 0x38, 0x6b, 0xe1, 0x8e, 0xa9, 0xa2, 0x2a, 0x7b, 0x90, 0x67, 0xe1, 0xe4, 0x70,
+ 0x97, 0xdd, 0x12, 0xb8, 0x6a, 0xc3, 0x68, 0x76, 0x9a, 0x9d, 0xdd, 0x84, 0xe0, 0x35, 0x4a, 0x32,
+ 0x38, 0x30, 0xcf, 0x32, 0x2a, 0x7a, 0x5d, 0x94, 0xe1, 0x80, 0x6e, 0x75, 0xbb, 0x3d, 0xb9, 0x61,
+ 0xec, 0x2a, 0x8b, 0x46, 0x93, 0xc8, 0xa9, 0x28, 0x3e, 0x9a, 0x59, 0x93, 0xb9, 0x0c, 0xfd, 0x65,
+ 0x57, 0xda, 0x1e, 0x22, 0x43, 0xb4, 0x17, 0x77, 0xe7, 0x0d, 0x5f, 0x20, 0x27, 0x90, 0x08, 0x9c,
+ 0x90, 0xb6, 0x49, 0x0b, 0x22, 0xe1, 0x5c, 0x63, 0xf9, 0x6e, 0x71, 0x37, 0x5e, 0xec, 0xed, 0xf2,
+ 0xef, 0x91, 0xe3, 0x89, 0xbf, 0xc6, 0x9b, 0x58, 0x22, 0xd4, 0xa6, 0x27, 0xc4, 0x50, 0x93, 0x17,
+ 0xb5, 0x91, 0xd0, 0x06, 0xc6, 0x98, 0xac, 0x65, 0x7b, 0xb1, 0x9a, 0xfc, 0x45, 0xa9, 0x58, 0x14,
+ 0x09, 0x37, 0x6a, 0xfb, 0xa6, 0xe5, 0x34, 0x6d, 0x53, 0xba, 0x5f, 0x4f, 0x71, 0xbf, 0xf2, 0x5f,
+ 0x47, 0xa7, 0x91, 0x7f, 0xb2, 0x3a, 0xa1, 0x11, 0xbd, 0x23, 0x4c, 0x78, 0xb7, 0x0c, 0x06, 0x67,
+ 0x6e, 0x64, 0xf1, 0x2e, 0xc3, 0x89, 0xc5, 0xa7, 0xcb, 0x3f, 0xc4, 0xf9, 0xe2, 0x95, 0x2c, 0x7f,
+ 0xb6, 0x64, 0xbe, 0xcf, 0xbb, 0xc9, 0xf9, 0xe2, 0x98, 0x12, 0x8a, 0x1b, 0x92, 0x90, 0xcd, 0xc1,
+ 0x42, 0xf6, 0xdf, 0x60, 0xb7, 0x17, 0xfe, 0x78, 0xf7, 0x12, 0xf5, 0xed, 0x6a, 0x22, 0x50, 0x44,
+ 0x01, 0x24, 0xc1, 0x98, 0xfa, 0x50, 0x3e, 0x07, 0xc6, 0xba, 0xdf, 0x9a, 0xbf, 0x90, 0x95, 0x10,
+ 0x4f, 0x07, 0x38, 0xab, 0x5e, 0x85, 0xba, 0x9b, 0x5b, 0x46, 0x01, 0x71, 0x8f, 0x8d, 0x8f, 0x70,
+ 0x16, 0x8d, 0x06, 0xf5, 0xa5, 0x96, 0x2e, 0xff, 0x51, 0x1a, 0xed, 0x1e, 0x1f, 0x2b, 0x16, 0x53,
+ 0x50, 0x3b, 0x99, 0x82, 0x30, 0x82, 0x39, 0x10, 0xab, 0x50, 0x8a, 0xe0, 0x14, 0xad, 0x78, 0x5b,
+ 0x8d, 0x60, 0xec, 0x57, 0xa4, 0x55, 0x94, 0x88, 0x0b, 0x44, 0x89, 0x8a, 0xa2, 0x3d, 0xef, 0xe6,
+ 0x59, 0x32, 0x5b, 0x3b, 0x99, 0x5f, 0x44, 0xd2, 0x96, 0x60, 0xcb, 0x70, 0x4c, 0x99, 0x8c, 0xda,
+ 0x71, 0x4c, 0x58, 0xfc, 0xed, 0xfe, 0x1c, 0x71, 0x05, 0x24, 0xe7, 0x68, 0xbb, 0x48, 0x40, 0xdd,
+ 0x9a, 0xe9, 0x18, 0xcd, 0x96, 0x96, 0x57, 0x55, 0xa5, 0x8c, 0xc1, 0x35, 0xb5, 0x35, 0xa6, 0x4e,
+ 0x5d, 0x24, 0x13, 0xa3, 0x53, 0xb3, 0xb5, 0x42, 0xf9, 0x5f, 0xa5, 0x96, 0x7c, 0x20, 0x18, 0x2e,
+ 0x73, 0xe2, 0xfa, 0x9c, 0x13, 0xd3, 0x7b, 0x6b, 0x01, 0x96, 0x3b, 0xb8, 0x58, 0xb1, 0x98, 0x01,
+ 0xb2, 0x82, 0xbc, 0x2c, 0x51, 0x57, 0xbc, 0x26, 0x33, 0x2f, 0x44, 0xd6, 0x21, 0x59, 0x11, 0x0b,
+ 0x75, 0xe9, 0x4f, 0x6b, 0xe5, 0xff, 0x42, 0xbb, 0x73, 0xf2, 0xcf, 0x07, 0x88, 0xe3, 0x1e, 0x9c,
+ 0xb4, 0xed, 0x6a, 0x7c, 0xfc, 0xe3, 0xf7, 0x47, 0x5e, 0xc8, 0x77, 0xd3, 0xed, 0x9e, 0x6b, 0xec,
+ 0xee, 0x5a, 0xe6, 0xae, 0xc1, 0x0f, 0xe9, 0x74, 0xe2, 0x13, 0xb7, 0x51, 0x32, 0xc2, 0xe0, 0xbd,
+ 0xe4, 0x5b, 0x5c, 0x49, 0x86, 0x61, 0xb4, 0x16, 0x03, 0x30, 0x05, 0xae, 0xc7, 0x7c, 0xe2, 0xb4,
+ 0x6f, 0x57, 0xb5, 0x0d, 0x61, 0x70, 0x01, 0x15, 0x67, 0x1a, 0xd9, 0xe9, 0x6d, 0xf7, 0xc8, 0x8d,
+ 0xf2, 0xe2, 0x48, 0x4d, 0x00, 0x91, 0x0c, 0x58, 0x2c, 0x02, 0xe1, 0x52, 0x44, 0x21, 0xc6, 0x24,
+ 0x0f, 0x4c, 0xf2, 0x8a, 0x86, 0x98, 0x04, 0xd7, 0x45, 0x1c, 0x9f, 0xda, 0xbd, 0x65, 0x47, 0xf3,
+ 0x9d, 0xa5, 0x7f, 0x36, 0xc2, 0x15, 0x9f, 0xc0, 0x23, 0x63, 0x1d, 0xce, 0x73, 0x0b, 0xaf, 0x79,
+ 0x05, 0xbc, 0xdd, 0xb5, 0x4c, 0x2d, 0x55, 0x6e, 0x51, 0x3c, 0x26, 0xff, 0x14, 0x04, 0x49, 0x12,
+ 0x1a, 0xd7, 0xf1, 0x6e, 0x83, 0x22, 0x8b, 0xdc, 0x5f, 0x62, 0x48, 0xda, 0x9f, 0x67, 0x50, 0xb5,
+ 0x15, 0x1f, 0x49, 0x4b, 0xbf, 0xe9, 0x39, 0xea, 0x29, 0x1a, 0x92, 0x13, 0xee, 0x7c, 0x0b, 0x18,
+ 0xb7, 0xdd, 0xb4, 0x6d, 0x59, 0x91, 0x72, 0x74, 0xc7, 0x7c, 0x49, 0x67, 0x4e, 0x5b, 0x4b, 0x53,
+ 0xdd, 0x3d, 0x8f, 0x40, 0xb6, 0x8c, 0xb8, 0x8f, 0x00, 0xd8, 0x64, 0x53, 0x34, 0x4b, 0x7b, 0xfc,
+ 0x22, 0x0a, 0x59, 0xd7, 0x54, 0xd6, 0x64, 0xdb, 0x74, 0x5d, 0x65, 0x4d, 0xa0, 0x90, 0x75, 0x43,
+ 0xc6, 0x40, 0xcf, 0xa1, 0x86, 0x40, 0x4e, 0x06, 0x23, 0x8c, 0x26, 0x0b, 0x42, 0x26, 0x2e, 0x98,
+ 0xc4, 0x4a, 0xd8, 0xa6, 0x83, 0xe5, 0x9b, 0x38, 0x5f, 0x2f, 0xc1, 0xe1, 0x30, 0x5b, 0x2a, 0x33,
+ 0xaa, 0x21, 0x99, 0xb7, 0x55, 0xe6, 0x24, 0x0e, 0x99, 0x2f, 0xea, 0x37, 0xe3, 0x95, 0x48, 0xf8,
+ 0xd7, 0xcf, 0xde, 0x67, 0xf4, 0x3b, 0xf1, 0x5a, 0xa8, 0x38, 0x64, 0x05, 0x07, 0xfc, 0x7d, 0xfa,
+ 0xbb, 0x19, 0x58, 0x72, 0x25, 0x6e, 0x64, 0x50, 0x5f, 0xb0, 0x5e, 0x5d, 0xb8, 0xbd, 0x02, 0x30,
+ 0x6c, 0x1f, 0x52, 0x51, 0xa5, 0xa5, 0x44, 0xb5, 0x14, 0x63, 0x5a, 0xcd, 0x7d, 0xb3, 0x63, 0xda,
+ 0xf1, 0xf5, 0x8c, 0x5d, 0xa5, 0x58, 0xd2, 0xb2, 0x0a, 0x83, 0xac, 0xa0, 0x78, 0xdf, 0xd6, 0xd6,
+ 0x72, 0xe5, 0x2f, 0xb0, 0x21, 0x10, 0xdf, 0x43, 0xc7, 0xab, 0xe7, 0x62, 0x0b, 0x55, 0x1b, 0x64,
+ 0xa8, 0xe5, 0x73, 0xc7, 0x6d, 0x37, 0x3b, 0x98, 0xd1, 0x53, 0x0a, 0xcc, 0x78, 0x89, 0xb0, 0x34,
+ 0xc5, 0xe0, 0xf3, 0x25, 0x2d, 0x8c, 0x1f, 0xe1, 0x69, 0x78, 0xee, 0x22, 0x32, 0xf9, 0x69, 0xd5,
+ 0xc2, 0x7e, 0x4a, 0xa7, 0x5b, 0x6d, 0x18, 0x9d, 0x5d, 0x53, 0x36, 0xf3, 0x05, 0xc2, 0x7c, 0xbe,
+ 0x67, 0xb4, 0xe4, 0x05, 0x35, 0x01, 0x6d, 0x1b, 0x36, 0xee, 0x5e, 0x49, 0x62, 0x3c, 0xd3, 0x67,
+ 0x2a, 0x7b, 0xec, 0x03, 0x3f, 0x38, 0xe4, 0x97, 0x01, 0x07, 0x7e, 0x30, 0xfc, 0x14, 0xff, 0xa7,
+ 0x16, 0x79, 0x39, 0xf0, 0xc1, 0xa3, 0x1f, 0x3e, 0x3a, 0x1c, 0x45, 0x47, 0xc7, 0x07, 0x9f, 0x0e,
+ 0xfc, 0xc9, 0x7d, 0x41, 0x76, 0x1f, 0xc9, 0x7e, 0x85, 0xfe, 0x43, 0x97, 0x93, 0x47, 0xf7, 0x0f,
+ 0x7d, 0xf5, 0xbf, 0x75, 0x39, 0x58, 0xe7, 0x98, 0x47, 0xff, 0x37, 0x00, 0x00, 0xff, 0xff, 0xe3,
+ 0xd4, 0xf3, 0x50, 0xfa, 0x65, 0x00, 0x00,
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/openolt/openolt.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/openolt/openolt.pb.go
new file mode 100644
index 0000000..5bc0537
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/openolt/openolt.pb.go
@@ -0,0 +1,4445 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: voltha_protos/openolt.proto
+
+package openolt
+
+import (
+ context "context"
+ fmt "fmt"
+ proto "github.com/golang/protobuf/proto"
+ tech_profile "github.com/opencord/voltha-protos/v3/go/tech_profile"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ grpc "google.golang.org/grpc"
+ math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// SchedulerConfig from public import voltha_protos/tech_profile.proto
+type SchedulerConfig = tech_profile.SchedulerConfig
+
+// TrafficShapingInfo from public import voltha_protos/tech_profile.proto
+type TrafficShapingInfo = tech_profile.TrafficShapingInfo
+
+// TrafficScheduler from public import voltha_protos/tech_profile.proto
+type TrafficScheduler = tech_profile.TrafficScheduler
+
+// TrafficSchedulers from public import voltha_protos/tech_profile.proto
+type TrafficSchedulers = tech_profile.TrafficSchedulers
+
+// TailDropDiscardConfig from public import voltha_protos/tech_profile.proto
+type TailDropDiscardConfig = tech_profile.TailDropDiscardConfig
+
+// RedDiscardConfig from public import voltha_protos/tech_profile.proto
+type RedDiscardConfig = tech_profile.RedDiscardConfig
+
+// WRedDiscardConfig from public import voltha_protos/tech_profile.proto
+type WRedDiscardConfig = tech_profile.WRedDiscardConfig
+
+// DiscardConfig from public import voltha_protos/tech_profile.proto
+type DiscardConfig = tech_profile.DiscardConfig
+type DiscardConfig_TailDropDiscardConfig = tech_profile.DiscardConfig_TailDropDiscardConfig
+type DiscardConfig_RedDiscardConfig = tech_profile.DiscardConfig_RedDiscardConfig
+type DiscardConfig_WredDiscardConfig = tech_profile.DiscardConfig_WredDiscardConfig
+
+// TrafficQueue from public import voltha_protos/tech_profile.proto
+type TrafficQueue = tech_profile.TrafficQueue
+
+// TrafficQueues from public import voltha_protos/tech_profile.proto
+type TrafficQueues = tech_profile.TrafficQueues
+
+// Direction from public import voltha_protos/tech_profile.proto
+type Direction = tech_profile.Direction
+
+var Direction_name = tech_profile.Direction_name
+var Direction_value = tech_profile.Direction_value
+
+const Direction_UPSTREAM = Direction(tech_profile.Direction_UPSTREAM)
+const Direction_DOWNSTREAM = Direction(tech_profile.Direction_DOWNSTREAM)
+const Direction_BIDIRECTIONAL = Direction(tech_profile.Direction_BIDIRECTIONAL)
+
+// SchedulingPolicy from public import voltha_protos/tech_profile.proto
+type SchedulingPolicy = tech_profile.SchedulingPolicy
+
+var SchedulingPolicy_name = tech_profile.SchedulingPolicy_name
+var SchedulingPolicy_value = tech_profile.SchedulingPolicy_value
+
+const SchedulingPolicy_WRR = SchedulingPolicy(tech_profile.SchedulingPolicy_WRR)
+const SchedulingPolicy_StrictPriority = SchedulingPolicy(tech_profile.SchedulingPolicy_StrictPriority)
+const SchedulingPolicy_Hybrid = SchedulingPolicy(tech_profile.SchedulingPolicy_Hybrid)
+
+// AdditionalBW from public import voltha_protos/tech_profile.proto
+type AdditionalBW = tech_profile.AdditionalBW
+
+var AdditionalBW_name = tech_profile.AdditionalBW_name
+var AdditionalBW_value = tech_profile.AdditionalBW_value
+
+const AdditionalBW_AdditionalBW_None = AdditionalBW(tech_profile.AdditionalBW_AdditionalBW_None)
+const AdditionalBW_AdditionalBW_NA = AdditionalBW(tech_profile.AdditionalBW_AdditionalBW_NA)
+const AdditionalBW_AdditionalBW_BestEffort = AdditionalBW(tech_profile.AdditionalBW_AdditionalBW_BestEffort)
+const AdditionalBW_AdditionalBW_Auto = AdditionalBW(tech_profile.AdditionalBW_AdditionalBW_Auto)
+
+// DiscardPolicy from public import voltha_protos/tech_profile.proto
+type DiscardPolicy = tech_profile.DiscardPolicy
+
+var DiscardPolicy_name = tech_profile.DiscardPolicy_name
+var DiscardPolicy_value = tech_profile.DiscardPolicy_value
+
+const DiscardPolicy_TailDrop = DiscardPolicy(tech_profile.DiscardPolicy_TailDrop)
+const DiscardPolicy_WTailDrop = DiscardPolicy(tech_profile.DiscardPolicy_WTailDrop)
+const DiscardPolicy_Red = DiscardPolicy(tech_profile.DiscardPolicy_Red)
+const DiscardPolicy_WRed = DiscardPolicy(tech_profile.DiscardPolicy_WRed)
+
+// InferredAdditionBWIndication from public import voltha_protos/tech_profile.proto
+type InferredAdditionBWIndication = tech_profile.InferredAdditionBWIndication
+
+var InferredAdditionBWIndication_name = tech_profile.InferredAdditionBWIndication_name
+var InferredAdditionBWIndication_value = tech_profile.InferredAdditionBWIndication_value
+
+const InferredAdditionBWIndication_InferredAdditionBWIndication_None = InferredAdditionBWIndication(tech_profile.InferredAdditionBWIndication_InferredAdditionBWIndication_None)
+const InferredAdditionBWIndication_InferredAdditionBWIndication_Assured = InferredAdditionBWIndication(tech_profile.InferredAdditionBWIndication_InferredAdditionBWIndication_Assured)
+const InferredAdditionBWIndication_InferredAdditionBWIndication_BestEffort = InferredAdditionBWIndication(tech_profile.InferredAdditionBWIndication_InferredAdditionBWIndication_BestEffort)
+
+type DeviceInfo_DeviceResourceRanges_Pool_PoolType int32
+
+const (
+ DeviceInfo_DeviceResourceRanges_Pool_ONU_ID DeviceInfo_DeviceResourceRanges_Pool_PoolType = 0
+ DeviceInfo_DeviceResourceRanges_Pool_ALLOC_ID DeviceInfo_DeviceResourceRanges_Pool_PoolType = 1
+ DeviceInfo_DeviceResourceRanges_Pool_GEMPORT_ID DeviceInfo_DeviceResourceRanges_Pool_PoolType = 2
+ DeviceInfo_DeviceResourceRanges_Pool_FLOW_ID DeviceInfo_DeviceResourceRanges_Pool_PoolType = 3
+)
+
+var DeviceInfo_DeviceResourceRanges_Pool_PoolType_name = map[int32]string{
+ 0: "ONU_ID",
+ 1: "ALLOC_ID",
+ 2: "GEMPORT_ID",
+ 3: "FLOW_ID",
+}
+
+var DeviceInfo_DeviceResourceRanges_Pool_PoolType_value = map[string]int32{
+ "ONU_ID": 0,
+ "ALLOC_ID": 1,
+ "GEMPORT_ID": 2,
+ "FLOW_ID": 3,
+}
+
+func (x DeviceInfo_DeviceResourceRanges_Pool_PoolType) String() string {
+ return proto.EnumName(DeviceInfo_DeviceResourceRanges_Pool_PoolType_name, int32(x))
+}
+
+func (DeviceInfo_DeviceResourceRanges_Pool_PoolType) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{15, 0, 0, 0}
+}
+
+type DeviceInfo_DeviceResourceRanges_Pool_SharingType int32
+
+const (
+ DeviceInfo_DeviceResourceRanges_Pool_DEDICATED_PER_INTF DeviceInfo_DeviceResourceRanges_Pool_SharingType = 0
+ DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH DeviceInfo_DeviceResourceRanges_Pool_SharingType = 1
+ DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_SAME_TECH DeviceInfo_DeviceResourceRanges_Pool_SharingType = 2
+)
+
+var DeviceInfo_DeviceResourceRanges_Pool_SharingType_name = map[int32]string{
+ 0: "DEDICATED_PER_INTF",
+ 1: "SHARED_BY_ALL_INTF_ALL_TECH",
+ 2: "SHARED_BY_ALL_INTF_SAME_TECH",
+}
+
+var DeviceInfo_DeviceResourceRanges_Pool_SharingType_value = map[string]int32{
+ "DEDICATED_PER_INTF": 0,
+ "SHARED_BY_ALL_INTF_ALL_TECH": 1,
+ "SHARED_BY_ALL_INTF_SAME_TECH": 2,
+}
+
+func (x DeviceInfo_DeviceResourceRanges_Pool_SharingType) String() string {
+ return proto.EnumName(DeviceInfo_DeviceResourceRanges_Pool_SharingType_name, int32(x))
+}
+
+func (DeviceInfo_DeviceResourceRanges_Pool_SharingType) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{15, 0, 0, 1}
+}
+
+type GroupMember_InterfaceType int32
+
+const (
+ GroupMember_PON GroupMember_InterfaceType = 0
+ GroupMember_EPON_1G_PATH GroupMember_InterfaceType = 1
+ GroupMember_EPON_10G_PATH GroupMember_InterfaceType = 2
+)
+
+var GroupMember_InterfaceType_name = map[int32]string{
+ 0: "PON",
+ 1: "EPON_1G_PATH",
+ 2: "EPON_10G_PATH",
+}
+
+var GroupMember_InterfaceType_value = map[string]int32{
+ "PON": 0,
+ "EPON_1G_PATH": 1,
+ "EPON_10G_PATH": 2,
+}
+
+func (x GroupMember_InterfaceType) String() string {
+ return proto.EnumName(GroupMember_InterfaceType_name, int32(x))
+}
+
+func (GroupMember_InterfaceType) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{36, 0}
+}
+
+type Group_GroupMembersCommand int32
+
+const (
+ Group_ADD_MEMBERS Group_GroupMembersCommand = 0
+ Group_REMOVE_MEMBERS Group_GroupMembersCommand = 1
+ Group_SET_MEMBERS Group_GroupMembersCommand = 2
+)
+
+var Group_GroupMembersCommand_name = map[int32]string{
+ 0: "ADD_MEMBERS",
+ 1: "REMOVE_MEMBERS",
+ 2: "SET_MEMBERS",
+}
+
+var Group_GroupMembersCommand_value = map[string]int32{
+ "ADD_MEMBERS": 0,
+ "REMOVE_MEMBERS": 1,
+ "SET_MEMBERS": 2,
+}
+
+func (x Group_GroupMembersCommand) String() string {
+ return proto.EnumName(Group_GroupMembersCommand_name, int32(x))
+}
+
+func (Group_GroupMembersCommand) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{37, 0}
+}
+
+type Indication struct {
+ // Types that are valid to be assigned to Data:
+ // *Indication_OltInd
+ // *Indication_IntfInd
+ // *Indication_IntfOperInd
+ // *Indication_OnuDiscInd
+ // *Indication_OnuInd
+ // *Indication_OmciInd
+ // *Indication_PktInd
+ // *Indication_PortStats
+ // *Indication_FlowStats
+ // *Indication_AlarmInd
+ Data isIndication_Data `protobuf_oneof:"data"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Indication) Reset() { *m = Indication{} }
+func (m *Indication) String() string { return proto.CompactTextString(m) }
+func (*Indication) ProtoMessage() {}
+func (*Indication) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{0}
+}
+
+func (m *Indication) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Indication.Unmarshal(m, b)
+}
+func (m *Indication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Indication.Marshal(b, m, deterministic)
+}
+func (m *Indication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Indication.Merge(m, src)
+}
+func (m *Indication) XXX_Size() int {
+ return xxx_messageInfo_Indication.Size(m)
+}
+func (m *Indication) XXX_DiscardUnknown() {
+ xxx_messageInfo_Indication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Indication proto.InternalMessageInfo
+
+type isIndication_Data interface {
+ isIndication_Data()
+}
+
+type Indication_OltInd struct {
+ OltInd *OltIndication `protobuf:"bytes,1,opt,name=olt_ind,json=oltInd,proto3,oneof"`
+}
+
+type Indication_IntfInd struct {
+ IntfInd *IntfIndication `protobuf:"bytes,2,opt,name=intf_ind,json=intfInd,proto3,oneof"`
+}
+
+type Indication_IntfOperInd struct {
+ IntfOperInd *IntfOperIndication `protobuf:"bytes,3,opt,name=intf_oper_ind,json=intfOperInd,proto3,oneof"`
+}
+
+type Indication_OnuDiscInd struct {
+ OnuDiscInd *OnuDiscIndication `protobuf:"bytes,4,opt,name=onu_disc_ind,json=onuDiscInd,proto3,oneof"`
+}
+
+type Indication_OnuInd struct {
+ OnuInd *OnuIndication `protobuf:"bytes,5,opt,name=onu_ind,json=onuInd,proto3,oneof"`
+}
+
+type Indication_OmciInd struct {
+ OmciInd *OmciIndication `protobuf:"bytes,6,opt,name=omci_ind,json=omciInd,proto3,oneof"`
+}
+
+type Indication_PktInd struct {
+ PktInd *PacketIndication `protobuf:"bytes,7,opt,name=pkt_ind,json=pktInd,proto3,oneof"`
+}
+
+type Indication_PortStats struct {
+ PortStats *PortStatistics `protobuf:"bytes,8,opt,name=port_stats,json=portStats,proto3,oneof"`
+}
+
+type Indication_FlowStats struct {
+ FlowStats *FlowStatistics `protobuf:"bytes,9,opt,name=flow_stats,json=flowStats,proto3,oneof"`
+}
+
+type Indication_AlarmInd struct {
+ AlarmInd *AlarmIndication `protobuf:"bytes,10,opt,name=alarm_ind,json=alarmInd,proto3,oneof"`
+}
+
+func (*Indication_OltInd) isIndication_Data() {}
+
+func (*Indication_IntfInd) isIndication_Data() {}
+
+func (*Indication_IntfOperInd) isIndication_Data() {}
+
+func (*Indication_OnuDiscInd) isIndication_Data() {}
+
+func (*Indication_OnuInd) isIndication_Data() {}
+
+func (*Indication_OmciInd) isIndication_Data() {}
+
+func (*Indication_PktInd) isIndication_Data() {}
+
+func (*Indication_PortStats) isIndication_Data() {}
+
+func (*Indication_FlowStats) isIndication_Data() {}
+
+func (*Indication_AlarmInd) isIndication_Data() {}
+
+func (m *Indication) GetData() isIndication_Data {
+ if m != nil {
+ return m.Data
+ }
+ return nil
+}
+
+func (m *Indication) GetOltInd() *OltIndication {
+ if x, ok := m.GetData().(*Indication_OltInd); ok {
+ return x.OltInd
+ }
+ return nil
+}
+
+func (m *Indication) GetIntfInd() *IntfIndication {
+ if x, ok := m.GetData().(*Indication_IntfInd); ok {
+ return x.IntfInd
+ }
+ return nil
+}
+
+func (m *Indication) GetIntfOperInd() *IntfOperIndication {
+ if x, ok := m.GetData().(*Indication_IntfOperInd); ok {
+ return x.IntfOperInd
+ }
+ return nil
+}
+
+func (m *Indication) GetOnuDiscInd() *OnuDiscIndication {
+ if x, ok := m.GetData().(*Indication_OnuDiscInd); ok {
+ return x.OnuDiscInd
+ }
+ return nil
+}
+
+func (m *Indication) GetOnuInd() *OnuIndication {
+ if x, ok := m.GetData().(*Indication_OnuInd); ok {
+ return x.OnuInd
+ }
+ return nil
+}
+
+func (m *Indication) GetOmciInd() *OmciIndication {
+ if x, ok := m.GetData().(*Indication_OmciInd); ok {
+ return x.OmciInd
+ }
+ return nil
+}
+
+func (m *Indication) GetPktInd() *PacketIndication {
+ if x, ok := m.GetData().(*Indication_PktInd); ok {
+ return x.PktInd
+ }
+ return nil
+}
+
+func (m *Indication) GetPortStats() *PortStatistics {
+ if x, ok := m.GetData().(*Indication_PortStats); ok {
+ return x.PortStats
+ }
+ return nil
+}
+
+func (m *Indication) GetFlowStats() *FlowStatistics {
+ if x, ok := m.GetData().(*Indication_FlowStats); ok {
+ return x.FlowStats
+ }
+ return nil
+}
+
+func (m *Indication) GetAlarmInd() *AlarmIndication {
+ if x, ok := m.GetData().(*Indication_AlarmInd); ok {
+ return x.AlarmInd
+ }
+ return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*Indication) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*Indication_OltInd)(nil),
+ (*Indication_IntfInd)(nil),
+ (*Indication_IntfOperInd)(nil),
+ (*Indication_OnuDiscInd)(nil),
+ (*Indication_OnuInd)(nil),
+ (*Indication_OmciInd)(nil),
+ (*Indication_PktInd)(nil),
+ (*Indication_PortStats)(nil),
+ (*Indication_FlowStats)(nil),
+ (*Indication_AlarmInd)(nil),
+ }
+}
+
+type AlarmIndication struct {
+ // Types that are valid to be assigned to Data:
+ // *AlarmIndication_LosInd
+ // *AlarmIndication_DyingGaspInd
+ // *AlarmIndication_OnuAlarmInd
+ // *AlarmIndication_OnuStartupFailInd
+ // *AlarmIndication_OnuSignalDegradeInd
+ // *AlarmIndication_OnuDriftOfWindowInd
+ // *AlarmIndication_OnuLossOmciInd
+ // *AlarmIndication_OnuSignalsFailInd
+ // *AlarmIndication_OnuTiwiInd
+ // *AlarmIndication_OnuActivationFailInd
+ // *AlarmIndication_OnuProcessingErrorInd
+ // *AlarmIndication_OnuLossOfSyncFailInd
+ // *AlarmIndication_OnuItuPonStatsInd
+ Data isAlarmIndication_Data `protobuf_oneof:"data"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *AlarmIndication) Reset() { *m = AlarmIndication{} }
+func (m *AlarmIndication) String() string { return proto.CompactTextString(m) }
+func (*AlarmIndication) ProtoMessage() {}
+func (*AlarmIndication) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{1}
+}
+
+func (m *AlarmIndication) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_AlarmIndication.Unmarshal(m, b)
+}
+func (m *AlarmIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_AlarmIndication.Marshal(b, m, deterministic)
+}
+func (m *AlarmIndication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_AlarmIndication.Merge(m, src)
+}
+func (m *AlarmIndication) XXX_Size() int {
+ return xxx_messageInfo_AlarmIndication.Size(m)
+}
+func (m *AlarmIndication) XXX_DiscardUnknown() {
+ xxx_messageInfo_AlarmIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AlarmIndication proto.InternalMessageInfo
+
+type isAlarmIndication_Data interface {
+ isAlarmIndication_Data()
+}
+
+type AlarmIndication_LosInd struct {
+ LosInd *LosIndication `protobuf:"bytes,1,opt,name=los_ind,json=losInd,proto3,oneof"`
+}
+
+type AlarmIndication_DyingGaspInd struct {
+ DyingGaspInd *DyingGaspIndication `protobuf:"bytes,2,opt,name=dying_gasp_ind,json=dyingGaspInd,proto3,oneof"`
+}
+
+type AlarmIndication_OnuAlarmInd struct {
+ OnuAlarmInd *OnuAlarmIndication `protobuf:"bytes,3,opt,name=onu_alarm_ind,json=onuAlarmInd,proto3,oneof"`
+}
+
+type AlarmIndication_OnuStartupFailInd struct {
+ OnuStartupFailInd *OnuStartupFailureIndication `protobuf:"bytes,4,opt,name=onu_startup_fail_ind,json=onuStartupFailInd,proto3,oneof"`
+}
+
+type AlarmIndication_OnuSignalDegradeInd struct {
+ OnuSignalDegradeInd *OnuSignalDegradeIndication `protobuf:"bytes,5,opt,name=onu_signal_degrade_ind,json=onuSignalDegradeInd,proto3,oneof"`
+}
+
+type AlarmIndication_OnuDriftOfWindowInd struct {
+ OnuDriftOfWindowInd *OnuDriftOfWindowIndication `protobuf:"bytes,6,opt,name=onu_drift_of_window_ind,json=onuDriftOfWindowInd,proto3,oneof"`
+}
+
+type AlarmIndication_OnuLossOmciInd struct {
+ OnuLossOmciInd *OnuLossOfOmciChannelIndication `protobuf:"bytes,7,opt,name=onu_loss_omci_ind,json=onuLossOmciInd,proto3,oneof"`
+}
+
+type AlarmIndication_OnuSignalsFailInd struct {
+ OnuSignalsFailInd *OnuSignalsFailureIndication `protobuf:"bytes,8,opt,name=onu_signals_fail_ind,json=onuSignalsFailInd,proto3,oneof"`
+}
+
+type AlarmIndication_OnuTiwiInd struct {
+ OnuTiwiInd *OnuTransmissionInterferenceWarning `protobuf:"bytes,9,opt,name=onu_tiwi_ind,json=onuTiwiInd,proto3,oneof"`
+}
+
+type AlarmIndication_OnuActivationFailInd struct {
+ OnuActivationFailInd *OnuActivationFailureIndication `protobuf:"bytes,10,opt,name=onu_activation_fail_ind,json=onuActivationFailInd,proto3,oneof"`
+}
+
+type AlarmIndication_OnuProcessingErrorInd struct {
+ OnuProcessingErrorInd *OnuProcessingErrorIndication `protobuf:"bytes,11,opt,name=onu_processing_error_ind,json=onuProcessingErrorInd,proto3,oneof"`
+}
+
+type AlarmIndication_OnuLossOfSyncFailInd struct {
+ OnuLossOfSyncFailInd *OnuLossOfKeySyncFailureIndication `protobuf:"bytes,12,opt,name=onu_loss_of_sync_fail_ind,json=onuLossOfSyncFailInd,proto3,oneof"`
+}
+
+type AlarmIndication_OnuItuPonStatsInd struct {
+ OnuItuPonStatsInd *OnuItuPonStatsIndication `protobuf:"bytes,13,opt,name=onu_itu_pon_stats_ind,json=onuItuPonStatsInd,proto3,oneof"`
+}
+
+func (*AlarmIndication_LosInd) isAlarmIndication_Data() {}
+
+func (*AlarmIndication_DyingGaspInd) isAlarmIndication_Data() {}
+
+func (*AlarmIndication_OnuAlarmInd) isAlarmIndication_Data() {}
+
+func (*AlarmIndication_OnuStartupFailInd) isAlarmIndication_Data() {}
+
+func (*AlarmIndication_OnuSignalDegradeInd) isAlarmIndication_Data() {}
+
+func (*AlarmIndication_OnuDriftOfWindowInd) isAlarmIndication_Data() {}
+
+func (*AlarmIndication_OnuLossOmciInd) isAlarmIndication_Data() {}
+
+func (*AlarmIndication_OnuSignalsFailInd) isAlarmIndication_Data() {}
+
+func (*AlarmIndication_OnuTiwiInd) isAlarmIndication_Data() {}
+
+func (*AlarmIndication_OnuActivationFailInd) isAlarmIndication_Data() {}
+
+func (*AlarmIndication_OnuProcessingErrorInd) isAlarmIndication_Data() {}
+
+func (*AlarmIndication_OnuLossOfSyncFailInd) isAlarmIndication_Data() {}
+
+func (*AlarmIndication_OnuItuPonStatsInd) isAlarmIndication_Data() {}
+
+func (m *AlarmIndication) GetData() isAlarmIndication_Data {
+ if m != nil {
+ return m.Data
+ }
+ return nil
+}
+
+func (m *AlarmIndication) GetLosInd() *LosIndication {
+ if x, ok := m.GetData().(*AlarmIndication_LosInd); ok {
+ return x.LosInd
+ }
+ return nil
+}
+
+func (m *AlarmIndication) GetDyingGaspInd() *DyingGaspIndication {
+ if x, ok := m.GetData().(*AlarmIndication_DyingGaspInd); ok {
+ return x.DyingGaspInd
+ }
+ return nil
+}
+
+func (m *AlarmIndication) GetOnuAlarmInd() *OnuAlarmIndication {
+ if x, ok := m.GetData().(*AlarmIndication_OnuAlarmInd); ok {
+ return x.OnuAlarmInd
+ }
+ return nil
+}
+
+func (m *AlarmIndication) GetOnuStartupFailInd() *OnuStartupFailureIndication {
+ if x, ok := m.GetData().(*AlarmIndication_OnuStartupFailInd); ok {
+ return x.OnuStartupFailInd
+ }
+ return nil
+}
+
+func (m *AlarmIndication) GetOnuSignalDegradeInd() *OnuSignalDegradeIndication {
+ if x, ok := m.GetData().(*AlarmIndication_OnuSignalDegradeInd); ok {
+ return x.OnuSignalDegradeInd
+ }
+ return nil
+}
+
+func (m *AlarmIndication) GetOnuDriftOfWindowInd() *OnuDriftOfWindowIndication {
+ if x, ok := m.GetData().(*AlarmIndication_OnuDriftOfWindowInd); ok {
+ return x.OnuDriftOfWindowInd
+ }
+ return nil
+}
+
+func (m *AlarmIndication) GetOnuLossOmciInd() *OnuLossOfOmciChannelIndication {
+ if x, ok := m.GetData().(*AlarmIndication_OnuLossOmciInd); ok {
+ return x.OnuLossOmciInd
+ }
+ return nil
+}
+
+func (m *AlarmIndication) GetOnuSignalsFailInd() *OnuSignalsFailureIndication {
+ if x, ok := m.GetData().(*AlarmIndication_OnuSignalsFailInd); ok {
+ return x.OnuSignalsFailInd
+ }
+ return nil
+}
+
+func (m *AlarmIndication) GetOnuTiwiInd() *OnuTransmissionInterferenceWarning {
+ if x, ok := m.GetData().(*AlarmIndication_OnuTiwiInd); ok {
+ return x.OnuTiwiInd
+ }
+ return nil
+}
+
+func (m *AlarmIndication) GetOnuActivationFailInd() *OnuActivationFailureIndication {
+ if x, ok := m.GetData().(*AlarmIndication_OnuActivationFailInd); ok {
+ return x.OnuActivationFailInd
+ }
+ return nil
+}
+
+func (m *AlarmIndication) GetOnuProcessingErrorInd() *OnuProcessingErrorIndication {
+ if x, ok := m.GetData().(*AlarmIndication_OnuProcessingErrorInd); ok {
+ return x.OnuProcessingErrorInd
+ }
+ return nil
+}
+
+func (m *AlarmIndication) GetOnuLossOfSyncFailInd() *OnuLossOfKeySyncFailureIndication {
+ if x, ok := m.GetData().(*AlarmIndication_OnuLossOfSyncFailInd); ok {
+ return x.OnuLossOfSyncFailInd
+ }
+ return nil
+}
+
+func (m *AlarmIndication) GetOnuItuPonStatsInd() *OnuItuPonStatsIndication {
+ if x, ok := m.GetData().(*AlarmIndication_OnuItuPonStatsInd); ok {
+ return x.OnuItuPonStatsInd
+ }
+ return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*AlarmIndication) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*AlarmIndication_LosInd)(nil),
+ (*AlarmIndication_DyingGaspInd)(nil),
+ (*AlarmIndication_OnuAlarmInd)(nil),
+ (*AlarmIndication_OnuStartupFailInd)(nil),
+ (*AlarmIndication_OnuSignalDegradeInd)(nil),
+ (*AlarmIndication_OnuDriftOfWindowInd)(nil),
+ (*AlarmIndication_OnuLossOmciInd)(nil),
+ (*AlarmIndication_OnuSignalsFailInd)(nil),
+ (*AlarmIndication_OnuTiwiInd)(nil),
+ (*AlarmIndication_OnuActivationFailInd)(nil),
+ (*AlarmIndication_OnuProcessingErrorInd)(nil),
+ (*AlarmIndication_OnuLossOfSyncFailInd)(nil),
+ (*AlarmIndication_OnuItuPonStatsInd)(nil),
+ }
+}
+
+type OltIndication struct {
+ OperState string `protobuf:"bytes,1,opt,name=oper_state,json=operState,proto3" json:"oper_state,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OltIndication) Reset() { *m = OltIndication{} }
+func (m *OltIndication) String() string { return proto.CompactTextString(m) }
+func (*OltIndication) ProtoMessage() {}
+func (*OltIndication) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{2}
+}
+
+func (m *OltIndication) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OltIndication.Unmarshal(m, b)
+}
+func (m *OltIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OltIndication.Marshal(b, m, deterministic)
+}
+func (m *OltIndication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OltIndication.Merge(m, src)
+}
+func (m *OltIndication) XXX_Size() int {
+ return xxx_messageInfo_OltIndication.Size(m)
+}
+func (m *OltIndication) XXX_DiscardUnknown() {
+ xxx_messageInfo_OltIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OltIndication proto.InternalMessageInfo
+
+func (m *OltIndication) GetOperState() string {
+ if m != nil {
+ return m.OperState
+ }
+ return ""
+}
+
+type IntfIndication struct {
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ OperState string `protobuf:"bytes,2,opt,name=oper_state,json=operState,proto3" json:"oper_state,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *IntfIndication) Reset() { *m = IntfIndication{} }
+func (m *IntfIndication) String() string { return proto.CompactTextString(m) }
+func (*IntfIndication) ProtoMessage() {}
+func (*IntfIndication) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{3}
+}
+
+func (m *IntfIndication) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_IntfIndication.Unmarshal(m, b)
+}
+func (m *IntfIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_IntfIndication.Marshal(b, m, deterministic)
+}
+func (m *IntfIndication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_IntfIndication.Merge(m, src)
+}
+func (m *IntfIndication) XXX_Size() int {
+ return xxx_messageInfo_IntfIndication.Size(m)
+}
+func (m *IntfIndication) XXX_DiscardUnknown() {
+ xxx_messageInfo_IntfIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_IntfIndication proto.InternalMessageInfo
+
+func (m *IntfIndication) GetIntfId() uint32 {
+ if m != nil {
+ return m.IntfId
+ }
+ return 0
+}
+
+func (m *IntfIndication) GetOperState() string {
+ if m != nil {
+ return m.OperState
+ }
+ return ""
+}
+
+type OnuDiscIndication struct {
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ SerialNumber *SerialNumber `protobuf:"bytes,2,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OnuDiscIndication) Reset() { *m = OnuDiscIndication{} }
+func (m *OnuDiscIndication) String() string { return proto.CompactTextString(m) }
+func (*OnuDiscIndication) ProtoMessage() {}
+func (*OnuDiscIndication) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{4}
+}
+
+func (m *OnuDiscIndication) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OnuDiscIndication.Unmarshal(m, b)
+}
+func (m *OnuDiscIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OnuDiscIndication.Marshal(b, m, deterministic)
+}
+func (m *OnuDiscIndication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OnuDiscIndication.Merge(m, src)
+}
+func (m *OnuDiscIndication) XXX_Size() int {
+ return xxx_messageInfo_OnuDiscIndication.Size(m)
+}
+func (m *OnuDiscIndication) XXX_DiscardUnknown() {
+ xxx_messageInfo_OnuDiscIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuDiscIndication proto.InternalMessageInfo
+
+func (m *OnuDiscIndication) GetIntfId() uint32 {
+ if m != nil {
+ return m.IntfId
+ }
+ return 0
+}
+
+func (m *OnuDiscIndication) GetSerialNumber() *SerialNumber {
+ if m != nil {
+ return m.SerialNumber
+ }
+ return nil
+}
+
+type OnuIndication struct {
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ OnuId uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+ OperState string `protobuf:"bytes,3,opt,name=oper_state,json=operState,proto3" json:"oper_state,omitempty"`
+ AdminState string `protobuf:"bytes,5,opt,name=admin_state,json=adminState,proto3" json:"admin_state,omitempty"`
+ SerialNumber *SerialNumber `protobuf:"bytes,4,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OnuIndication) Reset() { *m = OnuIndication{} }
+func (m *OnuIndication) String() string { return proto.CompactTextString(m) }
+func (*OnuIndication) ProtoMessage() {}
+func (*OnuIndication) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{5}
+}
+
+func (m *OnuIndication) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OnuIndication.Unmarshal(m, b)
+}
+func (m *OnuIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OnuIndication.Marshal(b, m, deterministic)
+}
+func (m *OnuIndication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OnuIndication.Merge(m, src)
+}
+func (m *OnuIndication) XXX_Size() int {
+ return xxx_messageInfo_OnuIndication.Size(m)
+}
+func (m *OnuIndication) XXX_DiscardUnknown() {
+ xxx_messageInfo_OnuIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuIndication proto.InternalMessageInfo
+
+func (m *OnuIndication) GetIntfId() uint32 {
+ if m != nil {
+ return m.IntfId
+ }
+ return 0
+}
+
+func (m *OnuIndication) GetOnuId() uint32 {
+ if m != nil {
+ return m.OnuId
+ }
+ return 0
+}
+
+func (m *OnuIndication) GetOperState() string {
+ if m != nil {
+ return m.OperState
+ }
+ return ""
+}
+
+func (m *OnuIndication) GetAdminState() string {
+ if m != nil {
+ return m.AdminState
+ }
+ return ""
+}
+
+func (m *OnuIndication) GetSerialNumber() *SerialNumber {
+ if m != nil {
+ return m.SerialNumber
+ }
+ return nil
+}
+
+type IntfOperIndication struct {
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
+ IntfId uint32 `protobuf:"fixed32,2,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ OperState string `protobuf:"bytes,3,opt,name=oper_state,json=operState,proto3" json:"oper_state,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *IntfOperIndication) Reset() { *m = IntfOperIndication{} }
+func (m *IntfOperIndication) String() string { return proto.CompactTextString(m) }
+func (*IntfOperIndication) ProtoMessage() {}
+func (*IntfOperIndication) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{6}
+}
+
+func (m *IntfOperIndication) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_IntfOperIndication.Unmarshal(m, b)
+}
+func (m *IntfOperIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_IntfOperIndication.Marshal(b, m, deterministic)
+}
+func (m *IntfOperIndication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_IntfOperIndication.Merge(m, src)
+}
+func (m *IntfOperIndication) XXX_Size() int {
+ return xxx_messageInfo_IntfOperIndication.Size(m)
+}
+func (m *IntfOperIndication) XXX_DiscardUnknown() {
+ xxx_messageInfo_IntfOperIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_IntfOperIndication proto.InternalMessageInfo
+
+func (m *IntfOperIndication) GetType() string {
+ if m != nil {
+ return m.Type
+ }
+ return ""
+}
+
+func (m *IntfOperIndication) GetIntfId() uint32 {
+ if m != nil {
+ return m.IntfId
+ }
+ return 0
+}
+
+func (m *IntfOperIndication) GetOperState() string {
+ if m != nil {
+ return m.OperState
+ }
+ return ""
+}
+
+type OmciIndication struct {
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ OnuId uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+ Pkt []byte `protobuf:"bytes,3,opt,name=pkt,proto3" json:"pkt,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OmciIndication) Reset() { *m = OmciIndication{} }
+func (m *OmciIndication) String() string { return proto.CompactTextString(m) }
+func (*OmciIndication) ProtoMessage() {}
+func (*OmciIndication) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{7}
+}
+
+func (m *OmciIndication) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OmciIndication.Unmarshal(m, b)
+}
+func (m *OmciIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OmciIndication.Marshal(b, m, deterministic)
+}
+func (m *OmciIndication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OmciIndication.Merge(m, src)
+}
+func (m *OmciIndication) XXX_Size() int {
+ return xxx_messageInfo_OmciIndication.Size(m)
+}
+func (m *OmciIndication) XXX_DiscardUnknown() {
+ xxx_messageInfo_OmciIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OmciIndication proto.InternalMessageInfo
+
+func (m *OmciIndication) GetIntfId() uint32 {
+ if m != nil {
+ return m.IntfId
+ }
+ return 0
+}
+
+func (m *OmciIndication) GetOnuId() uint32 {
+ if m != nil {
+ return m.OnuId
+ }
+ return 0
+}
+
+func (m *OmciIndication) GetPkt() []byte {
+ if m != nil {
+ return m.Pkt
+ }
+ return nil
+}
+
+type PacketIndication struct {
+ IntfType string `protobuf:"bytes,5,opt,name=intf_type,json=intfType,proto3" json:"intf_type,omitempty"`
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ GemportId uint32 `protobuf:"fixed32,2,opt,name=gemport_id,json=gemportId,proto3" json:"gemport_id,omitempty"`
+ FlowId uint32 `protobuf:"fixed32,3,opt,name=flow_id,json=flowId,proto3" json:"flow_id,omitempty"`
+ PortNo uint32 `protobuf:"fixed32,6,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+ Cookie uint64 `protobuf:"fixed64,7,opt,name=cookie,proto3" json:"cookie,omitempty"`
+ Pkt []byte `protobuf:"bytes,4,opt,name=pkt,proto3" json:"pkt,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *PacketIndication) Reset() { *m = PacketIndication{} }
+func (m *PacketIndication) String() string { return proto.CompactTextString(m) }
+func (*PacketIndication) ProtoMessage() {}
+func (*PacketIndication) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{8}
+}
+
+func (m *PacketIndication) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_PacketIndication.Unmarshal(m, b)
+}
+func (m *PacketIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_PacketIndication.Marshal(b, m, deterministic)
+}
+func (m *PacketIndication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_PacketIndication.Merge(m, src)
+}
+func (m *PacketIndication) XXX_Size() int {
+ return xxx_messageInfo_PacketIndication.Size(m)
+}
+func (m *PacketIndication) XXX_DiscardUnknown() {
+ xxx_messageInfo_PacketIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PacketIndication proto.InternalMessageInfo
+
+func (m *PacketIndication) GetIntfType() string {
+ if m != nil {
+ return m.IntfType
+ }
+ return ""
+}
+
+func (m *PacketIndication) GetIntfId() uint32 {
+ if m != nil {
+ return m.IntfId
+ }
+ return 0
+}
+
+func (m *PacketIndication) GetGemportId() uint32 {
+ if m != nil {
+ return m.GemportId
+ }
+ return 0
+}
+
+func (m *PacketIndication) GetFlowId() uint32 {
+ if m != nil {
+ return m.FlowId
+ }
+ return 0
+}
+
+func (m *PacketIndication) GetPortNo() uint32 {
+ if m != nil {
+ return m.PortNo
+ }
+ return 0
+}
+
+func (m *PacketIndication) GetCookie() uint64 {
+ if m != nil {
+ return m.Cookie
+ }
+ return 0
+}
+
+func (m *PacketIndication) GetPkt() []byte {
+ if m != nil {
+ return m.Pkt
+ }
+ return nil
+}
+
+type Interface struct {
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Interface) Reset() { *m = Interface{} }
+func (m *Interface) String() string { return proto.CompactTextString(m) }
+func (*Interface) ProtoMessage() {}
+func (*Interface) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{9}
+}
+
+func (m *Interface) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Interface.Unmarshal(m, b)
+}
+func (m *Interface) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Interface.Marshal(b, m, deterministic)
+}
+func (m *Interface) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Interface.Merge(m, src)
+}
+func (m *Interface) XXX_Size() int {
+ return xxx_messageInfo_Interface.Size(m)
+}
+func (m *Interface) XXX_DiscardUnknown() {
+ xxx_messageInfo_Interface.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Interface proto.InternalMessageInfo
+
+func (m *Interface) GetIntfId() uint32 {
+ if m != nil {
+ return m.IntfId
+ }
+ return 0
+}
+
+type Heartbeat struct {
+ HeartbeatSignature uint32 `protobuf:"fixed32,1,opt,name=heartbeat_signature,json=heartbeatSignature,proto3" json:"heartbeat_signature,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Heartbeat) Reset() { *m = Heartbeat{} }
+func (m *Heartbeat) String() string { return proto.CompactTextString(m) }
+func (*Heartbeat) ProtoMessage() {}
+func (*Heartbeat) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{10}
+}
+
+func (m *Heartbeat) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Heartbeat.Unmarshal(m, b)
+}
+func (m *Heartbeat) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Heartbeat.Marshal(b, m, deterministic)
+}
+func (m *Heartbeat) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Heartbeat.Merge(m, src)
+}
+func (m *Heartbeat) XXX_Size() int {
+ return xxx_messageInfo_Heartbeat.Size(m)
+}
+func (m *Heartbeat) XXX_DiscardUnknown() {
+ xxx_messageInfo_Heartbeat.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Heartbeat proto.InternalMessageInfo
+
+func (m *Heartbeat) GetHeartbeatSignature() uint32 {
+ if m != nil {
+ return m.HeartbeatSignature
+ }
+ return 0
+}
+
+type Onu struct {
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ OnuId uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+ SerialNumber *SerialNumber `protobuf:"bytes,3,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"`
+ Pir uint32 `protobuf:"fixed32,4,opt,name=pir,proto3" json:"pir,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Onu) Reset() { *m = Onu{} }
+func (m *Onu) String() string { return proto.CompactTextString(m) }
+func (*Onu) ProtoMessage() {}
+func (*Onu) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{11}
+}
+
+func (m *Onu) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Onu.Unmarshal(m, b)
+}
+func (m *Onu) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Onu.Marshal(b, m, deterministic)
+}
+func (m *Onu) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Onu.Merge(m, src)
+}
+func (m *Onu) XXX_Size() int {
+ return xxx_messageInfo_Onu.Size(m)
+}
+func (m *Onu) XXX_DiscardUnknown() {
+ xxx_messageInfo_Onu.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Onu proto.InternalMessageInfo
+
+func (m *Onu) GetIntfId() uint32 {
+ if m != nil {
+ return m.IntfId
+ }
+ return 0
+}
+
+func (m *Onu) GetOnuId() uint32 {
+ if m != nil {
+ return m.OnuId
+ }
+ return 0
+}
+
+func (m *Onu) GetSerialNumber() *SerialNumber {
+ if m != nil {
+ return m.SerialNumber
+ }
+ return nil
+}
+
+func (m *Onu) GetPir() uint32 {
+ if m != nil {
+ return m.Pir
+ }
+ return 0
+}
+
+type OmciMsg struct {
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ OnuId uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+ Pkt []byte `protobuf:"bytes,3,opt,name=pkt,proto3" json:"pkt,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OmciMsg) Reset() { *m = OmciMsg{} }
+func (m *OmciMsg) String() string { return proto.CompactTextString(m) }
+func (*OmciMsg) ProtoMessage() {}
+func (*OmciMsg) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{12}
+}
+
+func (m *OmciMsg) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OmciMsg.Unmarshal(m, b)
+}
+func (m *OmciMsg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OmciMsg.Marshal(b, m, deterministic)
+}
+func (m *OmciMsg) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OmciMsg.Merge(m, src)
+}
+func (m *OmciMsg) XXX_Size() int {
+ return xxx_messageInfo_OmciMsg.Size(m)
+}
+func (m *OmciMsg) XXX_DiscardUnknown() {
+ xxx_messageInfo_OmciMsg.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OmciMsg proto.InternalMessageInfo
+
+func (m *OmciMsg) GetIntfId() uint32 {
+ if m != nil {
+ return m.IntfId
+ }
+ return 0
+}
+
+func (m *OmciMsg) GetOnuId() uint32 {
+ if m != nil {
+ return m.OnuId
+ }
+ return 0
+}
+
+func (m *OmciMsg) GetPkt() []byte {
+ if m != nil {
+ return m.Pkt
+ }
+ return nil
+}
+
+type OnuPacket struct {
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ OnuId uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+ PortNo uint32 `protobuf:"fixed32,4,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+ GemportId uint32 `protobuf:"fixed32,5,opt,name=gemport_id,json=gemportId,proto3" json:"gemport_id,omitempty"`
+ Pkt []byte `protobuf:"bytes,3,opt,name=pkt,proto3" json:"pkt,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OnuPacket) Reset() { *m = OnuPacket{} }
+func (m *OnuPacket) String() string { return proto.CompactTextString(m) }
+func (*OnuPacket) ProtoMessage() {}
+func (*OnuPacket) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{13}
+}
+
+func (m *OnuPacket) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OnuPacket.Unmarshal(m, b)
+}
+func (m *OnuPacket) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OnuPacket.Marshal(b, m, deterministic)
+}
+func (m *OnuPacket) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OnuPacket.Merge(m, src)
+}
+func (m *OnuPacket) XXX_Size() int {
+ return xxx_messageInfo_OnuPacket.Size(m)
+}
+func (m *OnuPacket) XXX_DiscardUnknown() {
+ xxx_messageInfo_OnuPacket.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuPacket proto.InternalMessageInfo
+
+func (m *OnuPacket) GetIntfId() uint32 {
+ if m != nil {
+ return m.IntfId
+ }
+ return 0
+}
+
+func (m *OnuPacket) GetOnuId() uint32 {
+ if m != nil {
+ return m.OnuId
+ }
+ return 0
+}
+
+func (m *OnuPacket) GetPortNo() uint32 {
+ if m != nil {
+ return m.PortNo
+ }
+ return 0
+}
+
+func (m *OnuPacket) GetGemportId() uint32 {
+ if m != nil {
+ return m.GemportId
+ }
+ return 0
+}
+
+func (m *OnuPacket) GetPkt() []byte {
+ if m != nil {
+ return m.Pkt
+ }
+ return nil
+}
+
+type UplinkPacket struct {
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ Pkt []byte `protobuf:"bytes,2,opt,name=pkt,proto3" json:"pkt,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *UplinkPacket) Reset() { *m = UplinkPacket{} }
+func (m *UplinkPacket) String() string { return proto.CompactTextString(m) }
+func (*UplinkPacket) ProtoMessage() {}
+func (*UplinkPacket) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{14}
+}
+
+func (m *UplinkPacket) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_UplinkPacket.Unmarshal(m, b)
+}
+func (m *UplinkPacket) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_UplinkPacket.Marshal(b, m, deterministic)
+}
+func (m *UplinkPacket) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_UplinkPacket.Merge(m, src)
+}
+func (m *UplinkPacket) XXX_Size() int {
+ return xxx_messageInfo_UplinkPacket.Size(m)
+}
+func (m *UplinkPacket) XXX_DiscardUnknown() {
+ xxx_messageInfo_UplinkPacket.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UplinkPacket proto.InternalMessageInfo
+
+func (m *UplinkPacket) GetIntfId() uint32 {
+ if m != nil {
+ return m.IntfId
+ }
+ return 0
+}
+
+func (m *UplinkPacket) GetPkt() []byte {
+ if m != nil {
+ return m.Pkt
+ }
+ return nil
+}
+
+type DeviceInfo struct {
+ Vendor string `protobuf:"bytes,1,opt,name=vendor,proto3" json:"vendor,omitempty"`
+ Model string `protobuf:"bytes,2,opt,name=model,proto3" json:"model,omitempty"`
+ HardwareVersion string `protobuf:"bytes,3,opt,name=hardware_version,json=hardwareVersion,proto3" json:"hardware_version,omitempty"`
+ FirmwareVersion string `protobuf:"bytes,4,opt,name=firmware_version,json=firmwareVersion,proto3" json:"firmware_version,omitempty"`
+ DeviceId string `protobuf:"bytes,16,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+ DeviceSerialNumber string `protobuf:"bytes,17,opt,name=device_serial_number,json=deviceSerialNumber,proto3" json:"device_serial_number,omitempty"`
+ // Total number of pon intf ports on the device
+ PonPorts uint32 `protobuf:"fixed32,12,opt,name=pon_ports,json=ponPorts,proto3" json:"pon_ports,omitempty"`
+ // If using global per-device technology profile. To be deprecated
+ Technology string `protobuf:"bytes,5,opt,name=technology,proto3" json:"technology,omitempty"`
+ OnuIdStart uint32 `protobuf:"fixed32,6,opt,name=onu_id_start,json=onuIdStart,proto3" json:"onu_id_start,omitempty"`
+ OnuIdEnd uint32 `protobuf:"fixed32,7,opt,name=onu_id_end,json=onuIdEnd,proto3" json:"onu_id_end,omitempty"`
+ AllocIdStart uint32 `protobuf:"fixed32,8,opt,name=alloc_id_start,json=allocIdStart,proto3" json:"alloc_id_start,omitempty"`
+ AllocIdEnd uint32 `protobuf:"fixed32,9,opt,name=alloc_id_end,json=allocIdEnd,proto3" json:"alloc_id_end,omitempty"`
+ GemportIdStart uint32 `protobuf:"fixed32,10,opt,name=gemport_id_start,json=gemportIdStart,proto3" json:"gemport_id_start,omitempty"`
+ GemportIdEnd uint32 `protobuf:"fixed32,11,opt,name=gemport_id_end,json=gemportIdEnd,proto3" json:"gemport_id_end,omitempty"`
+ FlowIdStart uint32 `protobuf:"fixed32,13,opt,name=flow_id_start,json=flowIdStart,proto3" json:"flow_id_start,omitempty"`
+ FlowIdEnd uint32 `protobuf:"fixed32,14,opt,name=flow_id_end,json=flowIdEnd,proto3" json:"flow_id_end,omitempty"`
+ Ranges []*DeviceInfo_DeviceResourceRanges `protobuf:"bytes,15,rep,name=ranges,proto3" json:"ranges,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *DeviceInfo) Reset() { *m = DeviceInfo{} }
+func (m *DeviceInfo) String() string { return proto.CompactTextString(m) }
+func (*DeviceInfo) ProtoMessage() {}
+func (*DeviceInfo) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{15}
+}
+
+func (m *DeviceInfo) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_DeviceInfo.Unmarshal(m, b)
+}
+func (m *DeviceInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_DeviceInfo.Marshal(b, m, deterministic)
+}
+func (m *DeviceInfo) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_DeviceInfo.Merge(m, src)
+}
+func (m *DeviceInfo) XXX_Size() int {
+ return xxx_messageInfo_DeviceInfo.Size(m)
+}
+func (m *DeviceInfo) XXX_DiscardUnknown() {
+ xxx_messageInfo_DeviceInfo.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeviceInfo proto.InternalMessageInfo
+
+func (m *DeviceInfo) GetVendor() string {
+ if m != nil {
+ return m.Vendor
+ }
+ return ""
+}
+
+func (m *DeviceInfo) GetModel() string {
+ if m != nil {
+ return m.Model
+ }
+ return ""
+}
+
+func (m *DeviceInfo) GetHardwareVersion() string {
+ if m != nil {
+ return m.HardwareVersion
+ }
+ return ""
+}
+
+func (m *DeviceInfo) GetFirmwareVersion() string {
+ if m != nil {
+ return m.FirmwareVersion
+ }
+ return ""
+}
+
+func (m *DeviceInfo) GetDeviceId() string {
+ if m != nil {
+ return m.DeviceId
+ }
+ return ""
+}
+
+func (m *DeviceInfo) GetDeviceSerialNumber() string {
+ if m != nil {
+ return m.DeviceSerialNumber
+ }
+ return ""
+}
+
+func (m *DeviceInfo) GetPonPorts() uint32 {
+ if m != nil {
+ return m.PonPorts
+ }
+ return 0
+}
+
+func (m *DeviceInfo) GetTechnology() string {
+ if m != nil {
+ return m.Technology
+ }
+ return ""
+}
+
+func (m *DeviceInfo) GetOnuIdStart() uint32 {
+ if m != nil {
+ return m.OnuIdStart
+ }
+ return 0
+}
+
+func (m *DeviceInfo) GetOnuIdEnd() uint32 {
+ if m != nil {
+ return m.OnuIdEnd
+ }
+ return 0
+}
+
+func (m *DeviceInfo) GetAllocIdStart() uint32 {
+ if m != nil {
+ return m.AllocIdStart
+ }
+ return 0
+}
+
+func (m *DeviceInfo) GetAllocIdEnd() uint32 {
+ if m != nil {
+ return m.AllocIdEnd
+ }
+ return 0
+}
+
+func (m *DeviceInfo) GetGemportIdStart() uint32 {
+ if m != nil {
+ return m.GemportIdStart
+ }
+ return 0
+}
+
+func (m *DeviceInfo) GetGemportIdEnd() uint32 {
+ if m != nil {
+ return m.GemportIdEnd
+ }
+ return 0
+}
+
+func (m *DeviceInfo) GetFlowIdStart() uint32 {
+ if m != nil {
+ return m.FlowIdStart
+ }
+ return 0
+}
+
+func (m *DeviceInfo) GetFlowIdEnd() uint32 {
+ if m != nil {
+ return m.FlowIdEnd
+ }
+ return 0
+}
+
+func (m *DeviceInfo) GetRanges() []*DeviceInfo_DeviceResourceRanges {
+ if m != nil {
+ return m.Ranges
+ }
+ return nil
+}
+
+type DeviceInfo_DeviceResourceRanges struct {
+ // List of 0 or more intf_ids that use the same technology and pools.
+ // If 0 intf_ids supplied, it implies ALL interfaces
+ IntfIds []uint32 `protobuf:"fixed32,1,rep,packed,name=intf_ids,json=intfIds,proto3" json:"intf_ids,omitempty"`
+ // Technology profile for this pool
+ Technology string `protobuf:"bytes,2,opt,name=technology,proto3" json:"technology,omitempty"`
+ Pools []*DeviceInfo_DeviceResourceRanges_Pool `protobuf:"bytes,3,rep,name=pools,proto3" json:"pools,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *DeviceInfo_DeviceResourceRanges) Reset() { *m = DeviceInfo_DeviceResourceRanges{} }
+func (m *DeviceInfo_DeviceResourceRanges) String() string { return proto.CompactTextString(m) }
+func (*DeviceInfo_DeviceResourceRanges) ProtoMessage() {}
+func (*DeviceInfo_DeviceResourceRanges) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{15, 0}
+}
+
+func (m *DeviceInfo_DeviceResourceRanges) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_DeviceInfo_DeviceResourceRanges.Unmarshal(m, b)
+}
+func (m *DeviceInfo_DeviceResourceRanges) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_DeviceInfo_DeviceResourceRanges.Marshal(b, m, deterministic)
+}
+func (m *DeviceInfo_DeviceResourceRanges) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_DeviceInfo_DeviceResourceRanges.Merge(m, src)
+}
+func (m *DeviceInfo_DeviceResourceRanges) XXX_Size() int {
+ return xxx_messageInfo_DeviceInfo_DeviceResourceRanges.Size(m)
+}
+func (m *DeviceInfo_DeviceResourceRanges) XXX_DiscardUnknown() {
+ xxx_messageInfo_DeviceInfo_DeviceResourceRanges.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeviceInfo_DeviceResourceRanges proto.InternalMessageInfo
+
+func (m *DeviceInfo_DeviceResourceRanges) GetIntfIds() []uint32 {
+ if m != nil {
+ return m.IntfIds
+ }
+ return nil
+}
+
+func (m *DeviceInfo_DeviceResourceRanges) GetTechnology() string {
+ if m != nil {
+ return m.Technology
+ }
+ return ""
+}
+
+func (m *DeviceInfo_DeviceResourceRanges) GetPools() []*DeviceInfo_DeviceResourceRanges_Pool {
+ if m != nil {
+ return m.Pools
+ }
+ return nil
+}
+
+type DeviceInfo_DeviceResourceRanges_Pool struct {
+ Type DeviceInfo_DeviceResourceRanges_Pool_PoolType `protobuf:"varint,1,opt,name=type,proto3,enum=openolt.DeviceInfo_DeviceResourceRanges_Pool_PoolType" json:"type,omitempty"`
+ Sharing DeviceInfo_DeviceResourceRanges_Pool_SharingType `protobuf:"varint,2,opt,name=sharing,proto3,enum=openolt.DeviceInfo_DeviceResourceRanges_Pool_SharingType" json:"sharing,omitempty"`
+ Start uint32 `protobuf:"fixed32,3,opt,name=start,proto3" json:"start,omitempty"`
+ End uint32 `protobuf:"fixed32,4,opt,name=end,proto3" json:"end,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *DeviceInfo_DeviceResourceRanges_Pool) Reset() { *m = DeviceInfo_DeviceResourceRanges_Pool{} }
+func (m *DeviceInfo_DeviceResourceRanges_Pool) String() string { return proto.CompactTextString(m) }
+func (*DeviceInfo_DeviceResourceRanges_Pool) ProtoMessage() {}
+func (*DeviceInfo_DeviceResourceRanges_Pool) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{15, 0, 0}
+}
+
+func (m *DeviceInfo_DeviceResourceRanges_Pool) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_DeviceInfo_DeviceResourceRanges_Pool.Unmarshal(m, b)
+}
+func (m *DeviceInfo_DeviceResourceRanges_Pool) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_DeviceInfo_DeviceResourceRanges_Pool.Marshal(b, m, deterministic)
+}
+func (m *DeviceInfo_DeviceResourceRanges_Pool) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_DeviceInfo_DeviceResourceRanges_Pool.Merge(m, src)
+}
+func (m *DeviceInfo_DeviceResourceRanges_Pool) XXX_Size() int {
+ return xxx_messageInfo_DeviceInfo_DeviceResourceRanges_Pool.Size(m)
+}
+func (m *DeviceInfo_DeviceResourceRanges_Pool) XXX_DiscardUnknown() {
+ xxx_messageInfo_DeviceInfo_DeviceResourceRanges_Pool.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeviceInfo_DeviceResourceRanges_Pool proto.InternalMessageInfo
+
+func (m *DeviceInfo_DeviceResourceRanges_Pool) GetType() DeviceInfo_DeviceResourceRanges_Pool_PoolType {
+ if m != nil {
+ return m.Type
+ }
+ return DeviceInfo_DeviceResourceRanges_Pool_ONU_ID
+}
+
+func (m *DeviceInfo_DeviceResourceRanges_Pool) GetSharing() DeviceInfo_DeviceResourceRanges_Pool_SharingType {
+ if m != nil {
+ return m.Sharing
+ }
+ return DeviceInfo_DeviceResourceRanges_Pool_DEDICATED_PER_INTF
+}
+
+func (m *DeviceInfo_DeviceResourceRanges_Pool) GetStart() uint32 {
+ if m != nil {
+ return m.Start
+ }
+ return 0
+}
+
+func (m *DeviceInfo_DeviceResourceRanges_Pool) GetEnd() uint32 {
+ if m != nil {
+ return m.End
+ }
+ return 0
+}
+
+type Classifier struct {
+ OTpid uint32 `protobuf:"fixed32,1,opt,name=o_tpid,json=oTpid,proto3" json:"o_tpid,omitempty"`
+ OVid uint32 `protobuf:"fixed32,2,opt,name=o_vid,json=oVid,proto3" json:"o_vid,omitempty"`
+ ITpid uint32 `protobuf:"fixed32,3,opt,name=i_tpid,json=iTpid,proto3" json:"i_tpid,omitempty"`
+ IVid uint32 `protobuf:"fixed32,4,opt,name=i_vid,json=iVid,proto3" json:"i_vid,omitempty"`
+ OPbits uint32 `protobuf:"fixed32,5,opt,name=o_pbits,json=oPbits,proto3" json:"o_pbits,omitempty"`
+ IPbits uint32 `protobuf:"fixed32,6,opt,name=i_pbits,json=iPbits,proto3" json:"i_pbits,omitempty"`
+ EthType uint32 `protobuf:"fixed32,7,opt,name=eth_type,json=ethType,proto3" json:"eth_type,omitempty"`
+ DstMac []byte `protobuf:"bytes,8,opt,name=dst_mac,json=dstMac,proto3" json:"dst_mac,omitempty"`
+ SrcMac []byte `protobuf:"bytes,9,opt,name=src_mac,json=srcMac,proto3" json:"src_mac,omitempty"`
+ IpProto uint32 `protobuf:"fixed32,10,opt,name=ip_proto,json=ipProto,proto3" json:"ip_proto,omitempty"`
+ DstIp uint32 `protobuf:"fixed32,11,opt,name=dst_ip,json=dstIp,proto3" json:"dst_ip,omitempty"`
+ SrcIp uint32 `protobuf:"fixed32,12,opt,name=src_ip,json=srcIp,proto3" json:"src_ip,omitempty"`
+ SrcPort uint32 `protobuf:"fixed32,13,opt,name=src_port,json=srcPort,proto3" json:"src_port,omitempty"`
+ DstPort uint32 `protobuf:"fixed32,14,opt,name=dst_port,json=dstPort,proto3" json:"dst_port,omitempty"`
+ PktTagType string `protobuf:"bytes,15,opt,name=pkt_tag_type,json=pktTagType,proto3" json:"pkt_tag_type,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Classifier) Reset() { *m = Classifier{} }
+func (m *Classifier) String() string { return proto.CompactTextString(m) }
+func (*Classifier) ProtoMessage() {}
+func (*Classifier) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{16}
+}
+
+func (m *Classifier) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Classifier.Unmarshal(m, b)
+}
+func (m *Classifier) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Classifier.Marshal(b, m, deterministic)
+}
+func (m *Classifier) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Classifier.Merge(m, src)
+}
+func (m *Classifier) XXX_Size() int {
+ return xxx_messageInfo_Classifier.Size(m)
+}
+func (m *Classifier) XXX_DiscardUnknown() {
+ xxx_messageInfo_Classifier.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Classifier proto.InternalMessageInfo
+
+func (m *Classifier) GetOTpid() uint32 {
+ if m != nil {
+ return m.OTpid
+ }
+ return 0
+}
+
+func (m *Classifier) GetOVid() uint32 {
+ if m != nil {
+ return m.OVid
+ }
+ return 0
+}
+
+func (m *Classifier) GetITpid() uint32 {
+ if m != nil {
+ return m.ITpid
+ }
+ return 0
+}
+
+func (m *Classifier) GetIVid() uint32 {
+ if m != nil {
+ return m.IVid
+ }
+ return 0
+}
+
+func (m *Classifier) GetOPbits() uint32 {
+ if m != nil {
+ return m.OPbits
+ }
+ return 0
+}
+
+func (m *Classifier) GetIPbits() uint32 {
+ if m != nil {
+ return m.IPbits
+ }
+ return 0
+}
+
+func (m *Classifier) GetEthType() uint32 {
+ if m != nil {
+ return m.EthType
+ }
+ return 0
+}
+
+func (m *Classifier) GetDstMac() []byte {
+ if m != nil {
+ return m.DstMac
+ }
+ return nil
+}
+
+func (m *Classifier) GetSrcMac() []byte {
+ if m != nil {
+ return m.SrcMac
+ }
+ return nil
+}
+
+func (m *Classifier) GetIpProto() uint32 {
+ if m != nil {
+ return m.IpProto
+ }
+ return 0
+}
+
+func (m *Classifier) GetDstIp() uint32 {
+ if m != nil {
+ return m.DstIp
+ }
+ return 0
+}
+
+func (m *Classifier) GetSrcIp() uint32 {
+ if m != nil {
+ return m.SrcIp
+ }
+ return 0
+}
+
+func (m *Classifier) GetSrcPort() uint32 {
+ if m != nil {
+ return m.SrcPort
+ }
+ return 0
+}
+
+func (m *Classifier) GetDstPort() uint32 {
+ if m != nil {
+ return m.DstPort
+ }
+ return 0
+}
+
+func (m *Classifier) GetPktTagType() string {
+ if m != nil {
+ return m.PktTagType
+ }
+ return ""
+}
+
+type ActionCmd struct {
+ AddOuterTag bool `protobuf:"varint,1,opt,name=add_outer_tag,json=addOuterTag,proto3" json:"add_outer_tag,omitempty"`
+ RemoveOuterTag bool `protobuf:"varint,2,opt,name=remove_outer_tag,json=removeOuterTag,proto3" json:"remove_outer_tag,omitempty"`
+ TrapToHost bool `protobuf:"varint,3,opt,name=trap_to_host,json=trapToHost,proto3" json:"trap_to_host,omitempty"`
+ RemarkOuterPbits bool `protobuf:"varint,4,opt,name=remark_outer_pbits,json=remarkOuterPbits,proto3" json:"remark_outer_pbits,omitempty"`
+ RemarkInnerPbits bool `protobuf:"varint,5,opt,name=remark_inner_pbits,json=remarkInnerPbits,proto3" json:"remark_inner_pbits,omitempty"`
+ AddInnerTag bool `protobuf:"varint,6,opt,name=add_inner_tag,json=addInnerTag,proto3" json:"add_inner_tag,omitempty"`
+ RemoveInnerTag bool `protobuf:"varint,7,opt,name=remove_inner_tag,json=removeInnerTag,proto3" json:"remove_inner_tag,omitempty"`
+ TranslateInnerTag bool `protobuf:"varint,8,opt,name=translate_inner_tag,json=translateInnerTag,proto3" json:"translate_inner_tag,omitempty"`
+ TranslateOuterTag bool `protobuf:"varint,9,opt,name=translate_outer_tag,json=translateOuterTag,proto3" json:"translate_outer_tag,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *ActionCmd) Reset() { *m = ActionCmd{} }
+func (m *ActionCmd) String() string { return proto.CompactTextString(m) }
+func (*ActionCmd) ProtoMessage() {}
+func (*ActionCmd) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{17}
+}
+
+func (m *ActionCmd) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_ActionCmd.Unmarshal(m, b)
+}
+func (m *ActionCmd) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_ActionCmd.Marshal(b, m, deterministic)
+}
+func (m *ActionCmd) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ActionCmd.Merge(m, src)
+}
+func (m *ActionCmd) XXX_Size() int {
+ return xxx_messageInfo_ActionCmd.Size(m)
+}
+func (m *ActionCmd) XXX_DiscardUnknown() {
+ xxx_messageInfo_ActionCmd.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ActionCmd proto.InternalMessageInfo
+
+func (m *ActionCmd) GetAddOuterTag() bool {
+ if m != nil {
+ return m.AddOuterTag
+ }
+ return false
+}
+
+func (m *ActionCmd) GetRemoveOuterTag() bool {
+ if m != nil {
+ return m.RemoveOuterTag
+ }
+ return false
+}
+
+func (m *ActionCmd) GetTrapToHost() bool {
+ if m != nil {
+ return m.TrapToHost
+ }
+ return false
+}
+
+func (m *ActionCmd) GetRemarkOuterPbits() bool {
+ if m != nil {
+ return m.RemarkOuterPbits
+ }
+ return false
+}
+
+func (m *ActionCmd) GetRemarkInnerPbits() bool {
+ if m != nil {
+ return m.RemarkInnerPbits
+ }
+ return false
+}
+
+func (m *ActionCmd) GetAddInnerTag() bool {
+ if m != nil {
+ return m.AddInnerTag
+ }
+ return false
+}
+
+func (m *ActionCmd) GetRemoveInnerTag() bool {
+ if m != nil {
+ return m.RemoveInnerTag
+ }
+ return false
+}
+
+func (m *ActionCmd) GetTranslateInnerTag() bool {
+ if m != nil {
+ return m.TranslateInnerTag
+ }
+ return false
+}
+
+func (m *ActionCmd) GetTranslateOuterTag() bool {
+ if m != nil {
+ return m.TranslateOuterTag
+ }
+ return false
+}
+
+type Action struct {
+ Cmd *ActionCmd `protobuf:"bytes,1,opt,name=cmd,proto3" json:"cmd,omitempty"`
+ OVid uint32 `protobuf:"fixed32,2,opt,name=o_vid,json=oVid,proto3" json:"o_vid,omitempty"`
+ OPbits uint32 `protobuf:"fixed32,3,opt,name=o_pbits,json=oPbits,proto3" json:"o_pbits,omitempty"`
+ OTpid uint32 `protobuf:"fixed32,4,opt,name=o_tpid,json=oTpid,proto3" json:"o_tpid,omitempty"`
+ IVid uint32 `protobuf:"fixed32,5,opt,name=i_vid,json=iVid,proto3" json:"i_vid,omitempty"`
+ IPbits uint32 `protobuf:"fixed32,6,opt,name=i_pbits,json=iPbits,proto3" json:"i_pbits,omitempty"`
+ ITpid uint32 `protobuf:"fixed32,7,opt,name=i_tpid,json=iTpid,proto3" json:"i_tpid,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Action) Reset() { *m = Action{} }
+func (m *Action) String() string { return proto.CompactTextString(m) }
+func (*Action) ProtoMessage() {}
+func (*Action) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{18}
+}
+
+func (m *Action) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Action.Unmarshal(m, b)
+}
+func (m *Action) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Action.Marshal(b, m, deterministic)
+}
+func (m *Action) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Action.Merge(m, src)
+}
+func (m *Action) XXX_Size() int {
+ return xxx_messageInfo_Action.Size(m)
+}
+func (m *Action) XXX_DiscardUnknown() {
+ xxx_messageInfo_Action.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Action proto.InternalMessageInfo
+
+func (m *Action) GetCmd() *ActionCmd {
+ if m != nil {
+ return m.Cmd
+ }
+ return nil
+}
+
+func (m *Action) GetOVid() uint32 {
+ if m != nil {
+ return m.OVid
+ }
+ return 0
+}
+
+func (m *Action) GetOPbits() uint32 {
+ if m != nil {
+ return m.OPbits
+ }
+ return 0
+}
+
+func (m *Action) GetOTpid() uint32 {
+ if m != nil {
+ return m.OTpid
+ }
+ return 0
+}
+
+func (m *Action) GetIVid() uint32 {
+ if m != nil {
+ return m.IVid
+ }
+ return 0
+}
+
+func (m *Action) GetIPbits() uint32 {
+ if m != nil {
+ return m.IPbits
+ }
+ return 0
+}
+
+func (m *Action) GetITpid() uint32 {
+ if m != nil {
+ return m.ITpid
+ }
+ return 0
+}
+
+type Flow struct {
+ AccessIntfId int32 `protobuf:"fixed32,1,opt,name=access_intf_id,json=accessIntfId,proto3" json:"access_intf_id,omitempty"`
+ OnuId int32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+ UniId int32 `protobuf:"fixed32,11,opt,name=uni_id,json=uniId,proto3" json:"uni_id,omitempty"`
+ FlowId uint32 `protobuf:"fixed32,3,opt,name=flow_id,json=flowId,proto3" json:"flow_id,omitempty"`
+ FlowType string `protobuf:"bytes,4,opt,name=flow_type,json=flowType,proto3" json:"flow_type,omitempty"`
+ AllocId int32 `protobuf:"fixed32,10,opt,name=alloc_id,json=allocId,proto3" json:"alloc_id,omitempty"`
+ NetworkIntfId int32 `protobuf:"fixed32,5,opt,name=network_intf_id,json=networkIntfId,proto3" json:"network_intf_id,omitempty"`
+ GemportId int32 `protobuf:"fixed32,6,opt,name=gemport_id,json=gemportId,proto3" json:"gemport_id,omitempty"`
+ Classifier *Classifier `protobuf:"bytes,7,opt,name=classifier,proto3" json:"classifier,omitempty"`
+ Action *Action `protobuf:"bytes,8,opt,name=action,proto3" json:"action,omitempty"`
+ Priority int32 `protobuf:"fixed32,9,opt,name=priority,proto3" json:"priority,omitempty"`
+ Cookie uint64 `protobuf:"fixed64,12,opt,name=cookie,proto3" json:"cookie,omitempty"`
+ PortNo uint32 `protobuf:"fixed32,13,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+ GroupId uint32 `protobuf:"fixed32,14,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Flow) Reset() { *m = Flow{} }
+func (m *Flow) String() string { return proto.CompactTextString(m) }
+func (*Flow) ProtoMessage() {}
+func (*Flow) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{19}
+}
+
+func (m *Flow) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Flow.Unmarshal(m, b)
+}
+func (m *Flow) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Flow.Marshal(b, m, deterministic)
+}
+func (m *Flow) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Flow.Merge(m, src)
+}
+func (m *Flow) XXX_Size() int {
+ return xxx_messageInfo_Flow.Size(m)
+}
+func (m *Flow) XXX_DiscardUnknown() {
+ xxx_messageInfo_Flow.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Flow proto.InternalMessageInfo
+
+func (m *Flow) GetAccessIntfId() int32 {
+ if m != nil {
+ return m.AccessIntfId
+ }
+ return 0
+}
+
+func (m *Flow) GetOnuId() int32 {
+ if m != nil {
+ return m.OnuId
+ }
+ return 0
+}
+
+func (m *Flow) GetUniId() int32 {
+ if m != nil {
+ return m.UniId
+ }
+ return 0
+}
+
+func (m *Flow) GetFlowId() uint32 {
+ if m != nil {
+ return m.FlowId
+ }
+ return 0
+}
+
+func (m *Flow) GetFlowType() string {
+ if m != nil {
+ return m.FlowType
+ }
+ return ""
+}
+
+func (m *Flow) GetAllocId() int32 {
+ if m != nil {
+ return m.AllocId
+ }
+ return 0
+}
+
+func (m *Flow) GetNetworkIntfId() int32 {
+ if m != nil {
+ return m.NetworkIntfId
+ }
+ return 0
+}
+
+func (m *Flow) GetGemportId() int32 {
+ if m != nil {
+ return m.GemportId
+ }
+ return 0
+}
+
+func (m *Flow) GetClassifier() *Classifier {
+ if m != nil {
+ return m.Classifier
+ }
+ return nil
+}
+
+func (m *Flow) GetAction() *Action {
+ if m != nil {
+ return m.Action
+ }
+ return nil
+}
+
+func (m *Flow) GetPriority() int32 {
+ if m != nil {
+ return m.Priority
+ }
+ return 0
+}
+
+func (m *Flow) GetCookie() uint64 {
+ if m != nil {
+ return m.Cookie
+ }
+ return 0
+}
+
+func (m *Flow) GetPortNo() uint32 {
+ if m != nil {
+ return m.PortNo
+ }
+ return 0
+}
+
+func (m *Flow) GetGroupId() uint32 {
+ if m != nil {
+ return m.GroupId
+ }
+ return 0
+}
+
+type SerialNumber struct {
+ VendorId []byte `protobuf:"bytes,1,opt,name=vendor_id,json=vendorId,proto3" json:"vendor_id,omitempty"`
+ VendorSpecific []byte `protobuf:"bytes,2,opt,name=vendor_specific,json=vendorSpecific,proto3" json:"vendor_specific,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *SerialNumber) Reset() { *m = SerialNumber{} }
+func (m *SerialNumber) String() string { return proto.CompactTextString(m) }
+func (*SerialNumber) ProtoMessage() {}
+func (*SerialNumber) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{20}
+}
+
+func (m *SerialNumber) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_SerialNumber.Unmarshal(m, b)
+}
+func (m *SerialNumber) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_SerialNumber.Marshal(b, m, deterministic)
+}
+func (m *SerialNumber) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_SerialNumber.Merge(m, src)
+}
+func (m *SerialNumber) XXX_Size() int {
+ return xxx_messageInfo_SerialNumber.Size(m)
+}
+func (m *SerialNumber) XXX_DiscardUnknown() {
+ xxx_messageInfo_SerialNumber.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SerialNumber proto.InternalMessageInfo
+
+func (m *SerialNumber) GetVendorId() []byte {
+ if m != nil {
+ return m.VendorId
+ }
+ return nil
+}
+
+func (m *SerialNumber) GetVendorSpecific() []byte {
+ if m != nil {
+ return m.VendorSpecific
+ }
+ return nil
+}
+
+type PortStatistics struct {
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ RxBytes uint64 `protobuf:"fixed64,2,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"`
+ RxPackets uint64 `protobuf:"fixed64,3,opt,name=rx_packets,json=rxPackets,proto3" json:"rx_packets,omitempty"`
+ RxUcastPackets uint64 `protobuf:"fixed64,4,opt,name=rx_ucast_packets,json=rxUcastPackets,proto3" json:"rx_ucast_packets,omitempty"`
+ RxMcastPackets uint64 `protobuf:"fixed64,5,opt,name=rx_mcast_packets,json=rxMcastPackets,proto3" json:"rx_mcast_packets,omitempty"`
+ RxBcastPackets uint64 `protobuf:"fixed64,6,opt,name=rx_bcast_packets,json=rxBcastPackets,proto3" json:"rx_bcast_packets,omitempty"`
+ RxErrorPackets uint64 `protobuf:"fixed64,7,opt,name=rx_error_packets,json=rxErrorPackets,proto3" json:"rx_error_packets,omitempty"`
+ TxBytes uint64 `protobuf:"fixed64,8,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`
+ TxPackets uint64 `protobuf:"fixed64,9,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"`
+ TxUcastPackets uint64 `protobuf:"fixed64,10,opt,name=tx_ucast_packets,json=txUcastPackets,proto3" json:"tx_ucast_packets,omitempty"`
+ TxMcastPackets uint64 `protobuf:"fixed64,11,opt,name=tx_mcast_packets,json=txMcastPackets,proto3" json:"tx_mcast_packets,omitempty"`
+ TxBcastPackets uint64 `protobuf:"fixed64,12,opt,name=tx_bcast_packets,json=txBcastPackets,proto3" json:"tx_bcast_packets,omitempty"`
+ TxErrorPackets uint64 `protobuf:"fixed64,13,opt,name=tx_error_packets,json=txErrorPackets,proto3" json:"tx_error_packets,omitempty"`
+ RxCrcErrors uint64 `protobuf:"fixed64,14,opt,name=rx_crc_errors,json=rxCrcErrors,proto3" json:"rx_crc_errors,omitempty"`
+ BipErrors uint64 `protobuf:"fixed64,15,opt,name=bip_errors,json=bipErrors,proto3" json:"bip_errors,omitempty"`
+ Timestamp uint32 `protobuf:"fixed32,16,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *PortStatistics) Reset() { *m = PortStatistics{} }
+func (m *PortStatistics) String() string { return proto.CompactTextString(m) }
+func (*PortStatistics) ProtoMessage() {}
+func (*PortStatistics) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{21}
+}
+
+func (m *PortStatistics) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_PortStatistics.Unmarshal(m, b)
+}
+func (m *PortStatistics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_PortStatistics.Marshal(b, m, deterministic)
+}
+func (m *PortStatistics) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_PortStatistics.Merge(m, src)
+}
+func (m *PortStatistics) XXX_Size() int {
+ return xxx_messageInfo_PortStatistics.Size(m)
+}
+func (m *PortStatistics) XXX_DiscardUnknown() {
+ xxx_messageInfo_PortStatistics.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PortStatistics proto.InternalMessageInfo
+
+func (m *PortStatistics) GetIntfId() uint32 {
+ if m != nil {
+ return m.IntfId
+ }
+ return 0
+}
+
+func (m *PortStatistics) GetRxBytes() uint64 {
+ if m != nil {
+ return m.RxBytes
+ }
+ return 0
+}
+
+func (m *PortStatistics) GetRxPackets() uint64 {
+ if m != nil {
+ return m.RxPackets
+ }
+ return 0
+}
+
+func (m *PortStatistics) GetRxUcastPackets() uint64 {
+ if m != nil {
+ return m.RxUcastPackets
+ }
+ return 0
+}
+
+func (m *PortStatistics) GetRxMcastPackets() uint64 {
+ if m != nil {
+ return m.RxMcastPackets
+ }
+ return 0
+}
+
+func (m *PortStatistics) GetRxBcastPackets() uint64 {
+ if m != nil {
+ return m.RxBcastPackets
+ }
+ return 0
+}
+
+func (m *PortStatistics) GetRxErrorPackets() uint64 {
+ if m != nil {
+ return m.RxErrorPackets
+ }
+ return 0
+}
+
+func (m *PortStatistics) GetTxBytes() uint64 {
+ if m != nil {
+ return m.TxBytes
+ }
+ return 0
+}
+
+func (m *PortStatistics) GetTxPackets() uint64 {
+ if m != nil {
+ return m.TxPackets
+ }
+ return 0
+}
+
+func (m *PortStatistics) GetTxUcastPackets() uint64 {
+ if m != nil {
+ return m.TxUcastPackets
+ }
+ return 0
+}
+
+func (m *PortStatistics) GetTxMcastPackets() uint64 {
+ if m != nil {
+ return m.TxMcastPackets
+ }
+ return 0
+}
+
+func (m *PortStatistics) GetTxBcastPackets() uint64 {
+ if m != nil {
+ return m.TxBcastPackets
+ }
+ return 0
+}
+
+func (m *PortStatistics) GetTxErrorPackets() uint64 {
+ if m != nil {
+ return m.TxErrorPackets
+ }
+ return 0
+}
+
+func (m *PortStatistics) GetRxCrcErrors() uint64 {
+ if m != nil {
+ return m.RxCrcErrors
+ }
+ return 0
+}
+
+func (m *PortStatistics) GetBipErrors() uint64 {
+ if m != nil {
+ return m.BipErrors
+ }
+ return 0
+}
+
+func (m *PortStatistics) GetTimestamp() uint32 {
+ if m != nil {
+ return m.Timestamp
+ }
+ return 0
+}
+
+type FlowStatistics struct {
+ FlowId uint32 `protobuf:"fixed32,1,opt,name=flow_id,json=flowId,proto3" json:"flow_id,omitempty"`
+ RxBytes uint64 `protobuf:"fixed64,2,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"`
+ RxPackets uint64 `protobuf:"fixed64,3,opt,name=rx_packets,json=rxPackets,proto3" json:"rx_packets,omitempty"`
+ TxBytes uint64 `protobuf:"fixed64,8,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`
+ TxPackets uint64 `protobuf:"fixed64,9,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"`
+ Timestamp uint32 `protobuf:"fixed32,16,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *FlowStatistics) Reset() { *m = FlowStatistics{} }
+func (m *FlowStatistics) String() string { return proto.CompactTextString(m) }
+func (*FlowStatistics) ProtoMessage() {}
+func (*FlowStatistics) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{22}
+}
+
+func (m *FlowStatistics) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_FlowStatistics.Unmarshal(m, b)
+}
+func (m *FlowStatistics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_FlowStatistics.Marshal(b, m, deterministic)
+}
+func (m *FlowStatistics) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_FlowStatistics.Merge(m, src)
+}
+func (m *FlowStatistics) XXX_Size() int {
+ return xxx_messageInfo_FlowStatistics.Size(m)
+}
+func (m *FlowStatistics) XXX_DiscardUnknown() {
+ xxx_messageInfo_FlowStatistics.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FlowStatistics proto.InternalMessageInfo
+
+func (m *FlowStatistics) GetFlowId() uint32 {
+ if m != nil {
+ return m.FlowId
+ }
+ return 0
+}
+
+func (m *FlowStatistics) GetRxBytes() uint64 {
+ if m != nil {
+ return m.RxBytes
+ }
+ return 0
+}
+
+func (m *FlowStatistics) GetRxPackets() uint64 {
+ if m != nil {
+ return m.RxPackets
+ }
+ return 0
+}
+
+func (m *FlowStatistics) GetTxBytes() uint64 {
+ if m != nil {
+ return m.TxBytes
+ }
+ return 0
+}
+
+func (m *FlowStatistics) GetTxPackets() uint64 {
+ if m != nil {
+ return m.TxPackets
+ }
+ return 0
+}
+
+func (m *FlowStatistics) GetTimestamp() uint32 {
+ if m != nil {
+ return m.Timestamp
+ }
+ return 0
+}
+
+type LosIndication struct {
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *LosIndication) Reset() { *m = LosIndication{} }
+func (m *LosIndication) String() string { return proto.CompactTextString(m) }
+func (*LosIndication) ProtoMessage() {}
+func (*LosIndication) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{23}
+}
+
+func (m *LosIndication) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_LosIndication.Unmarshal(m, b)
+}
+func (m *LosIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_LosIndication.Marshal(b, m, deterministic)
+}
+func (m *LosIndication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_LosIndication.Merge(m, src)
+}
+func (m *LosIndication) XXX_Size() int {
+ return xxx_messageInfo_LosIndication.Size(m)
+}
+func (m *LosIndication) XXX_DiscardUnknown() {
+ xxx_messageInfo_LosIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_LosIndication proto.InternalMessageInfo
+
+func (m *LosIndication) GetIntfId() uint32 {
+ if m != nil {
+ return m.IntfId
+ }
+ return 0
+}
+
+func (m *LosIndication) GetStatus() string {
+ if m != nil {
+ return m.Status
+ }
+ return ""
+}
+
+type DyingGaspIndication struct {
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ OnuId uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+ Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *DyingGaspIndication) Reset() { *m = DyingGaspIndication{} }
+func (m *DyingGaspIndication) String() string { return proto.CompactTextString(m) }
+func (*DyingGaspIndication) ProtoMessage() {}
+func (*DyingGaspIndication) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{24}
+}
+
+func (m *DyingGaspIndication) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_DyingGaspIndication.Unmarshal(m, b)
+}
+func (m *DyingGaspIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_DyingGaspIndication.Marshal(b, m, deterministic)
+}
+func (m *DyingGaspIndication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_DyingGaspIndication.Merge(m, src)
+}
+func (m *DyingGaspIndication) XXX_Size() int {
+ return xxx_messageInfo_DyingGaspIndication.Size(m)
+}
+func (m *DyingGaspIndication) XXX_DiscardUnknown() {
+ xxx_messageInfo_DyingGaspIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DyingGaspIndication proto.InternalMessageInfo
+
+func (m *DyingGaspIndication) GetIntfId() uint32 {
+ if m != nil {
+ return m.IntfId
+ }
+ return 0
+}
+
+func (m *DyingGaspIndication) GetOnuId() uint32 {
+ if m != nil {
+ return m.OnuId
+ }
+ return 0
+}
+
+func (m *DyingGaspIndication) GetStatus() string {
+ if m != nil {
+ return m.Status
+ }
+ return ""
+}
+
+type OnuAlarmIndication struct {
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ OnuId uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+ LosStatus string `protobuf:"bytes,3,opt,name=los_status,json=losStatus,proto3" json:"los_status,omitempty"`
+ LobStatus string `protobuf:"bytes,4,opt,name=lob_status,json=lobStatus,proto3" json:"lob_status,omitempty"`
+ LopcMissStatus string `protobuf:"bytes,5,opt,name=lopc_miss_status,json=lopcMissStatus,proto3" json:"lopc_miss_status,omitempty"`
+ LopcMicErrorStatus string `protobuf:"bytes,6,opt,name=lopc_mic_error_status,json=lopcMicErrorStatus,proto3" json:"lopc_mic_error_status,omitempty"`
+ LofiStatus string `protobuf:"bytes,7,opt,name=lofi_status,json=lofiStatus,proto3" json:"lofi_status,omitempty"`
+ LoamiStatus string `protobuf:"bytes,8,opt,name=loami_status,json=loamiStatus,proto3" json:"loami_status,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OnuAlarmIndication) Reset() { *m = OnuAlarmIndication{} }
+func (m *OnuAlarmIndication) String() string { return proto.CompactTextString(m) }
+func (*OnuAlarmIndication) ProtoMessage() {}
+func (*OnuAlarmIndication) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{25}
+}
+
+func (m *OnuAlarmIndication) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OnuAlarmIndication.Unmarshal(m, b)
+}
+func (m *OnuAlarmIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OnuAlarmIndication.Marshal(b, m, deterministic)
+}
+func (m *OnuAlarmIndication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OnuAlarmIndication.Merge(m, src)
+}
+func (m *OnuAlarmIndication) XXX_Size() int {
+ return xxx_messageInfo_OnuAlarmIndication.Size(m)
+}
+func (m *OnuAlarmIndication) XXX_DiscardUnknown() {
+ xxx_messageInfo_OnuAlarmIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuAlarmIndication proto.InternalMessageInfo
+
+func (m *OnuAlarmIndication) GetIntfId() uint32 {
+ if m != nil {
+ return m.IntfId
+ }
+ return 0
+}
+
+func (m *OnuAlarmIndication) GetOnuId() uint32 {
+ if m != nil {
+ return m.OnuId
+ }
+ return 0
+}
+
+func (m *OnuAlarmIndication) GetLosStatus() string {
+ if m != nil {
+ return m.LosStatus
+ }
+ return ""
+}
+
+func (m *OnuAlarmIndication) GetLobStatus() string {
+ if m != nil {
+ return m.LobStatus
+ }
+ return ""
+}
+
+func (m *OnuAlarmIndication) GetLopcMissStatus() string {
+ if m != nil {
+ return m.LopcMissStatus
+ }
+ return ""
+}
+
+func (m *OnuAlarmIndication) GetLopcMicErrorStatus() string {
+ if m != nil {
+ return m.LopcMicErrorStatus
+ }
+ return ""
+}
+
+func (m *OnuAlarmIndication) GetLofiStatus() string {
+ if m != nil {
+ return m.LofiStatus
+ }
+ return ""
+}
+
+func (m *OnuAlarmIndication) GetLoamiStatus() string {
+ if m != nil {
+ return m.LoamiStatus
+ }
+ return ""
+}
+
+type OnuStartupFailureIndication struct {
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ OnuId uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+ Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OnuStartupFailureIndication) Reset() { *m = OnuStartupFailureIndication{} }
+func (m *OnuStartupFailureIndication) String() string { return proto.CompactTextString(m) }
+func (*OnuStartupFailureIndication) ProtoMessage() {}
+func (*OnuStartupFailureIndication) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{26}
+}
+
+func (m *OnuStartupFailureIndication) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OnuStartupFailureIndication.Unmarshal(m, b)
+}
+func (m *OnuStartupFailureIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OnuStartupFailureIndication.Marshal(b, m, deterministic)
+}
+func (m *OnuStartupFailureIndication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OnuStartupFailureIndication.Merge(m, src)
+}
+func (m *OnuStartupFailureIndication) XXX_Size() int {
+ return xxx_messageInfo_OnuStartupFailureIndication.Size(m)
+}
+func (m *OnuStartupFailureIndication) XXX_DiscardUnknown() {
+ xxx_messageInfo_OnuStartupFailureIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuStartupFailureIndication proto.InternalMessageInfo
+
+func (m *OnuStartupFailureIndication) GetIntfId() uint32 {
+ if m != nil {
+ return m.IntfId
+ }
+ return 0
+}
+
+func (m *OnuStartupFailureIndication) GetOnuId() uint32 {
+ if m != nil {
+ return m.OnuId
+ }
+ return 0
+}
+
+func (m *OnuStartupFailureIndication) GetStatus() string {
+ if m != nil {
+ return m.Status
+ }
+ return ""
+}
+
+type OnuSignalDegradeIndication struct {
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ OnuId uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+ Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
+ InverseBitErrorRate uint32 `protobuf:"fixed32,4,opt,name=inverse_bit_error_rate,json=inverseBitErrorRate,proto3" json:"inverse_bit_error_rate,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OnuSignalDegradeIndication) Reset() { *m = OnuSignalDegradeIndication{} }
+func (m *OnuSignalDegradeIndication) String() string { return proto.CompactTextString(m) }
+func (*OnuSignalDegradeIndication) ProtoMessage() {}
+func (*OnuSignalDegradeIndication) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{27}
+}
+
+func (m *OnuSignalDegradeIndication) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OnuSignalDegradeIndication.Unmarshal(m, b)
+}
+func (m *OnuSignalDegradeIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OnuSignalDegradeIndication.Marshal(b, m, deterministic)
+}
+func (m *OnuSignalDegradeIndication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OnuSignalDegradeIndication.Merge(m, src)
+}
+func (m *OnuSignalDegradeIndication) XXX_Size() int {
+ return xxx_messageInfo_OnuSignalDegradeIndication.Size(m)
+}
+func (m *OnuSignalDegradeIndication) XXX_DiscardUnknown() {
+ xxx_messageInfo_OnuSignalDegradeIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuSignalDegradeIndication proto.InternalMessageInfo
+
+func (m *OnuSignalDegradeIndication) GetIntfId() uint32 {
+ if m != nil {
+ return m.IntfId
+ }
+ return 0
+}
+
+func (m *OnuSignalDegradeIndication) GetOnuId() uint32 {
+ if m != nil {
+ return m.OnuId
+ }
+ return 0
+}
+
+func (m *OnuSignalDegradeIndication) GetStatus() string {
+ if m != nil {
+ return m.Status
+ }
+ return ""
+}
+
+func (m *OnuSignalDegradeIndication) GetInverseBitErrorRate() uint32 {
+ if m != nil {
+ return m.InverseBitErrorRate
+ }
+ return 0
+}
+
+type OnuDriftOfWindowIndication struct {
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ OnuId uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+ Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
+ Drift uint32 `protobuf:"fixed32,4,opt,name=drift,proto3" json:"drift,omitempty"`
+ NewEqd uint32 `protobuf:"fixed32,5,opt,name=new_eqd,json=newEqd,proto3" json:"new_eqd,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OnuDriftOfWindowIndication) Reset() { *m = OnuDriftOfWindowIndication{} }
+func (m *OnuDriftOfWindowIndication) String() string { return proto.CompactTextString(m) }
+func (*OnuDriftOfWindowIndication) ProtoMessage() {}
+func (*OnuDriftOfWindowIndication) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{28}
+}
+
+func (m *OnuDriftOfWindowIndication) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OnuDriftOfWindowIndication.Unmarshal(m, b)
+}
+func (m *OnuDriftOfWindowIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OnuDriftOfWindowIndication.Marshal(b, m, deterministic)
+}
+func (m *OnuDriftOfWindowIndication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OnuDriftOfWindowIndication.Merge(m, src)
+}
+func (m *OnuDriftOfWindowIndication) XXX_Size() int {
+ return xxx_messageInfo_OnuDriftOfWindowIndication.Size(m)
+}
+func (m *OnuDriftOfWindowIndication) XXX_DiscardUnknown() {
+ xxx_messageInfo_OnuDriftOfWindowIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuDriftOfWindowIndication proto.InternalMessageInfo
+
+func (m *OnuDriftOfWindowIndication) GetIntfId() uint32 {
+ if m != nil {
+ return m.IntfId
+ }
+ return 0
+}
+
+func (m *OnuDriftOfWindowIndication) GetOnuId() uint32 {
+ if m != nil {
+ return m.OnuId
+ }
+ return 0
+}
+
+func (m *OnuDriftOfWindowIndication) GetStatus() string {
+ if m != nil {
+ return m.Status
+ }
+ return ""
+}
+
+func (m *OnuDriftOfWindowIndication) GetDrift() uint32 {
+ if m != nil {
+ return m.Drift
+ }
+ return 0
+}
+
+func (m *OnuDriftOfWindowIndication) GetNewEqd() uint32 {
+ if m != nil {
+ return m.NewEqd
+ }
+ return 0
+}
+
+type OnuLossOfOmciChannelIndication struct {
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ OnuId uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+ Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OnuLossOfOmciChannelIndication) Reset() { *m = OnuLossOfOmciChannelIndication{} }
+func (m *OnuLossOfOmciChannelIndication) String() string { return proto.CompactTextString(m) }
+func (*OnuLossOfOmciChannelIndication) ProtoMessage() {}
+func (*OnuLossOfOmciChannelIndication) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{29}
+}
+
+func (m *OnuLossOfOmciChannelIndication) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OnuLossOfOmciChannelIndication.Unmarshal(m, b)
+}
+func (m *OnuLossOfOmciChannelIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OnuLossOfOmciChannelIndication.Marshal(b, m, deterministic)
+}
+func (m *OnuLossOfOmciChannelIndication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OnuLossOfOmciChannelIndication.Merge(m, src)
+}
+func (m *OnuLossOfOmciChannelIndication) XXX_Size() int {
+ return xxx_messageInfo_OnuLossOfOmciChannelIndication.Size(m)
+}
+func (m *OnuLossOfOmciChannelIndication) XXX_DiscardUnknown() {
+ xxx_messageInfo_OnuLossOfOmciChannelIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuLossOfOmciChannelIndication proto.InternalMessageInfo
+
+func (m *OnuLossOfOmciChannelIndication) GetIntfId() uint32 {
+ if m != nil {
+ return m.IntfId
+ }
+ return 0
+}
+
+func (m *OnuLossOfOmciChannelIndication) GetOnuId() uint32 {
+ if m != nil {
+ return m.OnuId
+ }
+ return 0
+}
+
+func (m *OnuLossOfOmciChannelIndication) GetStatus() string {
+ if m != nil {
+ return m.Status
+ }
+ return ""
+}
+
+type OnuSignalsFailureIndication struct {
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ OnuId uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+ Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
+ InverseBitErrorRate uint32 `protobuf:"fixed32,4,opt,name=inverse_bit_error_rate,json=inverseBitErrorRate,proto3" json:"inverse_bit_error_rate,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OnuSignalsFailureIndication) Reset() { *m = OnuSignalsFailureIndication{} }
+func (m *OnuSignalsFailureIndication) String() string { return proto.CompactTextString(m) }
+func (*OnuSignalsFailureIndication) ProtoMessage() {}
+func (*OnuSignalsFailureIndication) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{30}
+}
+
+func (m *OnuSignalsFailureIndication) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OnuSignalsFailureIndication.Unmarshal(m, b)
+}
+func (m *OnuSignalsFailureIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OnuSignalsFailureIndication.Marshal(b, m, deterministic)
+}
+func (m *OnuSignalsFailureIndication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OnuSignalsFailureIndication.Merge(m, src)
+}
+func (m *OnuSignalsFailureIndication) XXX_Size() int {
+ return xxx_messageInfo_OnuSignalsFailureIndication.Size(m)
+}
+func (m *OnuSignalsFailureIndication) XXX_DiscardUnknown() {
+ xxx_messageInfo_OnuSignalsFailureIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuSignalsFailureIndication proto.InternalMessageInfo
+
+func (m *OnuSignalsFailureIndication) GetIntfId() uint32 {
+ if m != nil {
+ return m.IntfId
+ }
+ return 0
+}
+
+func (m *OnuSignalsFailureIndication) GetOnuId() uint32 {
+ if m != nil {
+ return m.OnuId
+ }
+ return 0
+}
+
+func (m *OnuSignalsFailureIndication) GetStatus() string {
+ if m != nil {
+ return m.Status
+ }
+ return ""
+}
+
+func (m *OnuSignalsFailureIndication) GetInverseBitErrorRate() uint32 {
+ if m != nil {
+ return m.InverseBitErrorRate
+ }
+ return 0
+}
+
+type OnuTransmissionInterferenceWarning struct {
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ OnuId uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+ Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
+ Drift uint32 `protobuf:"fixed32,4,opt,name=drift,proto3" json:"drift,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OnuTransmissionInterferenceWarning) Reset() { *m = OnuTransmissionInterferenceWarning{} }
+func (m *OnuTransmissionInterferenceWarning) String() string { return proto.CompactTextString(m) }
+func (*OnuTransmissionInterferenceWarning) ProtoMessage() {}
+func (*OnuTransmissionInterferenceWarning) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{31}
+}
+
+func (m *OnuTransmissionInterferenceWarning) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OnuTransmissionInterferenceWarning.Unmarshal(m, b)
+}
+func (m *OnuTransmissionInterferenceWarning) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OnuTransmissionInterferenceWarning.Marshal(b, m, deterministic)
+}
+func (m *OnuTransmissionInterferenceWarning) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OnuTransmissionInterferenceWarning.Merge(m, src)
+}
+func (m *OnuTransmissionInterferenceWarning) XXX_Size() int {
+ return xxx_messageInfo_OnuTransmissionInterferenceWarning.Size(m)
+}
+func (m *OnuTransmissionInterferenceWarning) XXX_DiscardUnknown() {
+ xxx_messageInfo_OnuTransmissionInterferenceWarning.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuTransmissionInterferenceWarning proto.InternalMessageInfo
+
+func (m *OnuTransmissionInterferenceWarning) GetIntfId() uint32 {
+ if m != nil {
+ return m.IntfId
+ }
+ return 0
+}
+
+func (m *OnuTransmissionInterferenceWarning) GetOnuId() uint32 {
+ if m != nil {
+ return m.OnuId
+ }
+ return 0
+}
+
+func (m *OnuTransmissionInterferenceWarning) GetStatus() string {
+ if m != nil {
+ return m.Status
+ }
+ return ""
+}
+
+func (m *OnuTransmissionInterferenceWarning) GetDrift() uint32 {
+ if m != nil {
+ return m.Drift
+ }
+ return 0
+}
+
+type OnuActivationFailureIndication struct {
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ OnuId uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+ FailReason uint32 `protobuf:"fixed32,3,opt,name=fail_reason,json=failReason,proto3" json:"fail_reason,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OnuActivationFailureIndication) Reset() { *m = OnuActivationFailureIndication{} }
+func (m *OnuActivationFailureIndication) String() string { return proto.CompactTextString(m) }
+func (*OnuActivationFailureIndication) ProtoMessage() {}
+func (*OnuActivationFailureIndication) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{32}
+}
+
+func (m *OnuActivationFailureIndication) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OnuActivationFailureIndication.Unmarshal(m, b)
+}
+func (m *OnuActivationFailureIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OnuActivationFailureIndication.Marshal(b, m, deterministic)
+}
+func (m *OnuActivationFailureIndication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OnuActivationFailureIndication.Merge(m, src)
+}
+func (m *OnuActivationFailureIndication) XXX_Size() int {
+ return xxx_messageInfo_OnuActivationFailureIndication.Size(m)
+}
+func (m *OnuActivationFailureIndication) XXX_DiscardUnknown() {
+ xxx_messageInfo_OnuActivationFailureIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuActivationFailureIndication proto.InternalMessageInfo
+
+func (m *OnuActivationFailureIndication) GetIntfId() uint32 {
+ if m != nil {
+ return m.IntfId
+ }
+ return 0
+}
+
+func (m *OnuActivationFailureIndication) GetOnuId() uint32 {
+ if m != nil {
+ return m.OnuId
+ }
+ return 0
+}
+
+func (m *OnuActivationFailureIndication) GetFailReason() uint32 {
+ if m != nil {
+ return m.FailReason
+ }
+ return 0
+}
+
+type OnuLossOfKeySyncFailureIndication struct {
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ OnuId uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+ Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OnuLossOfKeySyncFailureIndication) Reset() { *m = OnuLossOfKeySyncFailureIndication{} }
+func (m *OnuLossOfKeySyncFailureIndication) String() string { return proto.CompactTextString(m) }
+func (*OnuLossOfKeySyncFailureIndication) ProtoMessage() {}
+func (*OnuLossOfKeySyncFailureIndication) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{33}
+}
+
+func (m *OnuLossOfKeySyncFailureIndication) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OnuLossOfKeySyncFailureIndication.Unmarshal(m, b)
+}
+func (m *OnuLossOfKeySyncFailureIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OnuLossOfKeySyncFailureIndication.Marshal(b, m, deterministic)
+}
+func (m *OnuLossOfKeySyncFailureIndication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OnuLossOfKeySyncFailureIndication.Merge(m, src)
+}
+func (m *OnuLossOfKeySyncFailureIndication) XXX_Size() int {
+ return xxx_messageInfo_OnuLossOfKeySyncFailureIndication.Size(m)
+}
+func (m *OnuLossOfKeySyncFailureIndication) XXX_DiscardUnknown() {
+ xxx_messageInfo_OnuLossOfKeySyncFailureIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuLossOfKeySyncFailureIndication proto.InternalMessageInfo
+
+func (m *OnuLossOfKeySyncFailureIndication) GetIntfId() uint32 {
+ if m != nil {
+ return m.IntfId
+ }
+ return 0
+}
+
+func (m *OnuLossOfKeySyncFailureIndication) GetOnuId() uint32 {
+ if m != nil {
+ return m.OnuId
+ }
+ return 0
+}
+
+func (m *OnuLossOfKeySyncFailureIndication) GetStatus() string {
+ if m != nil {
+ return m.Status
+ }
+ return ""
+}
+
+type OnuItuPonStatsIndication struct {
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ OnuId uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+ RdiErrors uint32 `protobuf:"fixed32,3,opt,name=rdi_errors,json=rdiErrors,proto3" json:"rdi_errors,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OnuItuPonStatsIndication) Reset() { *m = OnuItuPonStatsIndication{} }
+func (m *OnuItuPonStatsIndication) String() string { return proto.CompactTextString(m) }
+func (*OnuItuPonStatsIndication) ProtoMessage() {}
+func (*OnuItuPonStatsIndication) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{34}
+}
+
+func (m *OnuItuPonStatsIndication) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OnuItuPonStatsIndication.Unmarshal(m, b)
+}
+func (m *OnuItuPonStatsIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OnuItuPonStatsIndication.Marshal(b, m, deterministic)
+}
+func (m *OnuItuPonStatsIndication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OnuItuPonStatsIndication.Merge(m, src)
+}
+func (m *OnuItuPonStatsIndication) XXX_Size() int {
+ return xxx_messageInfo_OnuItuPonStatsIndication.Size(m)
+}
+func (m *OnuItuPonStatsIndication) XXX_DiscardUnknown() {
+ xxx_messageInfo_OnuItuPonStatsIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuItuPonStatsIndication proto.InternalMessageInfo
+
+func (m *OnuItuPonStatsIndication) GetIntfId() uint32 {
+ if m != nil {
+ return m.IntfId
+ }
+ return 0
+}
+
+func (m *OnuItuPonStatsIndication) GetOnuId() uint32 {
+ if m != nil {
+ return m.OnuId
+ }
+ return 0
+}
+
+func (m *OnuItuPonStatsIndication) GetRdiErrors() uint32 {
+ if m != nil {
+ return m.RdiErrors
+ }
+ return 0
+}
+
+type OnuProcessingErrorIndication struct {
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ OnuId uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OnuProcessingErrorIndication) Reset() { *m = OnuProcessingErrorIndication{} }
+func (m *OnuProcessingErrorIndication) String() string { return proto.CompactTextString(m) }
+func (*OnuProcessingErrorIndication) ProtoMessage() {}
+func (*OnuProcessingErrorIndication) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{35}
+}
+
+func (m *OnuProcessingErrorIndication) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OnuProcessingErrorIndication.Unmarshal(m, b)
+}
+func (m *OnuProcessingErrorIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OnuProcessingErrorIndication.Marshal(b, m, deterministic)
+}
+func (m *OnuProcessingErrorIndication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OnuProcessingErrorIndication.Merge(m, src)
+}
+func (m *OnuProcessingErrorIndication) XXX_Size() int {
+ return xxx_messageInfo_OnuProcessingErrorIndication.Size(m)
+}
+func (m *OnuProcessingErrorIndication) XXX_DiscardUnknown() {
+ xxx_messageInfo_OnuProcessingErrorIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuProcessingErrorIndication proto.InternalMessageInfo
+
+func (m *OnuProcessingErrorIndication) GetIntfId() uint32 {
+ if m != nil {
+ return m.IntfId
+ }
+ return 0
+}
+
+func (m *OnuProcessingErrorIndication) GetOnuId() uint32 {
+ if m != nil {
+ return m.OnuId
+ }
+ return 0
+}
+
+type GroupMember struct {
+ InterfaceId uint32 `protobuf:"varint,1,opt,name=interface_id,json=interfaceId,proto3" json:"interface_id,omitempty"`
+ InterfaceType GroupMember_InterfaceType `protobuf:"varint,2,opt,name=interface_type,json=interfaceType,proto3,enum=openolt.GroupMember_InterfaceType" json:"interface_type,omitempty"`
+ GemPortId uint32 `protobuf:"varint,3,opt,name=gem_port_id,json=gemPortId,proto3" json:"gem_port_id,omitempty"`
+ Priority uint32 `protobuf:"varint,4,opt,name=priority,proto3" json:"priority,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GroupMember) Reset() { *m = GroupMember{} }
+func (m *GroupMember) String() string { return proto.CompactTextString(m) }
+func (*GroupMember) ProtoMessage() {}
+func (*GroupMember) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{36}
+}
+
+func (m *GroupMember) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_GroupMember.Unmarshal(m, b)
+}
+func (m *GroupMember) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_GroupMember.Marshal(b, m, deterministic)
+}
+func (m *GroupMember) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GroupMember.Merge(m, src)
+}
+func (m *GroupMember) XXX_Size() int {
+ return xxx_messageInfo_GroupMember.Size(m)
+}
+func (m *GroupMember) XXX_DiscardUnknown() {
+ xxx_messageInfo_GroupMember.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GroupMember proto.InternalMessageInfo
+
+func (m *GroupMember) GetInterfaceId() uint32 {
+ if m != nil {
+ return m.InterfaceId
+ }
+ return 0
+}
+
+func (m *GroupMember) GetInterfaceType() GroupMember_InterfaceType {
+ if m != nil {
+ return m.InterfaceType
+ }
+ return GroupMember_PON
+}
+
+func (m *GroupMember) GetGemPortId() uint32 {
+ if m != nil {
+ return m.GemPortId
+ }
+ return 0
+}
+
+func (m *GroupMember) GetPriority() uint32 {
+ if m != nil {
+ return m.Priority
+ }
+ return 0
+}
+
+type Group struct {
+ GroupId uint32 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
+ Command Group_GroupMembersCommand `protobuf:"varint,2,opt,name=command,proto3,enum=openolt.Group_GroupMembersCommand" json:"command,omitempty"`
+ Members []*GroupMember `protobuf:"bytes,3,rep,name=members,proto3" json:"members,omitempty"`
+ Action *Action `protobuf:"bytes,4,opt,name=action,proto3" json:"action,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Group) Reset() { *m = Group{} }
+func (m *Group) String() string { return proto.CompactTextString(m) }
+func (*Group) ProtoMessage() {}
+func (*Group) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{37}
+}
+
+func (m *Group) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Group.Unmarshal(m, b)
+}
+func (m *Group) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Group.Marshal(b, m, deterministic)
+}
+func (m *Group) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Group.Merge(m, src)
+}
+func (m *Group) XXX_Size() int {
+ return xxx_messageInfo_Group.Size(m)
+}
+func (m *Group) XXX_DiscardUnknown() {
+ xxx_messageInfo_Group.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Group proto.InternalMessageInfo
+
+func (m *Group) GetGroupId() uint32 {
+ if m != nil {
+ return m.GroupId
+ }
+ return 0
+}
+
+func (m *Group) GetCommand() Group_GroupMembersCommand {
+ if m != nil {
+ return m.Command
+ }
+ return Group_ADD_MEMBERS
+}
+
+func (m *Group) GetMembers() []*GroupMember {
+ if m != nil {
+ return m.Members
+ }
+ return nil
+}
+
+func (m *Group) GetAction() *Action {
+ if m != nil {
+ return m.Action
+ }
+ return nil
+}
+
+type Empty struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Empty) Reset() { *m = Empty{} }
+func (m *Empty) String() string { return proto.CompactTextString(m) }
+func (*Empty) ProtoMessage() {}
+func (*Empty) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{38}
+}
+
+func (m *Empty) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Empty.Unmarshal(m, b)
+}
+func (m *Empty) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Empty.Marshal(b, m, deterministic)
+}
+func (m *Empty) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Empty.Merge(m, src)
+}
+func (m *Empty) XXX_Size() int {
+ return xxx_messageInfo_Empty.Size(m)
+}
+func (m *Empty) XXX_DiscardUnknown() {
+ xxx_messageInfo_Empty.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Empty proto.InternalMessageInfo
+
+func init() {
+ proto.RegisterEnum("openolt.DeviceInfo_DeviceResourceRanges_Pool_PoolType", DeviceInfo_DeviceResourceRanges_Pool_PoolType_name, DeviceInfo_DeviceResourceRanges_Pool_PoolType_value)
+ proto.RegisterEnum("openolt.DeviceInfo_DeviceResourceRanges_Pool_SharingType", DeviceInfo_DeviceResourceRanges_Pool_SharingType_name, DeviceInfo_DeviceResourceRanges_Pool_SharingType_value)
+ proto.RegisterEnum("openolt.GroupMember_InterfaceType", GroupMember_InterfaceType_name, GroupMember_InterfaceType_value)
+ proto.RegisterEnum("openolt.Group_GroupMembersCommand", Group_GroupMembersCommand_name, Group_GroupMembersCommand_value)
+ proto.RegisterType((*Indication)(nil), "openolt.Indication")
+ proto.RegisterType((*AlarmIndication)(nil), "openolt.AlarmIndication")
+ proto.RegisterType((*OltIndication)(nil), "openolt.OltIndication")
+ proto.RegisterType((*IntfIndication)(nil), "openolt.IntfIndication")
+ proto.RegisterType((*OnuDiscIndication)(nil), "openolt.OnuDiscIndication")
+ proto.RegisterType((*OnuIndication)(nil), "openolt.OnuIndication")
+ proto.RegisterType((*IntfOperIndication)(nil), "openolt.IntfOperIndication")
+ proto.RegisterType((*OmciIndication)(nil), "openolt.OmciIndication")
+ proto.RegisterType((*PacketIndication)(nil), "openolt.PacketIndication")
+ proto.RegisterType((*Interface)(nil), "openolt.Interface")
+ proto.RegisterType((*Heartbeat)(nil), "openolt.Heartbeat")
+ proto.RegisterType((*Onu)(nil), "openolt.Onu")
+ proto.RegisterType((*OmciMsg)(nil), "openolt.OmciMsg")
+ proto.RegisterType((*OnuPacket)(nil), "openolt.OnuPacket")
+ proto.RegisterType((*UplinkPacket)(nil), "openolt.UplinkPacket")
+ proto.RegisterType((*DeviceInfo)(nil), "openolt.DeviceInfo")
+ proto.RegisterType((*DeviceInfo_DeviceResourceRanges)(nil), "openolt.DeviceInfo.DeviceResourceRanges")
+ proto.RegisterType((*DeviceInfo_DeviceResourceRanges_Pool)(nil), "openolt.DeviceInfo.DeviceResourceRanges.Pool")
+ proto.RegisterType((*Classifier)(nil), "openolt.Classifier")
+ proto.RegisterType((*ActionCmd)(nil), "openolt.ActionCmd")
+ proto.RegisterType((*Action)(nil), "openolt.Action")
+ proto.RegisterType((*Flow)(nil), "openolt.Flow")
+ proto.RegisterType((*SerialNumber)(nil), "openolt.SerialNumber")
+ proto.RegisterType((*PortStatistics)(nil), "openolt.PortStatistics")
+ proto.RegisterType((*FlowStatistics)(nil), "openolt.FlowStatistics")
+ proto.RegisterType((*LosIndication)(nil), "openolt.LosIndication")
+ proto.RegisterType((*DyingGaspIndication)(nil), "openolt.DyingGaspIndication")
+ proto.RegisterType((*OnuAlarmIndication)(nil), "openolt.OnuAlarmIndication")
+ proto.RegisterType((*OnuStartupFailureIndication)(nil), "openolt.OnuStartupFailureIndication")
+ proto.RegisterType((*OnuSignalDegradeIndication)(nil), "openolt.OnuSignalDegradeIndication")
+ proto.RegisterType((*OnuDriftOfWindowIndication)(nil), "openolt.OnuDriftOfWindowIndication")
+ proto.RegisterType((*OnuLossOfOmciChannelIndication)(nil), "openolt.OnuLossOfOmciChannelIndication")
+ proto.RegisterType((*OnuSignalsFailureIndication)(nil), "openolt.OnuSignalsFailureIndication")
+ proto.RegisterType((*OnuTransmissionInterferenceWarning)(nil), "openolt.OnuTransmissionInterferenceWarning")
+ proto.RegisterType((*OnuActivationFailureIndication)(nil), "openolt.OnuActivationFailureIndication")
+ proto.RegisterType((*OnuLossOfKeySyncFailureIndication)(nil), "openolt.OnuLossOfKeySyncFailureIndication")
+ proto.RegisterType((*OnuItuPonStatsIndication)(nil), "openolt.OnuItuPonStatsIndication")
+ proto.RegisterType((*OnuProcessingErrorIndication)(nil), "openolt.OnuProcessingErrorIndication")
+ proto.RegisterType((*GroupMember)(nil), "openolt.GroupMember")
+ proto.RegisterType((*Group)(nil), "openolt.Group")
+ proto.RegisterType((*Empty)(nil), "openolt.Empty")
+}
+
+func init() { proto.RegisterFile("voltha_protos/openolt.proto", fileDescriptor_c072e7aa0dfd74d5) }
+
+var fileDescriptor_c072e7aa0dfd74d5 = []byte{
+ // 3481 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x4f, 0x73, 0x1c, 0x49,
+ 0x56, 0x77, 0xab, 0xff, 0x54, 0xf7, 0xeb, 0x3f, 0x6a, 0xa7, 0x2c, 0x5b, 0x7f, 0xbc, 0xb6, 0xa6,
+ 0x30, 0x3b, 0x66, 0x60, 0xa5, 0x19, 0xcf, 0x06, 0xb0, 0xc3, 0x02, 0x23, 0xab, 0xdb, 0x56, 0x33,
+ 0x96, 0x5b, 0x94, 0xda, 0x33, 0xb0, 0xc4, 0x44, 0x6d, 0xa9, 0x2a, 0xbb, 0x95, 0xa1, 0xea, 0xca,
+ 0x9a, 0xaa, 0x6c, 0xc9, 0xba, 0x2e, 0x2c, 0x1f, 0x80, 0x0d, 0x0e, 0x70, 0x84, 0x2f, 0xb1, 0x11,
+ 0x7b, 0xe4, 0x4a, 0x70, 0xe1, 0x2b, 0x70, 0xe1, 0x0b, 0x70, 0xe2, 0x40, 0xe4, 0xcb, 0xac, 0x7f,
+ 0xdd, 0x2d, 0xd9, 0x1a, 0x4c, 0x70, 0x51, 0x74, 0xbe, 0xf7, 0x7b, 0xbf, 0xcc, 0x97, 0xf9, 0xf2,
+ 0xe5, 0xab, 0x4c, 0xc1, 0xf6, 0x05, 0xf7, 0xc5, 0x99, 0x63, 0x87, 0x11, 0x17, 0x3c, 0xde, 0xe3,
+ 0x21, 0x0d, 0xb8, 0x2f, 0x76, 0xb1, 0x49, 0x0c, 0xdd, 0xdc, 0x7a, 0x38, 0xe1, 0x7c, 0xe2, 0xd3,
+ 0x3d, 0x27, 0x64, 0x7b, 0x4e, 0x10, 0x70, 0xe1, 0x08, 0xc6, 0x83, 0x58, 0xc1, 0xb6, 0x76, 0x8a,
+ 0x1c, 0x82, 0xba, 0x67, 0xf2, 0xf7, 0x98, 0xf9, 0x54, 0x21, 0xcc, 0x7f, 0xad, 0x00, 0x0c, 0x02,
+ 0x8f, 0xb9, 0x68, 0x47, 0x3e, 0x03, 0x83, 0xfb, 0xc2, 0x66, 0x81, 0xb7, 0x51, 0xda, 0x29, 0x3d,
+ 0x6d, 0x3e, 0xbb, 0xbf, 0x9b, 0x74, 0x3c, 0xf4, 0x45, 0x06, 0x3c, 0xbc, 0x63, 0xd5, 0x38, 0x0a,
+ 0xc8, 0x8f, 0xa1, 0xce, 0x02, 0x31, 0x46, 0x9b, 0x15, 0xb4, 0x79, 0x90, 0xda, 0x0c, 0x02, 0x31,
+ 0x2e, 0x18, 0x19, 0x4c, 0x49, 0xc8, 0x3e, 0xb4, 0xd1, 0x8a, 0x87, 0x34, 0x42, 0xd3, 0x32, 0x9a,
+ 0x6e, 0x17, 0x4c, 0x87, 0x21, 0x8d, 0x0a, 0xe6, 0x4d, 0x96, 0x49, 0xc9, 0x9f, 0x40, 0x8b, 0x07,
+ 0x33, 0xdb, 0x63, 0xb1, 0x8b, 0x0c, 0x15, 0x64, 0xd8, 0xca, 0x06, 0x1c, 0xcc, 0x7a, 0x2c, 0x76,
+ 0x0b, 0x04, 0xc0, 0x53, 0x21, 0xfa, 0x1a, 0xcc, 0xd0, 0xb4, 0x3a, 0xef, 0x6b, 0x30, 0x9b, 0xf3,
+ 0x15, 0x05, 0xd2, 0x57, 0x3e, 0x75, 0x19, 0xda, 0xd4, 0xe6, 0x7c, 0x1d, 0x4e, 0x5d, 0x56, 0xf4,
+ 0x95, 0x2b, 0x09, 0xf9, 0x31, 0x18, 0xe1, 0xb9, 0x9a, 0x54, 0x03, 0x8d, 0x36, 0x53, 0xa3, 0x63,
+ 0xc7, 0x3d, 0xa7, 0x73, 0xf3, 0x1a, 0x9e, 0xe3, 0xbc, 0xfe, 0x21, 0x40, 0xc8, 0x23, 0x61, 0xc7,
+ 0xc2, 0x11, 0xf1, 0x46, 0x7d, 0xae, 0xb7, 0x63, 0x1e, 0x89, 0x13, 0xb9, 0xd8, 0xb1, 0x60, 0x6e,
+ 0x7c, 0x78, 0xc7, 0x6a, 0x84, 0x5a, 0x12, 0x4b, 0xcb, 0xb1, 0xcf, 0x2f, 0xb5, 0x65, 0x63, 0xce,
+ 0xf2, 0x85, 0xcf, 0x2f, 0x8b, 0x96, 0x63, 0x2d, 0x89, 0xc9, 0x1f, 0x40, 0xc3, 0xf1, 0x9d, 0x68,
+ 0x8a, 0x63, 0x05, 0x34, 0xdc, 0x48, 0x0d, 0xf7, 0xa5, 0xa6, 0x30, 0xd4, 0xba, 0xa3, 0x45, 0xcf,
+ 0x6b, 0x50, 0xf1, 0x1c, 0xe1, 0x98, 0xff, 0x59, 0x87, 0xd5, 0x39, 0x9c, 0x9c, 0x67, 0x9f, 0xc7,
+ 0x4b, 0x63, 0xea, 0x15, 0x8f, 0x8b, 0xbe, 0xfb, 0x28, 0x20, 0x3d, 0xe8, 0x78, 0x57, 0x2c, 0x98,
+ 0xd8, 0x13, 0x27, 0x0e, 0x73, 0x91, 0xf5, 0x30, 0xb5, 0xec, 0x49, 0xf5, 0x4b, 0x27, 0x0e, 0x0b,
+ 0xf6, 0x2d, 0x2f, 0x27, 0x96, 0x31, 0x26, 0x17, 0x38, 0xf3, 0x68, 0x3e, 0xc6, 0x86, 0xc1, 0x6c,
+ 0xd1, 0xa9, 0x26, 0xcf, 0xa4, 0xe4, 0x1b, 0xb8, 0x27, 0x29, 0x62, 0xe1, 0x44, 0x62, 0x16, 0xda,
+ 0x63, 0x87, 0xf9, 0xb9, 0x58, 0x7b, 0x92, 0x67, 0x3a, 0x51, 0x98, 0x17, 0x0e, 0xf3, 0x67, 0x11,
+ 0x2d, 0x50, 0xde, 0xe5, 0x05, 0xb5, 0x24, 0xfe, 0x19, 0xdc, 0x47, 0x62, 0x36, 0x09, 0x1c, 0xdf,
+ 0xf6, 0xe8, 0x24, 0x72, 0x3c, 0x9a, 0x8b, 0xc5, 0xdf, 0x2a, 0x50, 0x23, 0xaa, 0xa7, 0x40, 0x05,
+ 0xe6, 0x35, 0xbe, 0xa8, 0x25, 0x7f, 0x05, 0x0f, 0x70, 0x63, 0x44, 0x6c, 0x2c, 0x6c, 0x3e, 0xb6,
+ 0x2f, 0x59, 0xe0, 0xf1, 0xcb, 0x5c, 0xd0, 0x16, 0xc8, 0x7b, 0x12, 0x36, 0x1c, 0x7f, 0x83, 0xa0,
+ 0x05, 0xf2, 0x79, 0x2d, 0x19, 0x81, 0xf4, 0xc6, 0xf6, 0x79, 0x1c, 0xdb, 0xe9, 0x5e, 0x50, 0x61,
+ 0xfd, 0x71, 0x9e, 0xf6, 0x15, 0x8f, 0xe3, 0xe1, 0x58, 0x6e, 0x8a, 0x83, 0x33, 0x27, 0x08, 0xa8,
+ 0x5f, 0xa0, 0xee, 0x70, 0x8d, 0xd0, 0x5b, 0x24, 0x99, 0x67, 0x74, 0x25, 0xce, 0xe6, 0xb9, 0xbe,
+ 0x64, 0x9e, 0x15, 0xe6, 0xda, 0x79, 0xce, 0xd4, 0x92, 0x78, 0xa8, 0x92, 0x84, 0x60, 0x97, 0x6a,
+ 0xa4, 0x6a, 0x37, 0xfc, 0x6e, 0x9e, 0x70, 0x14, 0x39, 0x41, 0x3c, 0x65, 0x71, 0xcc, 0x78, 0x30,
+ 0x08, 0x04, 0x8d, 0xc6, 0x34, 0xa2, 0x81, 0x4b, 0xbf, 0x71, 0xa2, 0x80, 0x05, 0x13, 0x9d, 0x35,
+ 0x46, 0xec, 0x12, 0x47, 0xfa, 0x73, 0x35, 0xb9, 0x8e, 0x2b, 0xd8, 0x05, 0xf6, 0x9b, 0x0d, 0x16,
+ 0x16, 0x67, 0x61, 0x3f, 0x85, 0x2d, 0x1b, 0xaf, 0xf4, 0xb9, 0x88, 0x50, 0x3d, 0x6c, 0xc8, 0x1e,
+ 0xc2, 0x88, 0xbb, 0x34, 0x8e, 0xe5, 0x2e, 0xa0, 0x51, 0xc4, 0x55, 0x96, 0x6c, 0x62, 0x17, 0xbf,
+ 0x9d, 0xef, 0xe2, 0x38, 0xc5, 0xf5, 0x25, 0xac, 0xd0, 0xc1, 0x3a, 0x5f, 0xa6, 0x27, 0x14, 0x36,
+ 0xb3, 0x35, 0x1c, 0xdb, 0xf1, 0x55, 0xe0, 0x66, 0x5e, 0xb4, 0xb0, 0x8b, 0x4f, 0x16, 0xd7, 0xf2,
+ 0x2b, 0x7a, 0x75, 0x72, 0x15, 0xb8, 0xd7, 0x39, 0xa2, 0x40, 0x09, 0x42, 0x76, 0xf3, 0x06, 0xd6,
+ 0x31, 0xc1, 0x8a, 0x99, 0x1d, 0xf2, 0x40, 0xa5, 0x23, 0xec, 0xa2, 0x8d, 0x5d, 0x7c, 0x54, 0x48,
+ 0xb7, 0x62, 0x76, 0xcc, 0x03, 0xcc, 0x42, 0x0b, 0x4b, 0x5a, 0xd4, 0xa5, 0xb9, 0x66, 0x17, 0xda,
+ 0x85, 0x33, 0x89, 0xfc, 0x00, 0x00, 0x8f, 0x13, 0xd9, 0x11, 0xc5, 0x5c, 0xd3, 0xb0, 0x1a, 0x52,
+ 0x22, 0x4d, 0xa9, 0x79, 0x08, 0x9d, 0xe2, 0x79, 0x44, 0x1e, 0x80, 0xa1, 0x8e, 0x2e, 0x95, 0x99,
+ 0x0c, 0xab, 0x86, 0xc7, 0x93, 0x37, 0xc7, 0xb4, 0x32, 0xcf, 0x74, 0x06, 0x77, 0x17, 0x0e, 0x97,
+ 0xeb, 0xc9, 0xbe, 0x80, 0x76, 0x4c, 0x23, 0xe6, 0xf8, 0x76, 0x30, 0x9b, 0x9e, 0xd2, 0x48, 0xe7,
+ 0xb2, 0xf5, 0xd4, 0xfd, 0x13, 0xd4, 0xbe, 0x46, 0xa5, 0xd5, 0x8a, 0x73, 0x2d, 0xf3, 0x37, 0x25,
+ 0x68, 0x17, 0x0e, 0xa3, 0xeb, 0xbb, 0x59, 0x87, 0x1a, 0xce, 0xb6, 0xca, 0x95, 0x86, 0x55, 0x95,
+ 0x33, 0x37, 0xef, 0x4a, 0x79, 0xce, 0x15, 0xf2, 0x18, 0x9a, 0x8e, 0x37, 0x65, 0x81, 0xd6, 0x57,
+ 0x51, 0x0f, 0x28, 0x52, 0x80, 0x85, 0xd1, 0x57, 0xde, 0x7f, 0xf4, 0x3f, 0x07, 0xb2, 0x78, 0x8c,
+ 0x13, 0x02, 0x15, 0x71, 0x15, 0x26, 0x0b, 0x84, 0xbf, 0xf3, 0x5e, 0xad, 0xdc, 0xb0, 0x12, 0xf3,
+ 0xc3, 0x37, 0x2d, 0xe8, 0x14, 0xcf, 0xdd, 0x5b, 0xcf, 0x4f, 0x17, 0xca, 0xe1, 0xb9, 0x40, 0xe6,
+ 0x96, 0x25, 0x7f, 0x9a, 0xff, 0x52, 0x82, 0xee, 0xfc, 0xb9, 0x4c, 0xb6, 0xa1, 0x81, 0xb4, 0x38,
+ 0x72, 0x35, 0x4b, 0x58, 0xf6, 0x8c, 0xe6, 0x46, 0xbf, 0x10, 0x47, 0x13, 0x3a, 0xc5, 0x63, 0x3c,
+ 0xed, 0xb7, 0xa1, 0x25, 0x03, 0x4f, 0xda, 0xe1, 0x41, 0xcd, 0xd4, 0xd1, 0x64, 0x58, 0x35, 0xd9,
+ 0x54, 0x0a, 0x34, 0x0a, 0x38, 0x66, 0x6c, 0xc3, 0xaa, 0xc9, 0xe6, 0x6b, 0x4e, 0xee, 0x43, 0xcd,
+ 0xe5, 0xfc, 0x9c, 0x51, 0x4c, 0xb9, 0x35, 0x4b, 0xb7, 0x12, 0x2f, 0x2a, 0x99, 0x17, 0x4f, 0xa0,
+ 0xa1, 0x92, 0x99, 0xe3, 0x5e, 0x3f, 0x40, 0xf3, 0xa7, 0xd0, 0x38, 0xa4, 0x4e, 0x24, 0x4e, 0xa9,
+ 0x23, 0xc8, 0x1e, 0xac, 0x9d, 0x25, 0x0d, 0x95, 0x8a, 0xc5, 0x2c, 0xa2, 0xda, 0x82, 0xa4, 0xaa,
+ 0x93, 0x44, 0x63, 0xfe, 0x75, 0x09, 0xca, 0xc3, 0x60, 0x76, 0xeb, 0x39, 0x5f, 0x88, 0xa9, 0xf2,
+ 0x7b, 0xc7, 0x14, 0x7a, 0xca, 0x54, 0x14, 0x1a, 0x96, 0xfc, 0x69, 0x7e, 0x05, 0x86, 0x8c, 0x81,
+ 0xa3, 0x78, 0xf2, 0x01, 0x16, 0xff, 0x97, 0x25, 0x68, 0xc8, 0xa4, 0x8a, 0xeb, 0x7f, 0x6b, 0xbe,
+ 0xdc, 0xba, 0x55, 0x0a, 0xeb, 0x56, 0x0c, 0x84, 0xea, 0x7c, 0x20, 0x2c, 0x8e, 0xe3, 0x27, 0xd0,
+ 0x7a, 0x13, 0xfa, 0x2c, 0x38, 0x7f, 0xd7, 0x48, 0xb4, 0xe9, 0x4a, 0x66, 0xfa, 0x77, 0x0d, 0x80,
+ 0x1e, 0xbd, 0x60, 0x2e, 0x1d, 0x04, 0x63, 0x0c, 0x99, 0x0b, 0x1a, 0x78, 0x3c, 0xd2, 0x1b, 0x4e,
+ 0xb7, 0xc8, 0x3d, 0xa8, 0x4e, 0xb9, 0x47, 0x7d, 0x9d, 0xde, 0x54, 0x83, 0xfc, 0x0e, 0x74, 0xcf,
+ 0x9c, 0xc8, 0xbb, 0x74, 0x22, 0x6a, 0x5f, 0xd0, 0x48, 0x9e, 0x89, 0x7a, 0xd7, 0xad, 0x26, 0xf2,
+ 0xaf, 0x95, 0x58, 0x42, 0xc7, 0x2c, 0x9a, 0x16, 0xa0, 0x15, 0x05, 0x4d, 0xe4, 0x09, 0x74, 0x1b,
+ 0x1a, 0x1e, 0x8e, 0x48, 0x8e, 0xbf, 0xab, 0x76, 0x8f, 0x12, 0x0c, 0x3c, 0xf2, 0x29, 0xdc, 0xd3,
+ 0xca, 0x62, 0x50, 0xdc, 0x45, 0x1c, 0x51, 0xba, 0x7c, 0x44, 0x48, 0x3a, 0x79, 0xa0, 0xc8, 0xc9,
+ 0x8b, 0xf1, 0xbc, 0x32, 0xac, 0x7a, 0xc8, 0x03, 0x59, 0x13, 0xc7, 0xe4, 0x11, 0x80, 0xfc, 0xce,
+ 0x09, 0xb8, 0xcf, 0x27, 0x57, 0x49, 0x42, 0xcb, 0x24, 0x64, 0x47, 0x55, 0x04, 0xcc, 0x53, 0x55,
+ 0x9d, 0xde, 0x60, 0x80, 0x0b, 0x88, 0x45, 0x1a, 0x79, 0x08, 0xa0, 0x11, 0x54, 0xd7, 0x36, 0x86,
+ 0x55, 0x47, 0x7d, 0x3f, 0xf0, 0xc8, 0x13, 0xe8, 0x38, 0xbe, 0xcf, 0xdd, 0x8c, 0xa1, 0x8e, 0x88,
+ 0x16, 0x4a, 0x13, 0x8e, 0x1d, 0x68, 0xa5, 0x28, 0xaa, 0xeb, 0x0e, 0xc3, 0x02, 0x8d, 0x91, 0x3c,
+ 0x4f, 0xa1, 0x9b, 0x85, 0x84, 0x66, 0x02, 0x44, 0x75, 0xd2, 0xc0, 0x50, 0x5c, 0x4f, 0xa0, 0x93,
+ 0x43, 0x52, 0x5d, 0x06, 0x18, 0x56, 0x2b, 0xc5, 0x49, 0x3e, 0x13, 0xda, 0x3a, 0x99, 0x68, 0xb2,
+ 0x36, 0x82, 0x9a, 0x2a, 0xa5, 0x28, 0xa6, 0x47, 0xd0, 0x4c, 0x30, 0x92, 0xa6, 0xa3, 0xe2, 0x50,
+ 0x21, 0x24, 0xc7, 0x97, 0x50, 0x8b, 0x9c, 0x60, 0x42, 0xe3, 0x8d, 0xd5, 0x9d, 0xf2, 0xd3, 0xe6,
+ 0xb3, 0xa7, 0x59, 0xbd, 0x9d, 0x06, 0x94, 0xfe, 0x69, 0xd1, 0x98, 0xcf, 0x22, 0x97, 0x5a, 0x88,
+ 0xb7, 0xb4, 0xdd, 0xd6, 0xdf, 0x57, 0xe0, 0xde, 0x32, 0x00, 0xd9, 0x4c, 0x3e, 0x13, 0xbd, 0x78,
+ 0xa3, 0xb4, 0x53, 0x7e, 0x6a, 0xe8, 0x6f, 0x41, 0x6f, 0x7e, 0xc5, 0x56, 0x16, 0x56, 0xec, 0x00,
+ 0xaa, 0x21, 0xe7, 0x7e, 0xbc, 0x51, 0xc6, 0x41, 0xfd, 0xe8, 0x7d, 0x07, 0xb5, 0x7b, 0xcc, 0xb9,
+ 0x6f, 0x29, 0xdb, 0xad, 0xff, 0x5e, 0x81, 0x8a, 0x6c, 0x93, 0x3f, 0xcb, 0x1d, 0x3f, 0x9d, 0x67,
+ 0xbf, 0x7f, 0x2b, 0x32, 0xfc, 0x23, 0x53, 0xbe, 0x3e, 0xb6, 0x4e, 0xc0, 0x88, 0xcf, 0x9c, 0x88,
+ 0x05, 0x13, 0x1c, 0x76, 0xe7, 0xd9, 0x4f, 0x6e, 0x47, 0x77, 0xa2, 0x8c, 0x91, 0x31, 0x61, 0x92,
+ 0x1b, 0x53, 0x2d, 0xa0, 0x3a, 0x13, 0x54, 0x43, 0xee, 0x73, 0xaa, 0x3f, 0x3c, 0x0c, 0x4b, 0xfe,
+ 0x34, 0xf7, 0xa1, 0x9e, 0x0c, 0x87, 0x00, 0xd4, 0x86, 0xaf, 0xdf, 0xd8, 0x83, 0x5e, 0xf7, 0x0e,
+ 0x69, 0x41, 0x7d, 0xff, 0xd5, 0xab, 0xe1, 0x81, 0x6c, 0x95, 0x48, 0x07, 0xe0, 0x65, 0xff, 0xe8,
+ 0x78, 0x68, 0x8d, 0x64, 0x7b, 0x85, 0x34, 0xc1, 0x78, 0xf1, 0x6a, 0xf8, 0x8d, 0x6c, 0x94, 0xcd,
+ 0x33, 0x68, 0xe6, 0x86, 0x40, 0xee, 0x03, 0xe9, 0xf5, 0x7b, 0x83, 0x83, 0xfd, 0x51, 0xbf, 0x67,
+ 0x1f, 0xf7, 0x2d, 0x7b, 0xf0, 0x7a, 0xf4, 0xa2, 0x7b, 0x87, 0x3c, 0x86, 0xed, 0x93, 0xc3, 0x7d,
+ 0xab, 0xdf, 0xb3, 0x9f, 0xff, 0xa5, 0xbd, 0xff, 0xea, 0x15, 0xca, 0xf1, 0xc7, 0xa8, 0x7f, 0x70,
+ 0xd8, 0x2d, 0x91, 0x1d, 0x78, 0xb8, 0x04, 0x70, 0xb2, 0x7f, 0xd4, 0x57, 0x88, 0x15, 0xf3, 0x6f,
+ 0xca, 0x00, 0x07, 0xbe, 0x13, 0xc7, 0x6c, 0xcc, 0x68, 0x84, 0xf9, 0xd3, 0x16, 0x61, 0x9a, 0xcd,
+ 0xaa, 0x7c, 0x14, 0x32, 0x8f, 0xac, 0x41, 0x95, 0xdb, 0x17, 0x69, 0x56, 0xad, 0xf0, 0xaf, 0x19,
+ 0xe6, 0x5a, 0xa6, 0xb0, 0x7a, 0x42, 0x58, 0x82, 0x65, 0x88, 0x55, 0x53, 0x52, 0x61, 0x12, 0xfb,
+ 0x00, 0x0c, 0x6e, 0x87, 0xa7, 0x4c, 0xc4, 0x3a, 0xc9, 0xd6, 0xf8, 0xb1, 0x6c, 0x61, 0xfe, 0xd4,
+ 0x0a, 0x7d, 0xa2, 0x32, 0xa5, 0xd8, 0x84, 0x3a, 0x15, 0x67, 0xea, 0x5c, 0x57, 0x5b, 0xdd, 0xa0,
+ 0xe2, 0x2c, 0x39, 0xd6, 0xbd, 0x58, 0xd8, 0x53, 0xc7, 0xc5, 0x2d, 0xde, 0xb2, 0x6a, 0x5e, 0x2c,
+ 0x8e, 0x1c, 0x57, 0x2a, 0xe2, 0xc8, 0x45, 0x45, 0x43, 0x29, 0xe2, 0xc8, 0x95, 0x0a, 0x19, 0xe4,
+ 0xa1, 0xba, 0x6d, 0xd1, 0x7b, 0xd9, 0x60, 0xe1, 0x31, 0xde, 0xd8, 0xac, 0x83, 0xb4, 0xb6, 0x59,
+ 0xa8, 0x37, 0x6f, 0xd5, 0x8b, 0xc5, 0x20, 0x94, 0x62, 0x49, 0xc5, 0x42, 0x9d, 0xc7, 0xaa, 0x71,
+ 0xe4, 0x0e, 0x42, 0x49, 0x24, 0xc5, 0x72, 0x77, 0xeb, 0x7d, 0x2c, 0x7b, 0x94, 0x09, 0x4e, 0xaa,
+ 0x24, 0x11, 0xaa, 0xd4, 0x06, 0x96, 0xa3, 0x44, 0xd5, 0x0e, 0xb4, 0xc2, 0x73, 0x61, 0x0b, 0x67,
+ 0xa2, 0xfc, 0x59, 0x55, 0x5b, 0x29, 0x3c, 0x17, 0x23, 0x07, 0x57, 0xd8, 0xfc, 0x65, 0x19, 0x1a,
+ 0xf2, 0x8b, 0x83, 0x07, 0x07, 0x53, 0x4c, 0x19, 0x8e, 0xe7, 0xd9, 0x7c, 0x26, 0x68, 0x24, 0xad,
+ 0x70, 0x31, 0xea, 0x56, 0xd3, 0xf1, 0xbc, 0xa1, 0x94, 0x8d, 0x9c, 0x89, 0x4c, 0x53, 0x11, 0x9d,
+ 0xf2, 0x0b, 0x9a, 0x83, 0xad, 0x20, 0xac, 0xa3, 0xe4, 0x29, 0x72, 0x07, 0x5a, 0x22, 0x72, 0x42,
+ 0x5b, 0x70, 0xfb, 0x8c, 0xc7, 0x2a, 0x7c, 0xeb, 0x16, 0x48, 0xd9, 0x88, 0x1f, 0xf2, 0x58, 0x90,
+ 0xdf, 0x03, 0x12, 0xd1, 0xa9, 0x13, 0x9d, 0x6b, 0x2e, 0xb5, 0x1e, 0x15, 0xc4, 0x75, 0x95, 0x06,
+ 0xd9, 0xd4, 0xca, 0x64, 0x68, 0x16, 0x04, 0x29, 0xba, 0x9a, 0x47, 0x0f, 0xa4, 0x42, 0xa1, 0xb5,
+ 0x2f, 0x0a, 0x2a, 0x07, 0x59, 0x4b, 0x7d, 0x41, 0x54, 0xd1, 0x97, 0x0c, 0x66, 0xe4, 0x7d, 0x49,
+ 0x91, 0xbb, 0xb0, 0x26, 0xe4, 0x67, 0xa1, 0xef, 0x88, 0x3c, 0xb8, 0x8e, 0xe0, 0xbb, 0xa9, 0x6a,
+ 0x39, 0x3e, 0x9b, 0xa8, 0xc6, 0x1c, 0x3e, 0x99, 0x2b, 0xf3, 0xd7, 0x25, 0xa8, 0xa9, 0x75, 0x20,
+ 0x4f, 0xa0, 0xec, 0x4e, 0x93, 0xab, 0x11, 0x92, 0xdd, 0xb6, 0x24, 0xab, 0x64, 0x49, 0xf5, 0xf2,
+ 0x9d, 0x91, 0x8b, 0xf6, 0x72, 0x21, 0xda, 0xb3, 0xed, 0x55, 0x99, 0xdb, 0x5e, 0x6a, 0xcb, 0x54,
+ 0x8b, 0x5b, 0x66, 0xf9, 0xce, 0xc8, 0xf6, 0x9d, 0x91, 0xdb, 0x77, 0xe6, 0xaf, 0xcb, 0x50, 0x79,
+ 0xe1, 0xf3, 0x4b, 0x3c, 0x08, 0x5d, 0xf9, 0x69, 0x69, 0xe7, 0x2b, 0x93, 0x55, 0xab, 0xa5, 0xa4,
+ 0x83, 0x65, 0x95, 0xd2, 0x6a, 0x52, 0x29, 0xad, 0x43, 0x6d, 0x16, 0x30, 0x29, 0x6e, 0x2a, 0xf1,
+ 0x2c, 0x60, 0x37, 0x55, 0xc4, 0xdb, 0x80, 0xc7, 0x94, 0x8a, 0x6b, 0x55, 0x65, 0xd4, 0xa5, 0x00,
+ 0x37, 0xea, 0x26, 0xd4, 0x93, 0xc3, 0x16, 0xb7, 0xdd, 0xaa, 0x65, 0xe8, 0x83, 0x96, 0xfc, 0x10,
+ 0x56, 0x03, 0x2a, 0x2e, 0x39, 0x46, 0x91, 0x1a, 0x65, 0x15, 0x11, 0x6d, 0x2d, 0x1e, 0x2c, 0xab,
+ 0xd4, 0x6b, 0x08, 0xc9, 0x15, 0x68, 0x9f, 0x03, 0xb8, 0x69, 0xf6, 0xd2, 0xd7, 0x1d, 0x6b, 0xe9,
+ 0x5a, 0x65, 0x89, 0xcd, 0xca, 0xc1, 0xc8, 0xc7, 0x50, 0x73, 0x70, 0x15, 0xf5, 0x35, 0xc6, 0xea,
+ 0xdc, 0xe2, 0x5a, 0x5a, 0x4d, 0xb6, 0xa0, 0x1e, 0x46, 0x8c, 0x47, 0x4c, 0x5c, 0x61, 0xc8, 0xac,
+ 0x5a, 0x69, 0x3b, 0x57, 0xf1, 0xb7, 0x0a, 0x15, 0x7f, 0xae, 0xd4, 0x6c, 0x17, 0x4a, 0xcd, 0x4d,
+ 0xa8, 0x4f, 0x22, 0x3e, 0x0b, 0xa5, 0x1f, 0x3a, 0x3f, 0x60, 0x7b, 0xe0, 0x99, 0x23, 0x68, 0xcd,
+ 0xd7, 0x51, 0xaa, 0x18, 0x4c, 0x16, 0xaf, 0x65, 0xd5, 0x95, 0x60, 0xe0, 0x91, 0x8f, 0x61, 0x55,
+ 0x2b, 0xe3, 0x90, 0xba, 0x6c, 0xcc, 0x5c, 0x5d, 0x64, 0x76, 0x94, 0xf8, 0x44, 0x4b, 0xcd, 0x7f,
+ 0xab, 0x40, 0xa7, 0x78, 0x1d, 0x79, 0x7d, 0xb5, 0xba, 0x09, 0xf5, 0xe8, 0xad, 0x7d, 0x7a, 0x25,
+ 0x68, 0x8c, 0x6c, 0x35, 0xcb, 0x88, 0xde, 0x3e, 0x97, 0x4d, 0xb9, 0x02, 0xd1, 0x5b, 0x3b, 0xc4,
+ 0x72, 0x57, 0xc5, 0x73, 0xcd, 0x6a, 0x44, 0x6f, 0x55, 0xfd, 0x1b, 0xe3, 0xde, 0x7d, 0x6b, 0xcf,
+ 0x5c, 0x47, 0xe6, 0x3e, 0x0d, 0xaa, 0x20, 0xa8, 0x13, 0xbd, 0x7d, 0x23, 0xc5, 0x45, 0xe4, 0xb4,
+ 0x80, 0xac, 0x26, 0xc8, 0xa3, 0x45, 0xe4, 0x69, 0x01, 0x59, 0x4b, 0x90, 0xcf, 0x17, 0x91, 0xea,
+ 0x1e, 0x26, 0x41, 0x1a, 0x09, 0x12, 0xef, 0x55, 0x12, 0xe4, 0x26, 0xd4, 0x45, 0xe2, 0x61, 0x5d,
+ 0x79, 0x28, 0x32, 0x0f, 0x45, 0xe6, 0x61, 0x43, 0x79, 0x28, 0xf2, 0x1e, 0x8a, 0x79, 0x0f, 0x41,
+ 0xf5, 0x21, 0x16, 0x3c, 0x14, 0xf3, 0x1e, 0x36, 0x13, 0xe4, 0xd1, 0x22, 0xb2, 0xe8, 0x61, 0x2b,
+ 0x41, 0x3e, 0x5f, 0x44, 0x16, 0x3d, 0x6c, 0x27, 0xc8, 0x82, 0x87, 0x26, 0xb4, 0xa3, 0xb7, 0xb6,
+ 0x1b, 0xb9, 0x0a, 0x1d, 0x63, 0x94, 0xd5, 0xac, 0x66, 0xf4, 0xf6, 0x20, 0x72, 0x11, 0x89, 0xae,
+ 0x9e, 0xb2, 0x30, 0x01, 0xac, 0x2a, 0x57, 0x4f, 0x59, 0xa8, 0xd5, 0x0f, 0xa1, 0x21, 0xd8, 0x94,
+ 0xc6, 0xc2, 0x99, 0x86, 0xf8, 0x3d, 0x60, 0x58, 0x99, 0xc0, 0xfc, 0x4d, 0x09, 0x3a, 0xc5, 0x5b,
+ 0xea, 0x7c, 0x5e, 0x28, 0x15, 0xf2, 0xc2, 0xf7, 0x0f, 0xa8, 0xef, 0xbf, 0x50, 0x37, 0x8f, 0xfe,
+ 0x4b, 0x68, 0x17, 0xae, 0xb5, 0xaf, 0xdf, 0x0c, 0xf7, 0xa1, 0x16, 0x0b, 0x47, 0xcc, 0x62, 0x5d,
+ 0xf3, 0xea, 0x96, 0xf9, 0x2d, 0xac, 0x2d, 0xb9, 0xde, 0xbe, 0xf5, 0xc7, 0x68, 0x46, 0x5f, 0x2e,
+ 0xd0, 0xff, 0xf3, 0x0a, 0x90, 0xc5, 0x9b, 0xef, 0xef, 0x73, 0xb1, 0xe4, 0xf3, 0xd8, 0x2e, 0x74,
+ 0xd1, 0xf0, 0x79, 0x7c, 0x82, 0x02, 0xa5, 0x3e, 0x4d, 0xd4, 0x95, 0x44, 0x7d, 0xaa, 0xd5, 0x4f,
+ 0xa1, 0xeb, 0xf3, 0xd0, 0xb5, 0xa7, 0x2c, 0x4e, 0x39, 0xd4, 0xb7, 0x5a, 0x47, 0xca, 0x8f, 0x58,
+ 0x9c, 0x10, 0x7d, 0x06, 0xeb, 0x1a, 0xa9, 0x03, 0x2e, 0x81, 0xd7, 0xd4, 0xf7, 0xa1, 0x82, 0xab,
+ 0xc0, 0xd3, 0x26, 0x8f, 0xa1, 0xe9, 0xf3, 0x31, 0x4b, 0x80, 0x86, 0x2a, 0x83, 0xa4, 0x48, 0x03,
+ 0x3e, 0x82, 0x96, 0xcf, 0x9d, 0x69, 0x8a, 0xa8, 0x23, 0xa2, 0x89, 0x32, 0x05, 0x31, 0x29, 0x6c,
+ 0xdf, 0x70, 0xa9, 0xff, 0xc1, 0x16, 0xe3, 0x1f, 0x4a, 0xb0, 0x75, 0xfd, 0x0d, 0xff, 0x87, 0xea,
+ 0x86, 0x7c, 0x0e, 0xf7, 0x59, 0x20, 0x3f, 0xd2, 0xa9, 0x7d, 0xca, 0x84, 0x9e, 0xc7, 0xc8, 0x11,
+ 0x54, 0x17, 0x08, 0x6b, 0x5a, 0xfb, 0x9c, 0x09, 0x9c, 0x48, 0xcb, 0x11, 0xd4, 0xfc, 0x95, 0x1a,
+ 0xdb, 0x35, 0x0f, 0x04, 0x1f, 0x6c, 0x6c, 0xf7, 0xa0, 0x8a, 0x4f, 0x15, 0x49, 0xad, 0x82, 0x0d,
+ 0xc9, 0x1e, 0xd0, 0x4b, 0x9b, 0x7e, 0x97, 0x54, 0x2b, 0xb5, 0x80, 0x5e, 0xf6, 0xbf, 0xf3, 0xcc,
+ 0x33, 0x78, 0x74, 0xf3, 0xf3, 0xc2, 0x07, 0x5b, 0x9b, 0x7f, 0x2c, 0xa9, 0x18, 0xb8, 0xe6, 0xc1,
+ 0xe1, 0xff, 0x77, 0x71, 0x7e, 0x51, 0x02, 0xf3, 0xdd, 0x8f, 0x17, 0xff, 0xb7, 0x8b, 0x64, 0x7e,
+ 0x87, 0x6b, 0x71, 0xc3, 0x23, 0xc7, 0xad, 0xfb, 0x7f, 0x0c, 0x4d, 0x7c, 0x89, 0x88, 0xa8, 0x13,
+ 0xeb, 0xab, 0x27, 0xc3, 0x02, 0x29, 0xb2, 0x50, 0x62, 0x9e, 0xc3, 0x47, 0xef, 0x7c, 0x91, 0xf8,
+ 0x60, 0x11, 0xc0, 0x60, 0xe3, 0xba, 0xb7, 0x89, 0xef, 0x93, 0x2f, 0x23, 0x8f, 0x25, 0x47, 0xa2,
+ 0x72, 0xac, 0x11, 0x79, 0x4c, 0x1d, 0x89, 0xe6, 0x6b, 0x78, 0x78, 0xd3, 0x63, 0xce, 0x6d, 0xbb,
+ 0x33, 0xff, 0xab, 0x04, 0xcd, 0x97, 0xb2, 0xee, 0x3b, 0xa2, 0x58, 0xeb, 0x7d, 0x04, 0x2d, 0x96,
+ 0xdc, 0x07, 0x27, 0x24, 0x6d, 0x7c, 0x50, 0x57, 0xb2, 0x81, 0x47, 0x06, 0xd0, 0xc9, 0x20, 0x58,
+ 0x68, 0xab, 0x4b, 0x0d, 0x33, 0xad, 0x5b, 0x73, 0x84, 0xbb, 0xe9, 0xed, 0x32, 0xde, 0x5e, 0xb4,
+ 0x59, 0xbe, 0x49, 0x1e, 0x41, 0x73, 0x42, 0xa7, 0x76, 0x52, 0x4f, 0x97, 0xb1, 0x33, 0x59, 0x4f,
+ 0x1f, 0xab, 0x7a, 0x3a, 0x5f, 0xf1, 0x56, 0x50, 0x99, 0xb6, 0xcd, 0x3f, 0x86, 0x76, 0x81, 0x9b,
+ 0x18, 0x50, 0x3e, 0x1e, 0xbe, 0xee, 0xde, 0x21, 0x5d, 0x68, 0xf5, 0x8f, 0x87, 0xaf, 0xed, 0xcf,
+ 0x5e, 0xda, 0xc7, 0xfb, 0xa3, 0xc3, 0x6e, 0x89, 0xdc, 0x85, 0xb6, 0x92, 0x7c, 0xaa, 0x45, 0x2b,
+ 0xe6, 0xdf, 0xae, 0x40, 0x15, 0xc7, 0x59, 0xa8, 0x84, 0x95, 0xbb, 0x49, 0x25, 0x4c, 0x7e, 0x0a,
+ 0x86, 0xcb, 0xa7, 0x53, 0x47, 0xbf, 0x2c, 0x2f, 0xf8, 0x98, 0xf7, 0x34, 0x3e, 0x50, 0x48, 0x2b,
+ 0x31, 0x21, 0xbb, 0x60, 0x4c, 0x95, 0x4a, 0x5f, 0x49, 0xdd, 0x5b, 0x36, 0x43, 0x56, 0x02, 0xca,
+ 0x7d, 0x08, 0x54, 0x6e, 0xfc, 0x10, 0x30, 0xbf, 0x82, 0xb5, 0x25, 0x1d, 0x93, 0x55, 0x68, 0xee,
+ 0xf7, 0x7a, 0xf6, 0x51, 0xff, 0xe8, 0x79, 0xdf, 0x3a, 0xe9, 0xde, 0x21, 0x04, 0x3a, 0x56, 0xff,
+ 0x68, 0xf8, 0x75, 0x3f, 0x95, 0x95, 0x24, 0xe8, 0xa4, 0x3f, 0x4a, 0x05, 0x2b, 0xa6, 0x01, 0xd5,
+ 0xfe, 0x34, 0x14, 0x57, 0xcf, 0xfe, 0xa9, 0x03, 0xc6, 0x50, 0x75, 0x48, 0x7a, 0x00, 0x3d, 0x16,
+ 0x3b, 0xa7, 0x3e, 0x1d, 0xfa, 0x82, 0x74, 0xd2, 0x81, 0x20, 0x72, 0x6b, 0xae, 0x6d, 0xde, 0xff,
+ 0xc5, 0xbf, 0xff, 0xc7, 0xaf, 0x56, 0xba, 0x66, 0x73, 0xef, 0xe2, 0xb3, 0x3d, 0x6d, 0xf7, 0x45,
+ 0xe9, 0x13, 0xf2, 0x02, 0x9a, 0x16, 0xa5, 0xc1, 0xfb, 0xd2, 0x3c, 0x40, 0x9a, 0xbb, 0x66, 0x4b,
+ 0xd2, 0x24, 0x86, 0x92, 0xa7, 0x0f, 0x4d, 0x9d, 0x3c, 0xe8, 0x30, 0x98, 0x91, 0x56, 0xfe, 0x45,
+ 0x70, 0x81, 0x65, 0x03, 0x59, 0x88, 0xd9, 0x96, 0x2c, 0x7d, 0xd5, 0x79, 0x30, 0x93, 0x34, 0x87,
+ 0xd0, 0xee, 0x51, 0xe7, 0xbd, 0x89, 0x36, 0x91, 0x68, 0xcd, 0xec, 0xe4, 0xbc, 0xd2, 0x4c, 0x07,
+ 0xd0, 0xe8, 0x51, 0x9f, 0xde, 0x7a, 0x38, 0xa9, 0x91, 0x24, 0x19, 0x00, 0xe8, 0x07, 0x89, 0xe1,
+ 0x4c, 0x90, 0x6e, 0xe1, 0x3f, 0x44, 0x8e, 0xe2, 0xc9, 0xcd, 0xe3, 0xc9, 0x2c, 0x25, 0xd5, 0x10,
+ 0x5a, 0xe9, 0x6b, 0x84, 0x24, 0x23, 0x85, 0x97, 0x5f, 0x14, 0x2f, 0xd0, 0x6d, 0x23, 0xdd, 0xba,
+ 0xd9, 0x45, 0xba, 0x9c, 0xb5, 0x24, 0xfc, 0x0b, 0x58, 0xcd, 0xbf, 0x2b, 0x48, 0xce, 0xec, 0xd9,
+ 0x25, 0xaf, 0x59, 0xa0, 0x7d, 0x84, 0xb4, 0x1b, 0xe6, 0x9a, 0xa4, 0x9d, 0xe3, 0x90, 0xcc, 0x5f,
+ 0x82, 0x21, 0x8b, 0xf6, 0x7d, 0xcf, 0x23, 0xed, 0xc2, 0x3f, 0x9b, 0xdc, 0x1c, 0x55, 0xda, 0x46,
+ 0x45, 0x15, 0xc8, 0x96, 0x85, 0x57, 0x31, 0xef, 0x22, 0x29, 0x4c, 0x5a, 0x66, 0x26, 0x79, 0x4e,
+ 0xa0, 0x93, 0x3e, 0x6a, 0x1d, 0x9c, 0x51, 0xf7, 0x7c, 0x21, 0x40, 0xb3, 0x69, 0x4c, 0x81, 0xe6,
+ 0x0f, 0x90, 0xf0, 0x81, 0x49, 0x24, 0x61, 0xd1, 0x5e, 0x92, 0x1e, 0x41, 0x53, 0xc5, 0xdc, 0x31,
+ 0x0f, 0x06, 0xe3, 0xdc, 0x42, 0xa4, 0xb9, 0x6a, 0x61, 0x88, 0x5b, 0xc8, 0x78, 0xcf, 0x5c, 0xcd,
+ 0x02, 0x16, 0x8d, 0xf5, 0xc2, 0xea, 0xc8, 0x7b, 0x7f, 0xbe, 0xc2, 0xc2, 0xe6, 0xad, 0x25, 0xa1,
+ 0x05, 0xed, 0x97, 0x54, 0xe4, 0xde, 0x7d, 0xe6, 0x7d, 0x5e, 0x5b, 0x72, 0x35, 0x6d, 0x3e, 0x44,
+ 0xca, 0xfb, 0xe6, 0x5d, 0x49, 0x59, 0xb0, 0x97, 0x9c, 0x7f, 0x0a, 0x35, 0x8b, 0x9e, 0x72, 0xfe,
+ 0xee, 0x1d, 0xbe, 0x8e, 0x3c, 0xab, 0x26, 0xa8, 0x1d, 0x2e, 0x6d, 0x24, 0xc1, 0x1b, 0xb8, 0x7b,
+ 0xc0, 0x7d, 0x9f, 0xba, 0xf9, 0xcb, 0x81, 0x77, 0x71, 0xed, 0x20, 0xd7, 0x96, 0xb9, 0x2e, 0xb9,
+ 0x16, 0xcc, 0x25, 0x6d, 0x04, 0x0f, 0x0e, 0x22, 0xea, 0x08, 0x3a, 0x8a, 0x9c, 0xf1, 0x98, 0xb9,
+ 0x27, 0xee, 0x19, 0xf5, 0x66, 0xbe, 0x4c, 0xb5, 0x8f, 0x77, 0x0b, 0xff, 0xe4, 0xb6, 0x00, 0x58,
+ 0xe8, 0xed, 0x87, 0xd8, 0xdb, 0x8e, 0xb9, 0x8d, 0xbd, 0x2d, 0x67, 0xd5, 0x7d, 0xaa, 0x08, 0xfb,
+ 0xd0, 0x7d, 0x5e, 0xc3, 0x2a, 0xfb, 0x1c, 0xc3, 0x5a, 0x61, 0x44, 0x7f, 0x3e, 0xa3, 0x33, 0x1a,
+ 0x93, 0xed, 0xa5, 0xfd, 0x29, 0xe5, 0x42, 0x5f, 0x26, 0xf6, 0xf5, 0xd0, 0x7c, 0xb0, 0xe0, 0x9f,
+ 0x32, 0xd0, 0xfd, 0x14, 0x46, 0xf1, 0xbf, 0xee, 0x67, 0x09, 0x9b, 0xec, 0xe7, 0x8f, 0xa0, 0xab,
+ 0xb6, 0x41, 0xae, 0xae, 0xb9, 0x3e, 0x4c, 0x33, 0x90, 0x79, 0xe7, 0xd3, 0x12, 0xf9, 0x16, 0xd6,
+ 0x8f, 0x69, 0x34, 0xe6, 0xd1, 0x14, 0x8f, 0xc8, 0x61, 0x48, 0xa3, 0x79, 0x06, 0x54, 0x2c, 0x8c,
+ 0xec, 0x09, 0x8e, 0xec, 0x91, 0xb9, 0x29, 0x47, 0xb6, 0x94, 0xe2, 0x8b, 0xd2, 0x27, 0xcf, 0xbf,
+ 0x85, 0x6d, 0x1e, 0x4d, 0xd0, 0xd4, 0xe5, 0x91, 0xb7, 0xab, 0xfe, 0x73, 0x32, 0xa1, 0x7a, 0xde,
+ 0xfe, 0x1a, 0xdb, 0xf2, 0x18, 0x1d, 0xbe, 0x1a, 0xfd, 0x6c, 0x6f, 0xc2, 0xc4, 0xd9, 0xec, 0x74,
+ 0xd7, 0xe5, 0xd3, 0xbd, 0xc4, 0x64, 0x4f, 0x99, 0xfc, 0x48, 0xff, 0xb3, 0xe5, 0xc5, 0xe7, 0x7b,
+ 0x13, 0x9e, 0xfc, 0xdb, 0xe6, 0x71, 0xe9, 0xb4, 0x86, 0xf2, 0xcf, 0xff, 0x27, 0x00, 0x00, 0xff,
+ 0xff, 0xf2, 0x03, 0xdf, 0xca, 0xd8, 0x29, 0x00, 0x00,
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConn
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+const _ = grpc.SupportPackageIsVersion4
+
+// OpenoltClient is the client API for Openolt service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
+type OpenoltClient interface {
+ DisableOlt(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error)
+ ReenableOlt(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error)
+ ActivateOnu(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*Empty, error)
+ DeactivateOnu(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*Empty, error)
+ DeleteOnu(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*Empty, error)
+ OmciMsgOut(ctx context.Context, in *OmciMsg, opts ...grpc.CallOption) (*Empty, error)
+ OnuPacketOut(ctx context.Context, in *OnuPacket, opts ...grpc.CallOption) (*Empty, error)
+ UplinkPacketOut(ctx context.Context, in *UplinkPacket, opts ...grpc.CallOption) (*Empty, error)
+ FlowAdd(ctx context.Context, in *Flow, opts ...grpc.CallOption) (*Empty, error)
+ FlowRemove(ctx context.Context, in *Flow, opts ...grpc.CallOption) (*Empty, error)
+ HeartbeatCheck(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Heartbeat, error)
+ EnablePonIf(ctx context.Context, in *Interface, opts ...grpc.CallOption) (*Empty, error)
+ DisablePonIf(ctx context.Context, in *Interface, opts ...grpc.CallOption) (*Empty, error)
+ GetDeviceInfo(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*DeviceInfo, error)
+ Reboot(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error)
+ CollectStatistics(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error)
+ CreateTrafficSchedulers(ctx context.Context, in *tech_profile.TrafficSchedulers, opts ...grpc.CallOption) (*Empty, error)
+ RemoveTrafficSchedulers(ctx context.Context, in *tech_profile.TrafficSchedulers, opts ...grpc.CallOption) (*Empty, error)
+ CreateTrafficQueues(ctx context.Context, in *tech_profile.TrafficQueues, opts ...grpc.CallOption) (*Empty, error)
+ RemoveTrafficQueues(ctx context.Context, in *tech_profile.TrafficQueues, opts ...grpc.CallOption) (*Empty, error)
+ EnableIndication(ctx context.Context, in *Empty, opts ...grpc.CallOption) (Openolt_EnableIndicationClient, error)
+ PerformGroupOperation(ctx context.Context, in *Group, opts ...grpc.CallOption) (*Empty, error)
+}
+
+type openoltClient struct {
+ cc *grpc.ClientConn
+}
+
+func NewOpenoltClient(cc *grpc.ClientConn) OpenoltClient {
+ return &openoltClient{cc}
+}
+
+func (c *openoltClient) DisableOlt(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) {
+ out := new(Empty)
+ err := c.cc.Invoke(ctx, "/openolt.Openolt/DisableOlt", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *openoltClient) ReenableOlt(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) {
+ out := new(Empty)
+ err := c.cc.Invoke(ctx, "/openolt.Openolt/ReenableOlt", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *openoltClient) ActivateOnu(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*Empty, error) {
+ out := new(Empty)
+ err := c.cc.Invoke(ctx, "/openolt.Openolt/ActivateOnu", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *openoltClient) DeactivateOnu(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*Empty, error) {
+ out := new(Empty)
+ err := c.cc.Invoke(ctx, "/openolt.Openolt/DeactivateOnu", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *openoltClient) DeleteOnu(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*Empty, error) {
+ out := new(Empty)
+ err := c.cc.Invoke(ctx, "/openolt.Openolt/DeleteOnu", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *openoltClient) OmciMsgOut(ctx context.Context, in *OmciMsg, opts ...grpc.CallOption) (*Empty, error) {
+ out := new(Empty)
+ err := c.cc.Invoke(ctx, "/openolt.Openolt/OmciMsgOut", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *openoltClient) OnuPacketOut(ctx context.Context, in *OnuPacket, opts ...grpc.CallOption) (*Empty, error) {
+ out := new(Empty)
+ err := c.cc.Invoke(ctx, "/openolt.Openolt/OnuPacketOut", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *openoltClient) UplinkPacketOut(ctx context.Context, in *UplinkPacket, opts ...grpc.CallOption) (*Empty, error) {
+ out := new(Empty)
+ err := c.cc.Invoke(ctx, "/openolt.Openolt/UplinkPacketOut", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *openoltClient) FlowAdd(ctx context.Context, in *Flow, opts ...grpc.CallOption) (*Empty, error) {
+ out := new(Empty)
+ err := c.cc.Invoke(ctx, "/openolt.Openolt/FlowAdd", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *openoltClient) FlowRemove(ctx context.Context, in *Flow, opts ...grpc.CallOption) (*Empty, error) {
+ out := new(Empty)
+ err := c.cc.Invoke(ctx, "/openolt.Openolt/FlowRemove", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *openoltClient) HeartbeatCheck(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Heartbeat, error) {
+ out := new(Heartbeat)
+ err := c.cc.Invoke(ctx, "/openolt.Openolt/HeartbeatCheck", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *openoltClient) EnablePonIf(ctx context.Context, in *Interface, opts ...grpc.CallOption) (*Empty, error) {
+ out := new(Empty)
+ err := c.cc.Invoke(ctx, "/openolt.Openolt/EnablePonIf", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *openoltClient) DisablePonIf(ctx context.Context, in *Interface, opts ...grpc.CallOption) (*Empty, error) {
+ out := new(Empty)
+ err := c.cc.Invoke(ctx, "/openolt.Openolt/DisablePonIf", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *openoltClient) GetDeviceInfo(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*DeviceInfo, error) {
+ out := new(DeviceInfo)
+ err := c.cc.Invoke(ctx, "/openolt.Openolt/GetDeviceInfo", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *openoltClient) Reboot(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) {
+ out := new(Empty)
+ err := c.cc.Invoke(ctx, "/openolt.Openolt/Reboot", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *openoltClient) CollectStatistics(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) {
+ out := new(Empty)
+ err := c.cc.Invoke(ctx, "/openolt.Openolt/CollectStatistics", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *openoltClient) CreateTrafficSchedulers(ctx context.Context, in *tech_profile.TrafficSchedulers, opts ...grpc.CallOption) (*Empty, error) {
+ out := new(Empty)
+ err := c.cc.Invoke(ctx, "/openolt.Openolt/CreateTrafficSchedulers", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *openoltClient) RemoveTrafficSchedulers(ctx context.Context, in *tech_profile.TrafficSchedulers, opts ...grpc.CallOption) (*Empty, error) {
+ out := new(Empty)
+ err := c.cc.Invoke(ctx, "/openolt.Openolt/RemoveTrafficSchedulers", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *openoltClient) CreateTrafficQueues(ctx context.Context, in *tech_profile.TrafficQueues, opts ...grpc.CallOption) (*Empty, error) {
+ out := new(Empty)
+ err := c.cc.Invoke(ctx, "/openolt.Openolt/CreateTrafficQueues", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *openoltClient) RemoveTrafficQueues(ctx context.Context, in *tech_profile.TrafficQueues, opts ...grpc.CallOption) (*Empty, error) {
+ out := new(Empty)
+ err := c.cc.Invoke(ctx, "/openolt.Openolt/RemoveTrafficQueues", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *openoltClient) EnableIndication(ctx context.Context, in *Empty, opts ...grpc.CallOption) (Openolt_EnableIndicationClient, error) {
+ stream, err := c.cc.NewStream(ctx, &_Openolt_serviceDesc.Streams[0], "/openolt.Openolt/EnableIndication", opts...)
+ if err != nil {
+ return nil, err
+ }
+ x := &openoltEnableIndicationClient{stream}
+ if err := x.ClientStream.SendMsg(in); err != nil {
+ return nil, err
+ }
+ if err := x.ClientStream.CloseSend(); err != nil {
+ return nil, err
+ }
+ return x, nil
+}
+
+type Openolt_EnableIndicationClient interface {
+ Recv() (*Indication, error)
+ grpc.ClientStream
+}
+
+type openoltEnableIndicationClient struct {
+ grpc.ClientStream
+}
+
+func (x *openoltEnableIndicationClient) Recv() (*Indication, error) {
+ m := new(Indication)
+ if err := x.ClientStream.RecvMsg(m); err != nil {
+ return nil, err
+ }
+ return m, nil
+}
+
+func (c *openoltClient) PerformGroupOperation(ctx context.Context, in *Group, opts ...grpc.CallOption) (*Empty, error) {
+ out := new(Empty)
+ err := c.cc.Invoke(ctx, "/openolt.Openolt/PerformGroupOperation", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// OpenoltServer is the server API for Openolt service.
+type OpenoltServer interface {
+ DisableOlt(context.Context, *Empty) (*Empty, error)
+ ReenableOlt(context.Context, *Empty) (*Empty, error)
+ ActivateOnu(context.Context, *Onu) (*Empty, error)
+ DeactivateOnu(context.Context, *Onu) (*Empty, error)
+ DeleteOnu(context.Context, *Onu) (*Empty, error)
+ OmciMsgOut(context.Context, *OmciMsg) (*Empty, error)
+ OnuPacketOut(context.Context, *OnuPacket) (*Empty, error)
+ UplinkPacketOut(context.Context, *UplinkPacket) (*Empty, error)
+ FlowAdd(context.Context, *Flow) (*Empty, error)
+ FlowRemove(context.Context, *Flow) (*Empty, error)
+ HeartbeatCheck(context.Context, *Empty) (*Heartbeat, error)
+ EnablePonIf(context.Context, *Interface) (*Empty, error)
+ DisablePonIf(context.Context, *Interface) (*Empty, error)
+ GetDeviceInfo(context.Context, *Empty) (*DeviceInfo, error)
+ Reboot(context.Context, *Empty) (*Empty, error)
+ CollectStatistics(context.Context, *Empty) (*Empty, error)
+ CreateTrafficSchedulers(context.Context, *tech_profile.TrafficSchedulers) (*Empty, error)
+ RemoveTrafficSchedulers(context.Context, *tech_profile.TrafficSchedulers) (*Empty, error)
+ CreateTrafficQueues(context.Context, *tech_profile.TrafficQueues) (*Empty, error)
+ RemoveTrafficQueues(context.Context, *tech_profile.TrafficQueues) (*Empty, error)
+ EnableIndication(*Empty, Openolt_EnableIndicationServer) error
+ PerformGroupOperation(context.Context, *Group) (*Empty, error)
+}
+
+func RegisterOpenoltServer(s *grpc.Server, srv OpenoltServer) {
+ s.RegisterService(&_Openolt_serviceDesc, srv)
+}
+
+func _Openolt_DisableOlt_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(OpenoltServer).DisableOlt(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/openolt.Openolt/DisableOlt",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(OpenoltServer).DisableOlt(ctx, req.(*Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_ReenableOlt_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(OpenoltServer).ReenableOlt(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/openolt.Openolt/ReenableOlt",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(OpenoltServer).ReenableOlt(ctx, req.(*Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_ActivateOnu_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Onu)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(OpenoltServer).ActivateOnu(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/openolt.Openolt/ActivateOnu",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(OpenoltServer).ActivateOnu(ctx, req.(*Onu))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_DeactivateOnu_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Onu)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(OpenoltServer).DeactivateOnu(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/openolt.Openolt/DeactivateOnu",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(OpenoltServer).DeactivateOnu(ctx, req.(*Onu))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_DeleteOnu_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Onu)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(OpenoltServer).DeleteOnu(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/openolt.Openolt/DeleteOnu",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(OpenoltServer).DeleteOnu(ctx, req.(*Onu))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_OmciMsgOut_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(OmciMsg)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(OpenoltServer).OmciMsgOut(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/openolt.Openolt/OmciMsgOut",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(OpenoltServer).OmciMsgOut(ctx, req.(*OmciMsg))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_OnuPacketOut_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(OnuPacket)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(OpenoltServer).OnuPacketOut(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/openolt.Openolt/OnuPacketOut",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(OpenoltServer).OnuPacketOut(ctx, req.(*OnuPacket))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_UplinkPacketOut_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(UplinkPacket)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(OpenoltServer).UplinkPacketOut(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/openolt.Openolt/UplinkPacketOut",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(OpenoltServer).UplinkPacketOut(ctx, req.(*UplinkPacket))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_FlowAdd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Flow)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(OpenoltServer).FlowAdd(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/openolt.Openolt/FlowAdd",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(OpenoltServer).FlowAdd(ctx, req.(*Flow))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_FlowRemove_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Flow)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(OpenoltServer).FlowRemove(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/openolt.Openolt/FlowRemove",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(OpenoltServer).FlowRemove(ctx, req.(*Flow))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_HeartbeatCheck_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(OpenoltServer).HeartbeatCheck(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/openolt.Openolt/HeartbeatCheck",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(OpenoltServer).HeartbeatCheck(ctx, req.(*Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_EnablePonIf_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Interface)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(OpenoltServer).EnablePonIf(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/openolt.Openolt/EnablePonIf",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(OpenoltServer).EnablePonIf(ctx, req.(*Interface))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_DisablePonIf_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Interface)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(OpenoltServer).DisablePonIf(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/openolt.Openolt/DisablePonIf",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(OpenoltServer).DisablePonIf(ctx, req.(*Interface))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_GetDeviceInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(OpenoltServer).GetDeviceInfo(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/openolt.Openolt/GetDeviceInfo",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(OpenoltServer).GetDeviceInfo(ctx, req.(*Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_Reboot_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(OpenoltServer).Reboot(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/openolt.Openolt/Reboot",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(OpenoltServer).Reboot(ctx, req.(*Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_CollectStatistics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(OpenoltServer).CollectStatistics(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/openolt.Openolt/CollectStatistics",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(OpenoltServer).CollectStatistics(ctx, req.(*Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_CreateTrafficSchedulers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(tech_profile.TrafficSchedulers)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(OpenoltServer).CreateTrafficSchedulers(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/openolt.Openolt/CreateTrafficSchedulers",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(OpenoltServer).CreateTrafficSchedulers(ctx, req.(*tech_profile.TrafficSchedulers))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_RemoveTrafficSchedulers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(tech_profile.TrafficSchedulers)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(OpenoltServer).RemoveTrafficSchedulers(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/openolt.Openolt/RemoveTrafficSchedulers",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(OpenoltServer).RemoveTrafficSchedulers(ctx, req.(*tech_profile.TrafficSchedulers))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_CreateTrafficQueues_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(tech_profile.TrafficQueues)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(OpenoltServer).CreateTrafficQueues(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/openolt.Openolt/CreateTrafficQueues",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(OpenoltServer).CreateTrafficQueues(ctx, req.(*tech_profile.TrafficQueues))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_RemoveTrafficQueues_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(tech_profile.TrafficQueues)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(OpenoltServer).RemoveTrafficQueues(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/openolt.Openolt/RemoveTrafficQueues",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(OpenoltServer).RemoveTrafficQueues(ctx, req.(*tech_profile.TrafficQueues))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_EnableIndication_Handler(srv interface{}, stream grpc.ServerStream) error {
+ m := new(Empty)
+ if err := stream.RecvMsg(m); err != nil {
+ return err
+ }
+ return srv.(OpenoltServer).EnableIndication(m, &openoltEnableIndicationServer{stream})
+}
+
+type Openolt_EnableIndicationServer interface {
+ Send(*Indication) error
+ grpc.ServerStream
+}
+
+type openoltEnableIndicationServer struct {
+ grpc.ServerStream
+}
+
+func (x *openoltEnableIndicationServer) Send(m *Indication) error {
+ return x.ServerStream.SendMsg(m)
+}
+
+func _Openolt_PerformGroupOperation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Group)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(OpenoltServer).PerformGroupOperation(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/openolt.Openolt/PerformGroupOperation",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(OpenoltServer).PerformGroupOperation(ctx, req.(*Group))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+var _Openolt_serviceDesc = grpc.ServiceDesc{
+ ServiceName: "openolt.Openolt",
+ HandlerType: (*OpenoltServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "DisableOlt",
+ Handler: _Openolt_DisableOlt_Handler,
+ },
+ {
+ MethodName: "ReenableOlt",
+ Handler: _Openolt_ReenableOlt_Handler,
+ },
+ {
+ MethodName: "ActivateOnu",
+ Handler: _Openolt_ActivateOnu_Handler,
+ },
+ {
+ MethodName: "DeactivateOnu",
+ Handler: _Openolt_DeactivateOnu_Handler,
+ },
+ {
+ MethodName: "DeleteOnu",
+ Handler: _Openolt_DeleteOnu_Handler,
+ },
+ {
+ MethodName: "OmciMsgOut",
+ Handler: _Openolt_OmciMsgOut_Handler,
+ },
+ {
+ MethodName: "OnuPacketOut",
+ Handler: _Openolt_OnuPacketOut_Handler,
+ },
+ {
+ MethodName: "UplinkPacketOut",
+ Handler: _Openolt_UplinkPacketOut_Handler,
+ },
+ {
+ MethodName: "FlowAdd",
+ Handler: _Openolt_FlowAdd_Handler,
+ },
+ {
+ MethodName: "FlowRemove",
+ Handler: _Openolt_FlowRemove_Handler,
+ },
+ {
+ MethodName: "HeartbeatCheck",
+ Handler: _Openolt_HeartbeatCheck_Handler,
+ },
+ {
+ MethodName: "EnablePonIf",
+ Handler: _Openolt_EnablePonIf_Handler,
+ },
+ {
+ MethodName: "DisablePonIf",
+ Handler: _Openolt_DisablePonIf_Handler,
+ },
+ {
+ MethodName: "GetDeviceInfo",
+ Handler: _Openolt_GetDeviceInfo_Handler,
+ },
+ {
+ MethodName: "Reboot",
+ Handler: _Openolt_Reboot_Handler,
+ },
+ {
+ MethodName: "CollectStatistics",
+ Handler: _Openolt_CollectStatistics_Handler,
+ },
+ {
+ MethodName: "CreateTrafficSchedulers",
+ Handler: _Openolt_CreateTrafficSchedulers_Handler,
+ },
+ {
+ MethodName: "RemoveTrafficSchedulers",
+ Handler: _Openolt_RemoveTrafficSchedulers_Handler,
+ },
+ {
+ MethodName: "CreateTrafficQueues",
+ Handler: _Openolt_CreateTrafficQueues_Handler,
+ },
+ {
+ MethodName: "RemoveTrafficQueues",
+ Handler: _Openolt_RemoveTrafficQueues_Handler,
+ },
+ {
+ MethodName: "PerformGroupOperation",
+ Handler: _Openolt_PerformGroupOperation_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{
+ {
+ StreamName: "EnableIndication",
+ Handler: _Openolt_EnableIndication_Handler,
+ ServerStreams: true,
+ },
+ },
+ Metadata: "voltha_protos/openolt.proto",
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/tech_profile/tech_profile.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/tech_profile/tech_profile.pb.go
new file mode 100644
index 0000000..f74a616
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/tech_profile/tech_profile.pb.go
@@ -0,0 +1,972 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: voltha_protos/tech_profile.proto
+
+package tech_profile
+
+import (
+ fmt "fmt"
+ proto "github.com/golang/protobuf/proto"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+type Direction int32
+
+const (
+ Direction_UPSTREAM Direction = 0
+ Direction_DOWNSTREAM Direction = 1
+ Direction_BIDIRECTIONAL Direction = 2
+)
+
+var Direction_name = map[int32]string{
+ 0: "UPSTREAM",
+ 1: "DOWNSTREAM",
+ 2: "BIDIRECTIONAL",
+}
+
+var Direction_value = map[string]int32{
+ "UPSTREAM": 0,
+ "DOWNSTREAM": 1,
+ "BIDIRECTIONAL": 2,
+}
+
+func (x Direction) String() string {
+ return proto.EnumName(Direction_name, int32(x))
+}
+
+func (Direction) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_d019a68bffe14cae, []int{0}
+}
+
+type SchedulingPolicy int32
+
+const (
+ SchedulingPolicy_WRR SchedulingPolicy = 0
+ SchedulingPolicy_StrictPriority SchedulingPolicy = 1
+ SchedulingPolicy_Hybrid SchedulingPolicy = 2
+)
+
+var SchedulingPolicy_name = map[int32]string{
+ 0: "WRR",
+ 1: "StrictPriority",
+ 2: "Hybrid",
+}
+
+var SchedulingPolicy_value = map[string]int32{
+ "WRR": 0,
+ "StrictPriority": 1,
+ "Hybrid": 2,
+}
+
+func (x SchedulingPolicy) String() string {
+ return proto.EnumName(SchedulingPolicy_name, int32(x))
+}
+
+func (SchedulingPolicy) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_d019a68bffe14cae, []int{1}
+}
+
+type AdditionalBW int32
+
+const (
+ AdditionalBW_AdditionalBW_None AdditionalBW = 0
+ AdditionalBW_AdditionalBW_NA AdditionalBW = 1
+ AdditionalBW_AdditionalBW_BestEffort AdditionalBW = 2
+ AdditionalBW_AdditionalBW_Auto AdditionalBW = 3
+)
+
+var AdditionalBW_name = map[int32]string{
+ 0: "AdditionalBW_None",
+ 1: "AdditionalBW_NA",
+ 2: "AdditionalBW_BestEffort",
+ 3: "AdditionalBW_Auto",
+}
+
+var AdditionalBW_value = map[string]int32{
+ "AdditionalBW_None": 0,
+ "AdditionalBW_NA": 1,
+ "AdditionalBW_BestEffort": 2,
+ "AdditionalBW_Auto": 3,
+}
+
+func (x AdditionalBW) String() string {
+ return proto.EnumName(AdditionalBW_name, int32(x))
+}
+
+func (AdditionalBW) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_d019a68bffe14cae, []int{2}
+}
+
+type DiscardPolicy int32
+
+const (
+ DiscardPolicy_TailDrop DiscardPolicy = 0
+ DiscardPolicy_WTailDrop DiscardPolicy = 1
+ DiscardPolicy_Red DiscardPolicy = 2
+ DiscardPolicy_WRed DiscardPolicy = 3
+)
+
+var DiscardPolicy_name = map[int32]string{
+ 0: "TailDrop",
+ 1: "WTailDrop",
+ 2: "Red",
+ 3: "WRed",
+}
+
+var DiscardPolicy_value = map[string]int32{
+ "TailDrop": 0,
+ "WTailDrop": 1,
+ "Red": 2,
+ "WRed": 3,
+}
+
+func (x DiscardPolicy) String() string {
+ return proto.EnumName(DiscardPolicy_name, int32(x))
+}
+
+func (DiscardPolicy) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_d019a68bffe14cae, []int{3}
+}
+
+type InferredAdditionBWIndication int32
+
+const (
+ InferredAdditionBWIndication_InferredAdditionBWIndication_None InferredAdditionBWIndication = 0
+ InferredAdditionBWIndication_InferredAdditionBWIndication_Assured InferredAdditionBWIndication = 1
+ InferredAdditionBWIndication_InferredAdditionBWIndication_BestEffort InferredAdditionBWIndication = 2
+)
+
+var InferredAdditionBWIndication_name = map[int32]string{
+ 0: "InferredAdditionBWIndication_None",
+ 1: "InferredAdditionBWIndication_Assured",
+ 2: "InferredAdditionBWIndication_BestEffort",
+}
+
+var InferredAdditionBWIndication_value = map[string]int32{
+ "InferredAdditionBWIndication_None": 0,
+ "InferredAdditionBWIndication_Assured": 1,
+ "InferredAdditionBWIndication_BestEffort": 2,
+}
+
+func (x InferredAdditionBWIndication) String() string {
+ return proto.EnumName(InferredAdditionBWIndication_name, int32(x))
+}
+
+func (InferredAdditionBWIndication) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_d019a68bffe14cae, []int{4}
+}
+
+type SchedulerConfig struct {
+ Direction Direction `protobuf:"varint,1,opt,name=direction,proto3,enum=tech_profile.Direction" json:"direction,omitempty"`
+ AdditionalBw AdditionalBW `protobuf:"varint,2,opt,name=additional_bw,json=additionalBw,proto3,enum=tech_profile.AdditionalBW" json:"additional_bw,omitempty"`
+ Priority uint32 `protobuf:"fixed32,3,opt,name=priority,proto3" json:"priority,omitempty"`
+ Weight uint32 `protobuf:"fixed32,4,opt,name=weight,proto3" json:"weight,omitempty"`
+ SchedPolicy SchedulingPolicy `protobuf:"varint,5,opt,name=sched_policy,json=schedPolicy,proto3,enum=tech_profile.SchedulingPolicy" json:"sched_policy,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *SchedulerConfig) Reset() { *m = SchedulerConfig{} }
+func (m *SchedulerConfig) String() string { return proto.CompactTextString(m) }
+func (*SchedulerConfig) ProtoMessage() {}
+func (*SchedulerConfig) Descriptor() ([]byte, []int) {
+ return fileDescriptor_d019a68bffe14cae, []int{0}
+}
+
+func (m *SchedulerConfig) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_SchedulerConfig.Unmarshal(m, b)
+}
+func (m *SchedulerConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_SchedulerConfig.Marshal(b, m, deterministic)
+}
+func (m *SchedulerConfig) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_SchedulerConfig.Merge(m, src)
+}
+func (m *SchedulerConfig) XXX_Size() int {
+ return xxx_messageInfo_SchedulerConfig.Size(m)
+}
+func (m *SchedulerConfig) XXX_DiscardUnknown() {
+ xxx_messageInfo_SchedulerConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SchedulerConfig proto.InternalMessageInfo
+
+func (m *SchedulerConfig) GetDirection() Direction {
+ if m != nil {
+ return m.Direction
+ }
+ return Direction_UPSTREAM
+}
+
+func (m *SchedulerConfig) GetAdditionalBw() AdditionalBW {
+ if m != nil {
+ return m.AdditionalBw
+ }
+ return AdditionalBW_AdditionalBW_None
+}
+
+func (m *SchedulerConfig) GetPriority() uint32 {
+ if m != nil {
+ return m.Priority
+ }
+ return 0
+}
+
+func (m *SchedulerConfig) GetWeight() uint32 {
+ if m != nil {
+ return m.Weight
+ }
+ return 0
+}
+
+func (m *SchedulerConfig) GetSchedPolicy() SchedulingPolicy {
+ if m != nil {
+ return m.SchedPolicy
+ }
+ return SchedulingPolicy_WRR
+}
+
+type TrafficShapingInfo struct {
+ Cir uint32 `protobuf:"fixed32,1,opt,name=cir,proto3" json:"cir,omitempty"`
+ Cbs uint32 `protobuf:"fixed32,2,opt,name=cbs,proto3" json:"cbs,omitempty"`
+ Pir uint32 `protobuf:"fixed32,3,opt,name=pir,proto3" json:"pir,omitempty"`
+ Pbs uint32 `protobuf:"fixed32,4,opt,name=pbs,proto3" json:"pbs,omitempty"`
+ Gir uint32 `protobuf:"fixed32,5,opt,name=gir,proto3" json:"gir,omitempty"`
+ AddBwInd InferredAdditionBWIndication `protobuf:"varint,6,opt,name=add_bw_ind,json=addBwInd,proto3,enum=tech_profile.InferredAdditionBWIndication" json:"add_bw_ind,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *TrafficShapingInfo) Reset() { *m = TrafficShapingInfo{} }
+func (m *TrafficShapingInfo) String() string { return proto.CompactTextString(m) }
+func (*TrafficShapingInfo) ProtoMessage() {}
+func (*TrafficShapingInfo) Descriptor() ([]byte, []int) {
+ return fileDescriptor_d019a68bffe14cae, []int{1}
+}
+
+func (m *TrafficShapingInfo) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_TrafficShapingInfo.Unmarshal(m, b)
+}
+func (m *TrafficShapingInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_TrafficShapingInfo.Marshal(b, m, deterministic)
+}
+func (m *TrafficShapingInfo) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_TrafficShapingInfo.Merge(m, src)
+}
+func (m *TrafficShapingInfo) XXX_Size() int {
+ return xxx_messageInfo_TrafficShapingInfo.Size(m)
+}
+func (m *TrafficShapingInfo) XXX_DiscardUnknown() {
+ xxx_messageInfo_TrafficShapingInfo.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TrafficShapingInfo proto.InternalMessageInfo
+
+func (m *TrafficShapingInfo) GetCir() uint32 {
+ if m != nil {
+ return m.Cir
+ }
+ return 0
+}
+
+func (m *TrafficShapingInfo) GetCbs() uint32 {
+ if m != nil {
+ return m.Cbs
+ }
+ return 0
+}
+
+func (m *TrafficShapingInfo) GetPir() uint32 {
+ if m != nil {
+ return m.Pir
+ }
+ return 0
+}
+
+func (m *TrafficShapingInfo) GetPbs() uint32 {
+ if m != nil {
+ return m.Pbs
+ }
+ return 0
+}
+
+func (m *TrafficShapingInfo) GetGir() uint32 {
+ if m != nil {
+ return m.Gir
+ }
+ return 0
+}
+
+func (m *TrafficShapingInfo) GetAddBwInd() InferredAdditionBWIndication {
+ if m != nil {
+ return m.AddBwInd
+ }
+ return InferredAdditionBWIndication_InferredAdditionBWIndication_None
+}
+
+type TrafficScheduler struct {
+ Direction Direction `protobuf:"varint,1,opt,name=direction,proto3,enum=tech_profile.Direction" json:"direction,omitempty"`
+ AllocId uint32 `protobuf:"fixed32,2,opt,name=alloc_id,json=allocId,proto3" json:"alloc_id,omitempty"`
+ Scheduler *SchedulerConfig `protobuf:"bytes,3,opt,name=scheduler,proto3" json:"scheduler,omitempty"`
+ TrafficShapingInfo *TrafficShapingInfo `protobuf:"bytes,4,opt,name=traffic_shaping_info,json=trafficShapingInfo,proto3" json:"traffic_shaping_info,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *TrafficScheduler) Reset() { *m = TrafficScheduler{} }
+func (m *TrafficScheduler) String() string { return proto.CompactTextString(m) }
+func (*TrafficScheduler) ProtoMessage() {}
+func (*TrafficScheduler) Descriptor() ([]byte, []int) {
+ return fileDescriptor_d019a68bffe14cae, []int{2}
+}
+
+func (m *TrafficScheduler) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_TrafficScheduler.Unmarshal(m, b)
+}
+func (m *TrafficScheduler) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_TrafficScheduler.Marshal(b, m, deterministic)
+}
+func (m *TrafficScheduler) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_TrafficScheduler.Merge(m, src)
+}
+func (m *TrafficScheduler) XXX_Size() int {
+ return xxx_messageInfo_TrafficScheduler.Size(m)
+}
+func (m *TrafficScheduler) XXX_DiscardUnknown() {
+ xxx_messageInfo_TrafficScheduler.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TrafficScheduler proto.InternalMessageInfo
+
+func (m *TrafficScheduler) GetDirection() Direction {
+ if m != nil {
+ return m.Direction
+ }
+ return Direction_UPSTREAM
+}
+
+func (m *TrafficScheduler) GetAllocId() uint32 {
+ if m != nil {
+ return m.AllocId
+ }
+ return 0
+}
+
+func (m *TrafficScheduler) GetScheduler() *SchedulerConfig {
+ if m != nil {
+ return m.Scheduler
+ }
+ return nil
+}
+
+func (m *TrafficScheduler) GetTrafficShapingInfo() *TrafficShapingInfo {
+ if m != nil {
+ return m.TrafficShapingInfo
+ }
+ return nil
+}
+
+type TrafficSchedulers struct {
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ OnuId uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+ UniId uint32 `protobuf:"fixed32,4,opt,name=uni_id,json=uniId,proto3" json:"uni_id,omitempty"`
+ PortNo uint32 `protobuf:"fixed32,5,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+ TrafficScheds []*TrafficScheduler `protobuf:"bytes,3,rep,name=traffic_scheds,json=trafficScheds,proto3" json:"traffic_scheds,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *TrafficSchedulers) Reset() { *m = TrafficSchedulers{} }
+func (m *TrafficSchedulers) String() string { return proto.CompactTextString(m) }
+func (*TrafficSchedulers) ProtoMessage() {}
+func (*TrafficSchedulers) Descriptor() ([]byte, []int) {
+ return fileDescriptor_d019a68bffe14cae, []int{3}
+}
+
+func (m *TrafficSchedulers) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_TrafficSchedulers.Unmarshal(m, b)
+}
+func (m *TrafficSchedulers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_TrafficSchedulers.Marshal(b, m, deterministic)
+}
+func (m *TrafficSchedulers) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_TrafficSchedulers.Merge(m, src)
+}
+func (m *TrafficSchedulers) XXX_Size() int {
+ return xxx_messageInfo_TrafficSchedulers.Size(m)
+}
+func (m *TrafficSchedulers) XXX_DiscardUnknown() {
+ xxx_messageInfo_TrafficSchedulers.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TrafficSchedulers proto.InternalMessageInfo
+
+func (m *TrafficSchedulers) GetIntfId() uint32 {
+ if m != nil {
+ return m.IntfId
+ }
+ return 0
+}
+
+func (m *TrafficSchedulers) GetOnuId() uint32 {
+ if m != nil {
+ return m.OnuId
+ }
+ return 0
+}
+
+func (m *TrafficSchedulers) GetUniId() uint32 {
+ if m != nil {
+ return m.UniId
+ }
+ return 0
+}
+
+func (m *TrafficSchedulers) GetPortNo() uint32 {
+ if m != nil {
+ return m.PortNo
+ }
+ return 0
+}
+
+func (m *TrafficSchedulers) GetTrafficScheds() []*TrafficScheduler {
+ if m != nil {
+ return m.TrafficScheds
+ }
+ return nil
+}
+
+type TailDropDiscardConfig struct {
+ QueueSize uint32 `protobuf:"fixed32,1,opt,name=queue_size,json=queueSize,proto3" json:"queue_size,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *TailDropDiscardConfig) Reset() { *m = TailDropDiscardConfig{} }
+func (m *TailDropDiscardConfig) String() string { return proto.CompactTextString(m) }
+func (*TailDropDiscardConfig) ProtoMessage() {}
+func (*TailDropDiscardConfig) Descriptor() ([]byte, []int) {
+ return fileDescriptor_d019a68bffe14cae, []int{4}
+}
+
+func (m *TailDropDiscardConfig) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_TailDropDiscardConfig.Unmarshal(m, b)
+}
+func (m *TailDropDiscardConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_TailDropDiscardConfig.Marshal(b, m, deterministic)
+}
+func (m *TailDropDiscardConfig) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_TailDropDiscardConfig.Merge(m, src)
+}
+func (m *TailDropDiscardConfig) XXX_Size() int {
+ return xxx_messageInfo_TailDropDiscardConfig.Size(m)
+}
+func (m *TailDropDiscardConfig) XXX_DiscardUnknown() {
+ xxx_messageInfo_TailDropDiscardConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TailDropDiscardConfig proto.InternalMessageInfo
+
+func (m *TailDropDiscardConfig) GetQueueSize() uint32 {
+ if m != nil {
+ return m.QueueSize
+ }
+ return 0
+}
+
+type RedDiscardConfig struct {
+ MinThreshold uint32 `protobuf:"fixed32,1,opt,name=min_threshold,json=minThreshold,proto3" json:"min_threshold,omitempty"`
+ MaxThreshold uint32 `protobuf:"fixed32,2,opt,name=max_threshold,json=maxThreshold,proto3" json:"max_threshold,omitempty"`
+ MaxProbability uint32 `protobuf:"fixed32,3,opt,name=max_probability,json=maxProbability,proto3" json:"max_probability,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *RedDiscardConfig) Reset() { *m = RedDiscardConfig{} }
+func (m *RedDiscardConfig) String() string { return proto.CompactTextString(m) }
+func (*RedDiscardConfig) ProtoMessage() {}
+func (*RedDiscardConfig) Descriptor() ([]byte, []int) {
+ return fileDescriptor_d019a68bffe14cae, []int{5}
+}
+
+func (m *RedDiscardConfig) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_RedDiscardConfig.Unmarshal(m, b)
+}
+func (m *RedDiscardConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_RedDiscardConfig.Marshal(b, m, deterministic)
+}
+func (m *RedDiscardConfig) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_RedDiscardConfig.Merge(m, src)
+}
+func (m *RedDiscardConfig) XXX_Size() int {
+ return xxx_messageInfo_RedDiscardConfig.Size(m)
+}
+func (m *RedDiscardConfig) XXX_DiscardUnknown() {
+ xxx_messageInfo_RedDiscardConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_RedDiscardConfig proto.InternalMessageInfo
+
+func (m *RedDiscardConfig) GetMinThreshold() uint32 {
+ if m != nil {
+ return m.MinThreshold
+ }
+ return 0
+}
+
+func (m *RedDiscardConfig) GetMaxThreshold() uint32 {
+ if m != nil {
+ return m.MaxThreshold
+ }
+ return 0
+}
+
+func (m *RedDiscardConfig) GetMaxProbability() uint32 {
+ if m != nil {
+ return m.MaxProbability
+ }
+ return 0
+}
+
+type WRedDiscardConfig struct {
+ Green *RedDiscardConfig `protobuf:"bytes,1,opt,name=green,proto3" json:"green,omitempty"`
+ Yellow *RedDiscardConfig `protobuf:"bytes,2,opt,name=yellow,proto3" json:"yellow,omitempty"`
+ Red *RedDiscardConfig `protobuf:"bytes,3,opt,name=red,proto3" json:"red,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *WRedDiscardConfig) Reset() { *m = WRedDiscardConfig{} }
+func (m *WRedDiscardConfig) String() string { return proto.CompactTextString(m) }
+func (*WRedDiscardConfig) ProtoMessage() {}
+func (*WRedDiscardConfig) Descriptor() ([]byte, []int) {
+ return fileDescriptor_d019a68bffe14cae, []int{6}
+}
+
+func (m *WRedDiscardConfig) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_WRedDiscardConfig.Unmarshal(m, b)
+}
+func (m *WRedDiscardConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_WRedDiscardConfig.Marshal(b, m, deterministic)
+}
+func (m *WRedDiscardConfig) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_WRedDiscardConfig.Merge(m, src)
+}
+func (m *WRedDiscardConfig) XXX_Size() int {
+ return xxx_messageInfo_WRedDiscardConfig.Size(m)
+}
+func (m *WRedDiscardConfig) XXX_DiscardUnknown() {
+ xxx_messageInfo_WRedDiscardConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_WRedDiscardConfig proto.InternalMessageInfo
+
+func (m *WRedDiscardConfig) GetGreen() *RedDiscardConfig {
+ if m != nil {
+ return m.Green
+ }
+ return nil
+}
+
+func (m *WRedDiscardConfig) GetYellow() *RedDiscardConfig {
+ if m != nil {
+ return m.Yellow
+ }
+ return nil
+}
+
+func (m *WRedDiscardConfig) GetRed() *RedDiscardConfig {
+ if m != nil {
+ return m.Red
+ }
+ return nil
+}
+
+type DiscardConfig struct {
+ DiscardPolicy DiscardPolicy `protobuf:"varint,1,opt,name=discard_policy,json=discardPolicy,proto3,enum=tech_profile.DiscardPolicy" json:"discard_policy,omitempty"`
+ // Types that are valid to be assigned to DiscardConfig:
+ // *DiscardConfig_TailDropDiscardConfig
+ // *DiscardConfig_RedDiscardConfig
+ // *DiscardConfig_WredDiscardConfig
+ DiscardConfig isDiscardConfig_DiscardConfig `protobuf_oneof:"discard_config"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *DiscardConfig) Reset() { *m = DiscardConfig{} }
+func (m *DiscardConfig) String() string { return proto.CompactTextString(m) }
+func (*DiscardConfig) ProtoMessage() {}
+func (*DiscardConfig) Descriptor() ([]byte, []int) {
+ return fileDescriptor_d019a68bffe14cae, []int{7}
+}
+
+func (m *DiscardConfig) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_DiscardConfig.Unmarshal(m, b)
+}
+func (m *DiscardConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_DiscardConfig.Marshal(b, m, deterministic)
+}
+func (m *DiscardConfig) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_DiscardConfig.Merge(m, src)
+}
+func (m *DiscardConfig) XXX_Size() int {
+ return xxx_messageInfo_DiscardConfig.Size(m)
+}
+func (m *DiscardConfig) XXX_DiscardUnknown() {
+ xxx_messageInfo_DiscardConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DiscardConfig proto.InternalMessageInfo
+
+func (m *DiscardConfig) GetDiscardPolicy() DiscardPolicy {
+ if m != nil {
+ return m.DiscardPolicy
+ }
+ return DiscardPolicy_TailDrop
+}
+
+type isDiscardConfig_DiscardConfig interface {
+ isDiscardConfig_DiscardConfig()
+}
+
+type DiscardConfig_TailDropDiscardConfig struct {
+ TailDropDiscardConfig *TailDropDiscardConfig `protobuf:"bytes,2,opt,name=tail_drop_discard_config,json=tailDropDiscardConfig,proto3,oneof"`
+}
+
+type DiscardConfig_RedDiscardConfig struct {
+ RedDiscardConfig *RedDiscardConfig `protobuf:"bytes,3,opt,name=red_discard_config,json=redDiscardConfig,proto3,oneof"`
+}
+
+type DiscardConfig_WredDiscardConfig struct {
+ WredDiscardConfig *WRedDiscardConfig `protobuf:"bytes,4,opt,name=wred_discard_config,json=wredDiscardConfig,proto3,oneof"`
+}
+
+func (*DiscardConfig_TailDropDiscardConfig) isDiscardConfig_DiscardConfig() {}
+
+func (*DiscardConfig_RedDiscardConfig) isDiscardConfig_DiscardConfig() {}
+
+func (*DiscardConfig_WredDiscardConfig) isDiscardConfig_DiscardConfig() {}
+
+func (m *DiscardConfig) GetDiscardConfig() isDiscardConfig_DiscardConfig {
+ if m != nil {
+ return m.DiscardConfig
+ }
+ return nil
+}
+
+func (m *DiscardConfig) GetTailDropDiscardConfig() *TailDropDiscardConfig {
+ if x, ok := m.GetDiscardConfig().(*DiscardConfig_TailDropDiscardConfig); ok {
+ return x.TailDropDiscardConfig
+ }
+ return nil
+}
+
+func (m *DiscardConfig) GetRedDiscardConfig() *RedDiscardConfig {
+ if x, ok := m.GetDiscardConfig().(*DiscardConfig_RedDiscardConfig); ok {
+ return x.RedDiscardConfig
+ }
+ return nil
+}
+
+func (m *DiscardConfig) GetWredDiscardConfig() *WRedDiscardConfig {
+ if x, ok := m.GetDiscardConfig().(*DiscardConfig_WredDiscardConfig); ok {
+ return x.WredDiscardConfig
+ }
+ return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*DiscardConfig) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*DiscardConfig_TailDropDiscardConfig)(nil),
+ (*DiscardConfig_RedDiscardConfig)(nil),
+ (*DiscardConfig_WredDiscardConfig)(nil),
+ }
+}
+
+type TrafficQueue struct {
+ Direction Direction `protobuf:"varint,1,opt,name=direction,proto3,enum=tech_profile.Direction" json:"direction,omitempty"`
+ GemportId uint32 `protobuf:"fixed32,2,opt,name=gemport_id,json=gemportId,proto3" json:"gemport_id,omitempty"`
+ PbitMap string `protobuf:"bytes,3,opt,name=pbit_map,json=pbitMap,proto3" json:"pbit_map,omitempty"`
+ AesEncryption bool `protobuf:"varint,4,opt,name=aes_encryption,json=aesEncryption,proto3" json:"aes_encryption,omitempty"`
+ SchedPolicy SchedulingPolicy `protobuf:"varint,5,opt,name=sched_policy,json=schedPolicy,proto3,enum=tech_profile.SchedulingPolicy" json:"sched_policy,omitempty"`
+ Priority uint32 `protobuf:"fixed32,6,opt,name=priority,proto3" json:"priority,omitempty"`
+ Weight uint32 `protobuf:"fixed32,7,opt,name=weight,proto3" json:"weight,omitempty"`
+ DiscardPolicy DiscardPolicy `protobuf:"varint,8,opt,name=discard_policy,json=discardPolicy,proto3,enum=tech_profile.DiscardPolicy" json:"discard_policy,omitempty"`
+ DiscardConfig *DiscardConfig `protobuf:"bytes,9,opt,name=discard_config,json=discardConfig,proto3" json:"discard_config,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *TrafficQueue) Reset() { *m = TrafficQueue{} }
+func (m *TrafficQueue) String() string { return proto.CompactTextString(m) }
+func (*TrafficQueue) ProtoMessage() {}
+func (*TrafficQueue) Descriptor() ([]byte, []int) {
+ return fileDescriptor_d019a68bffe14cae, []int{8}
+}
+
+func (m *TrafficQueue) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_TrafficQueue.Unmarshal(m, b)
+}
+func (m *TrafficQueue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_TrafficQueue.Marshal(b, m, deterministic)
+}
+func (m *TrafficQueue) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_TrafficQueue.Merge(m, src)
+}
+func (m *TrafficQueue) XXX_Size() int {
+ return xxx_messageInfo_TrafficQueue.Size(m)
+}
+func (m *TrafficQueue) XXX_DiscardUnknown() {
+ xxx_messageInfo_TrafficQueue.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TrafficQueue proto.InternalMessageInfo
+
+func (m *TrafficQueue) GetDirection() Direction {
+ if m != nil {
+ return m.Direction
+ }
+ return Direction_UPSTREAM
+}
+
+func (m *TrafficQueue) GetGemportId() uint32 {
+ if m != nil {
+ return m.GemportId
+ }
+ return 0
+}
+
+func (m *TrafficQueue) GetPbitMap() string {
+ if m != nil {
+ return m.PbitMap
+ }
+ return ""
+}
+
+func (m *TrafficQueue) GetAesEncryption() bool {
+ if m != nil {
+ return m.AesEncryption
+ }
+ return false
+}
+
+func (m *TrafficQueue) GetSchedPolicy() SchedulingPolicy {
+ if m != nil {
+ return m.SchedPolicy
+ }
+ return SchedulingPolicy_WRR
+}
+
+func (m *TrafficQueue) GetPriority() uint32 {
+ if m != nil {
+ return m.Priority
+ }
+ return 0
+}
+
+func (m *TrafficQueue) GetWeight() uint32 {
+ if m != nil {
+ return m.Weight
+ }
+ return 0
+}
+
+func (m *TrafficQueue) GetDiscardPolicy() DiscardPolicy {
+ if m != nil {
+ return m.DiscardPolicy
+ }
+ return DiscardPolicy_TailDrop
+}
+
+func (m *TrafficQueue) GetDiscardConfig() *DiscardConfig {
+ if m != nil {
+ return m.DiscardConfig
+ }
+ return nil
+}
+
+type TrafficQueues struct {
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ OnuId uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+ UniId uint32 `protobuf:"fixed32,4,opt,name=uni_id,json=uniId,proto3" json:"uni_id,omitempty"`
+ PortNo uint32 `protobuf:"fixed32,5,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+ TrafficQueues []*TrafficQueue `protobuf:"bytes,6,rep,name=traffic_queues,json=trafficQueues,proto3" json:"traffic_queues,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *TrafficQueues) Reset() { *m = TrafficQueues{} }
+func (m *TrafficQueues) String() string { return proto.CompactTextString(m) }
+func (*TrafficQueues) ProtoMessage() {}
+func (*TrafficQueues) Descriptor() ([]byte, []int) {
+ return fileDescriptor_d019a68bffe14cae, []int{9}
+}
+
+func (m *TrafficQueues) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_TrafficQueues.Unmarshal(m, b)
+}
+func (m *TrafficQueues) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_TrafficQueues.Marshal(b, m, deterministic)
+}
+func (m *TrafficQueues) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_TrafficQueues.Merge(m, src)
+}
+func (m *TrafficQueues) XXX_Size() int {
+ return xxx_messageInfo_TrafficQueues.Size(m)
+}
+func (m *TrafficQueues) XXX_DiscardUnknown() {
+ xxx_messageInfo_TrafficQueues.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TrafficQueues proto.InternalMessageInfo
+
+func (m *TrafficQueues) GetIntfId() uint32 {
+ if m != nil {
+ return m.IntfId
+ }
+ return 0
+}
+
+func (m *TrafficQueues) GetOnuId() uint32 {
+ if m != nil {
+ return m.OnuId
+ }
+ return 0
+}
+
+func (m *TrafficQueues) GetUniId() uint32 {
+ if m != nil {
+ return m.UniId
+ }
+ return 0
+}
+
+func (m *TrafficQueues) GetPortNo() uint32 {
+ if m != nil {
+ return m.PortNo
+ }
+ return 0
+}
+
+func (m *TrafficQueues) GetTrafficQueues() []*TrafficQueue {
+ if m != nil {
+ return m.TrafficQueues
+ }
+ return nil
+}
+
+func init() {
+ proto.RegisterEnum("tech_profile.Direction", Direction_name, Direction_value)
+ proto.RegisterEnum("tech_profile.SchedulingPolicy", SchedulingPolicy_name, SchedulingPolicy_value)
+ proto.RegisterEnum("tech_profile.AdditionalBW", AdditionalBW_name, AdditionalBW_value)
+ proto.RegisterEnum("tech_profile.DiscardPolicy", DiscardPolicy_name, DiscardPolicy_value)
+ proto.RegisterEnum("tech_profile.InferredAdditionBWIndication", InferredAdditionBWIndication_name, InferredAdditionBWIndication_value)
+ proto.RegisterType((*SchedulerConfig)(nil), "tech_profile.SchedulerConfig")
+ proto.RegisterType((*TrafficShapingInfo)(nil), "tech_profile.TrafficShapingInfo")
+ proto.RegisterType((*TrafficScheduler)(nil), "tech_profile.TrafficScheduler")
+ proto.RegisterType((*TrafficSchedulers)(nil), "tech_profile.TrafficSchedulers")
+ proto.RegisterType((*TailDropDiscardConfig)(nil), "tech_profile.TailDropDiscardConfig")
+ proto.RegisterType((*RedDiscardConfig)(nil), "tech_profile.RedDiscardConfig")
+ proto.RegisterType((*WRedDiscardConfig)(nil), "tech_profile.WRedDiscardConfig")
+ proto.RegisterType((*DiscardConfig)(nil), "tech_profile.DiscardConfig")
+ proto.RegisterType((*TrafficQueue)(nil), "tech_profile.TrafficQueue")
+ proto.RegisterType((*TrafficQueues)(nil), "tech_profile.TrafficQueues")
+}
+
+func init() { proto.RegisterFile("voltha_protos/tech_profile.proto", fileDescriptor_d019a68bffe14cae) }
+
+var fileDescriptor_d019a68bffe14cae = []byte{
+ // 1118 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xdd, 0x6e, 0x1b, 0x45,
+ 0x14, 0xf6, 0xda, 0x8d, 0x7f, 0x4e, 0x6c, 0x77, 0x33, 0x25, 0xd4, 0xa4, 0x2d, 0x18, 0x97, 0xaa,
+ 0x91, 0x11, 0x31, 0x4a, 0x4b, 0x6f, 0x8a, 0x54, 0xd9, 0x4d, 0xa4, 0x58, 0xa2, 0x69, 0xba, 0x09,
+ 0x32, 0xe2, 0x82, 0xd5, 0x78, 0x67, 0xbc, 0x1e, 0x69, 0x3d, 0xb3, 0xcc, 0x8e, 0xeb, 0xa4, 0x57,
+ 0xdc, 0xf0, 0x16, 0xdc, 0xf2, 0x02, 0x70, 0x83, 0x78, 0x22, 0x5e, 0x80, 0x7b, 0x34, 0xb3, 0xbb,
+ 0xb6, 0xd7, 0x36, 0x29, 0x54, 0x70, 0x37, 0xe7, 0xdb, 0x6f, 0xce, 0x9c, 0x6f, 0xce, 0xcf, 0x0e,
+ 0x34, 0x5f, 0x8b, 0x40, 0x8d, 0xb1, 0x1b, 0x4a, 0xa1, 0x44, 0xd4, 0x51, 0xd4, 0x1b, 0xeb, 0xf5,
+ 0x88, 0x05, 0xf4, 0xc0, 0x60, 0xa8, 0xba, 0x8c, 0xed, 0xdd, 0xf5, 0x85, 0xf0, 0x03, 0xda, 0xc1,
+ 0x21, 0xeb, 0x60, 0xce, 0x85, 0xc2, 0x8a, 0x09, 0x1e, 0xc5, 0xdc, 0xd6, 0x0f, 0x79, 0xb8, 0x79,
+ 0xee, 0x8d, 0x29, 0x99, 0x06, 0x54, 0x3e, 0x17, 0x7c, 0xc4, 0x7c, 0xf4, 0x05, 0x54, 0x08, 0x93,
+ 0xd4, 0xd3, 0xbc, 0x86, 0xd5, 0xb4, 0xf6, 0xeb, 0x87, 0xb7, 0x0f, 0x32, 0xe7, 0x1c, 0xa5, 0x9f,
+ 0x9d, 0x05, 0x13, 0x3d, 0x83, 0x1a, 0x26, 0x84, 0xe9, 0x35, 0x0e, 0xdc, 0xe1, 0xac, 0x91, 0x37,
+ 0x5b, 0xf7, 0xb2, 0x5b, 0xbb, 0x73, 0x4a, 0x6f, 0xe0, 0x54, 0x17, 0x1b, 0x7a, 0x33, 0xb4, 0x07,
+ 0xe5, 0x50, 0x32, 0x21, 0x99, 0xba, 0x6a, 0x14, 0x9a, 0xd6, 0x7e, 0xc9, 0x99, 0xdb, 0xe8, 0x7d,
+ 0x28, 0xce, 0x28, 0xf3, 0xc7, 0xaa, 0x71, 0xc3, 0x7c, 0x49, 0x2c, 0xd4, 0x85, 0x6a, 0xa4, 0xc3,
+ 0x77, 0x43, 0x11, 0x30, 0xef, 0xaa, 0xb1, 0x65, 0xce, 0xfc, 0x30, 0x7b, 0x66, 0x22, 0x90, 0x71,
+ 0xff, 0xcc, 0xb0, 0x9c, 0x6d, 0xb3, 0x27, 0x36, 0x5a, 0xbf, 0x59, 0x80, 0x2e, 0x24, 0x1e, 0x8d,
+ 0x98, 0x77, 0x3e, 0xc6, 0x21, 0xe3, 0x7e, 0x9f, 0x8f, 0x04, 0xb2, 0xa1, 0xe0, 0x31, 0x69, 0xf4,
+ 0x97, 0x1c, 0xbd, 0x34, 0xc8, 0x30, 0x32, 0xb2, 0x34, 0x32, 0x8c, 0x34, 0x12, 0x32, 0x99, 0x04,
+ 0xab, 0x97, 0x06, 0x19, 0x46, 0x49, 0x90, 0x7a, 0xa9, 0x11, 0x9f, 0x49, 0x13, 0x58, 0xc9, 0xd1,
+ 0x4b, 0x74, 0x02, 0x80, 0x09, 0x71, 0x87, 0x33, 0x97, 0x71, 0xd2, 0x28, 0x9a, 0x88, 0xdb, 0xd9,
+ 0x88, 0xfb, 0x7c, 0x44, 0xa5, 0xa4, 0x24, 0xbd, 0xad, 0xde, 0xa0, 0xcf, 0x09, 0xf3, 0x4c, 0xea,
+ 0x9c, 0x32, 0x26, 0xa4, 0x37, 0xeb, 0x73, 0xd2, 0xfa, 0xd3, 0x02, 0x3b, 0x0d, 0x3d, 0x4d, 0xe2,
+ 0xbb, 0xa6, 0xef, 0x03, 0x28, 0xe3, 0x20, 0x10, 0x9e, 0xcb, 0x48, 0x22, 0xb1, 0x64, 0xec, 0x3e,
+ 0x41, 0x4f, 0xa1, 0x12, 0xa5, 0xee, 0x8d, 0xd8, 0xed, 0xc3, 0x7b, 0x1b, 0x6f, 0x38, 0x2d, 0x21,
+ 0x67, 0xc1, 0x47, 0x0e, 0xbc, 0xa7, 0xe2, 0x10, 0xdd, 0x28, 0xbe, 0x5e, 0x97, 0xf1, 0x91, 0x30,
+ 0x57, 0xb4, 0x7d, 0xd8, 0xcc, 0xfa, 0x59, 0xcf, 0x83, 0x83, 0xd4, 0x1a, 0xd6, 0xfa, 0xdd, 0x82,
+ 0x9d, 0x55, 0xdd, 0x11, 0xba, 0x0d, 0x25, 0xc6, 0xd5, 0x48, 0x0b, 0x88, 0xb3, 0x56, 0xd4, 0x66,
+ 0x9f, 0xa0, 0x5d, 0x28, 0x0a, 0x3e, 0x5d, 0x08, 0xdb, 0x12, 0x7c, 0x1a, 0xc3, 0x53, 0xce, 0x34,
+ 0x1c, 0xa7, 0x6b, 0x6b, 0xca, 0x59, 0x9f, 0x68, 0x37, 0xa1, 0x90, 0xca, 0xe5, 0x22, 0x49, 0x5a,
+ 0x51, 0x9b, 0xa7, 0x02, 0x1d, 0x43, 0x7d, 0xae, 0x44, 0x9f, 0x1a, 0x35, 0x0a, 0xcd, 0xc2, 0xfe,
+ 0xf6, 0x6a, 0xb5, 0xad, 0x06, 0xe6, 0xd4, 0xd4, 0x12, 0x12, 0xb5, 0x9e, 0xc0, 0xee, 0x05, 0x66,
+ 0xc1, 0x91, 0x14, 0xe1, 0x11, 0x8b, 0x3c, 0x2c, 0x49, 0xd2, 0x77, 0xf7, 0x00, 0xbe, 0x9f, 0xd2,
+ 0x29, 0x75, 0x23, 0xf6, 0x86, 0x26, 0x12, 0x2a, 0x06, 0x39, 0x67, 0x6f, 0x68, 0xeb, 0x47, 0x0b,
+ 0x6c, 0x87, 0x92, 0xec, 0x9e, 0xfb, 0x50, 0x9b, 0x30, 0xee, 0xaa, 0xb1, 0xa4, 0xd1, 0x58, 0x04,
+ 0xa9, 0xf2, 0xea, 0x84, 0xf1, 0x8b, 0x14, 0x33, 0x24, 0x7c, 0xb9, 0x44, 0xca, 0x27, 0x24, 0x7c,
+ 0xb9, 0x20, 0x3d, 0x84, 0x9b, 0x9a, 0x14, 0x4a, 0x31, 0xc4, 0x43, 0x16, 0x2c, 0x9a, 0xb0, 0x3e,
+ 0xc1, 0x97, 0x67, 0x0b, 0xb4, 0xf5, 0xab, 0x05, 0x3b, 0x83, 0xb5, 0x40, 0x1e, 0xc3, 0x96, 0x2f,
+ 0x29, 0x8d, 0x2b, 0x6e, 0xed, 0x4e, 0x56, 0xe9, 0x4e, 0x4c, 0x46, 0x4f, 0xa0, 0x78, 0x45, 0x83,
+ 0x40, 0xc4, 0xc3, 0xe2, 0xed, 0xdb, 0x12, 0x36, 0xfa, 0x1c, 0x0a, 0x92, 0x92, 0xa4, 0x16, 0xdf,
+ 0xb6, 0x49, 0x53, 0x5b, 0x7f, 0xe4, 0xa1, 0x96, 0x8d, 0xb8, 0x07, 0x75, 0x12, 0x03, 0xe9, 0xf0,
+ 0x88, 0x9b, 0xe5, 0xce, 0x6a, 0xb3, 0x18, 0x4e, 0x32, 0x39, 0x6a, 0x64, 0xd9, 0x44, 0xdf, 0x41,
+ 0x43, 0x61, 0x16, 0xb8, 0x44, 0x8a, 0xd0, 0x4d, 0xbd, 0x79, 0xc6, 0x7f, 0xa2, 0xe8, 0xfe, 0x4a,
+ 0x71, 0x6c, 0xca, 0xfc, 0x49, 0xce, 0xd9, 0x55, 0x1b, 0x4b, 0xe2, 0x14, 0x90, 0xa4, 0x64, 0xd5,
+ 0xf3, 0x3f, 0x92, 0x7d, 0x92, 0x73, 0x6c, 0xb9, 0x9a, 0xa5, 0x57, 0x70, 0x6b, 0xb6, 0xc1, 0x61,
+ 0xdc, 0x8b, 0x1f, 0x65, 0x1d, 0x0e, 0x36, 0x78, 0xdc, 0x99, 0xad, 0xba, 0xec, 0xd9, 0x8b, 0x6b,
+ 0x8c, 0xbd, 0xb5, 0x7e, 0x2e, 0x40, 0x35, 0x69, 0x82, 0x57, 0xba, 0x7a, 0xdf, 0x75, 0x22, 0xdd,
+ 0x03, 0xf0, 0xe9, 0xc4, 0xf4, 0xe2, 0xbc, 0x75, 0x2b, 0x09, 0xd2, 0x27, 0x7a, 0x60, 0x85, 0x43,
+ 0xa6, 0xdc, 0x09, 0x0e, 0xcd, 0x8d, 0x54, 0x9c, 0x92, 0xb6, 0x5f, 0xe0, 0x10, 0x3d, 0x80, 0x3a,
+ 0xa6, 0x91, 0x4b, 0xb9, 0x27, 0xaf, 0x42, 0x73, 0xaa, 0x56, 0x58, 0x76, 0x6a, 0x98, 0x46, 0xc7,
+ 0x73, 0xf0, 0x3f, 0xf8, 0x79, 0x64, 0xfe, 0x59, 0xc5, 0xbf, 0xfd, 0x67, 0x95, 0x32, 0xff, 0xac,
+ 0xf5, 0xc2, 0x2b, 0xff, 0xeb, 0xc2, 0xeb, 0xad, 0xde, 0x7a, 0xa3, 0x62, 0x72, 0xb8, 0xd9, 0x47,
+ 0xd2, 0x08, 0xa9, 0x8f, 0xd8, 0x6c, 0xfd, 0x62, 0x41, 0x6d, 0x39, 0x4f, 0xff, 0xff, 0x04, 0xed,
+ 0x2e, 0x26, 0xa8, 0x99, 0x6b, 0x51, 0xa3, 0x68, 0x26, 0xe8, 0xde, 0xc6, 0x09, 0x6a, 0x82, 0x9a,
+ 0x4f, 0xcf, 0x38, 0xc4, 0xf6, 0x97, 0x50, 0x99, 0x17, 0x0b, 0xaa, 0x42, 0xf9, 0xeb, 0xb3, 0xf3,
+ 0x0b, 0xe7, 0xb8, 0xfb, 0xc2, 0xce, 0xa1, 0x3a, 0xc0, 0xd1, 0xcb, 0xc1, 0x69, 0x62, 0x5b, 0x68,
+ 0x07, 0x6a, 0xbd, 0xfe, 0x51, 0xdf, 0x39, 0x7e, 0x7e, 0xd1, 0x7f, 0x79, 0xda, 0xfd, 0xca, 0xce,
+ 0xb7, 0x9f, 0x82, 0xbd, 0x9a, 0x4f, 0x54, 0x82, 0xc2, 0xc0, 0x71, 0xec, 0x1c, 0x42, 0x50, 0x3f,
+ 0x57, 0x92, 0x79, 0xea, 0x2c, 0xc9, 0xa0, 0x6d, 0x21, 0x80, 0xe2, 0xc9, 0xd5, 0x50, 0x32, 0x62,
+ 0xe7, 0xdb, 0x1c, 0xaa, 0xcb, 0xaf, 0x17, 0xb4, 0x0b, 0x3b, 0xcb, 0xb6, 0x7b, 0x2a, 0x38, 0xb5,
+ 0x73, 0xe8, 0x16, 0xdc, 0xcc, 0xc2, 0x5d, 0xdb, 0x42, 0x77, 0xe0, 0x76, 0x06, 0xec, 0xd1, 0x48,
+ 0x1d, 0x8f, 0x46, 0x42, 0x2a, 0x3b, 0xbf, 0xe6, 0xa8, 0x3b, 0x55, 0xc2, 0x2e, 0xb4, 0x9f, 0xcd,
+ 0x27, 0x56, 0x12, 0x69, 0x15, 0xca, 0xe9, 0xfc, 0xb0, 0x73, 0xa8, 0x06, 0x95, 0xc1, 0xdc, 0xb4,
+ 0xb4, 0x0c, 0x87, 0x12, 0x3b, 0x8f, 0xca, 0x70, 0x43, 0xb7, 0xae, 0x5d, 0x68, 0xff, 0x64, 0xc1,
+ 0xdd, 0xeb, 0x5e, 0x12, 0xe8, 0x01, 0x7c, 0x7c, 0xdd, 0xf7, 0x54, 0xd1, 0x3e, 0x7c, 0x72, 0x2d,
+ 0xad, 0x1b, 0x45, 0x53, 0x49, 0x89, 0x6d, 0xa1, 0x4f, 0xe1, 0xe1, 0xb5, 0xcc, 0x65, 0xd9, 0xbd,
+ 0x6f, 0xa0, 0x29, 0xa4, 0x7f, 0x20, 0x42, 0xca, 0x3d, 0x21, 0xc9, 0x41, 0xfc, 0xb0, 0xcd, 0x94,
+ 0xc2, 0xb7, 0x8f, 0x7d, 0xa6, 0xc6, 0xd3, 0xe1, 0x81, 0x27, 0x26, 0x9d, 0x94, 0xd8, 0x89, 0x89,
+ 0x9f, 0x25, 0x2f, 0xe0, 0xd7, 0x8f, 0x3a, 0xbe, 0xc8, 0xbc, 0x83, 0x87, 0x45, 0xf3, 0xe9, 0xd1,
+ 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x31, 0x2e, 0x0c, 0xef, 0x2c, 0x0b, 0x00, 0x00,
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/adapter.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/voltha/adapter.pb.go
new file mode 100644
index 0000000..1f24221
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/voltha/adapter.pb.go
@@ -0,0 +1,245 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: voltha_protos/adapter.proto
+
+package voltha
+
+import (
+ fmt "fmt"
+ proto "github.com/golang/protobuf/proto"
+ any "github.com/golang/protobuf/ptypes/any"
+ timestamp "github.com/golang/protobuf/ptypes/timestamp"
+ common "github.com/opencord/voltha-protos/v3/go/common"
+ math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+type AdapterConfig struct {
+ // Common adapter config attributes here
+ LogLevel common.LogLevel_Types `protobuf:"varint,1,opt,name=log_level,json=logLevel,proto3,enum=common.LogLevel_Types" json:"log_level,omitempty"`
+ // Custom (vendor-specific) configuration attributes
+ AdditionalConfig *any.Any `protobuf:"bytes,64,opt,name=additional_config,json=additionalConfig,proto3" json:"additional_config,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *AdapterConfig) Reset() { *m = AdapterConfig{} }
+func (m *AdapterConfig) String() string { return proto.CompactTextString(m) }
+func (*AdapterConfig) ProtoMessage() {}
+func (*AdapterConfig) Descriptor() ([]byte, []int) {
+ return fileDescriptor_7e998ce153307274, []int{0}
+}
+
+func (m *AdapterConfig) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_AdapterConfig.Unmarshal(m, b)
+}
+func (m *AdapterConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_AdapterConfig.Marshal(b, m, deterministic)
+}
+func (m *AdapterConfig) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_AdapterConfig.Merge(m, src)
+}
+func (m *AdapterConfig) XXX_Size() int {
+ return xxx_messageInfo_AdapterConfig.Size(m)
+}
+func (m *AdapterConfig) XXX_DiscardUnknown() {
+ xxx_messageInfo_AdapterConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AdapterConfig proto.InternalMessageInfo
+
+func (m *AdapterConfig) GetLogLevel() common.LogLevel_Types {
+ if m != nil {
+ return m.LogLevel
+ }
+ return common.LogLevel_DEBUG
+}
+
+func (m *AdapterConfig) GetAdditionalConfig() *any.Any {
+ if m != nil {
+ return m.AdditionalConfig
+ }
+ return nil
+}
+
+// Adapter (software plugin)
+type Adapter struct {
+ // Unique name of adapter, matching the python package name under
+ // voltha/adapters.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Vendor string `protobuf:"bytes,2,opt,name=vendor,proto3" json:"vendor,omitempty"`
+ Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"`
+ // Adapter configuration
+ Config *AdapterConfig `protobuf:"bytes,16,opt,name=config,proto3" json:"config,omitempty"`
+ // Custom descriptors and custom configuration
+ AdditionalDescription *any.Any `protobuf:"bytes,64,opt,name=additional_description,json=additionalDescription,proto3" json:"additional_description,omitempty"`
+ LogicalDeviceIds []string `protobuf:"bytes,4,rep,name=logical_device_ids,json=logicalDeviceIds,proto3" json:"logical_device_ids,omitempty"`
+ // timestamp when the adapter last sent a message to the core
+ LastCommunication *timestamp.Timestamp `protobuf:"bytes,5,opt,name=last_communication,json=lastCommunication,proto3" json:"last_communication,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Adapter) Reset() { *m = Adapter{} }
+func (m *Adapter) String() string { return proto.CompactTextString(m) }
+func (*Adapter) ProtoMessage() {}
+func (*Adapter) Descriptor() ([]byte, []int) {
+ return fileDescriptor_7e998ce153307274, []int{1}
+}
+
+func (m *Adapter) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Adapter.Unmarshal(m, b)
+}
+func (m *Adapter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Adapter.Marshal(b, m, deterministic)
+}
+func (m *Adapter) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Adapter.Merge(m, src)
+}
+func (m *Adapter) XXX_Size() int {
+ return xxx_messageInfo_Adapter.Size(m)
+}
+func (m *Adapter) XXX_DiscardUnknown() {
+ xxx_messageInfo_Adapter.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Adapter proto.InternalMessageInfo
+
+func (m *Adapter) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *Adapter) GetVendor() string {
+ if m != nil {
+ return m.Vendor
+ }
+ return ""
+}
+
+func (m *Adapter) GetVersion() string {
+ if m != nil {
+ return m.Version
+ }
+ return ""
+}
+
+func (m *Adapter) GetConfig() *AdapterConfig {
+ if m != nil {
+ return m.Config
+ }
+ return nil
+}
+
+func (m *Adapter) GetAdditionalDescription() *any.Any {
+ if m != nil {
+ return m.AdditionalDescription
+ }
+ return nil
+}
+
+func (m *Adapter) GetLogicalDeviceIds() []string {
+ if m != nil {
+ return m.LogicalDeviceIds
+ }
+ return nil
+}
+
+func (m *Adapter) GetLastCommunication() *timestamp.Timestamp {
+ if m != nil {
+ return m.LastCommunication
+ }
+ return nil
+}
+
+type Adapters struct {
+ Items []*Adapter `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Adapters) Reset() { *m = Adapters{} }
+func (m *Adapters) String() string { return proto.CompactTextString(m) }
+func (*Adapters) ProtoMessage() {}
+func (*Adapters) Descriptor() ([]byte, []int) {
+ return fileDescriptor_7e998ce153307274, []int{2}
+}
+
+func (m *Adapters) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Adapters.Unmarshal(m, b)
+}
+func (m *Adapters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Adapters.Marshal(b, m, deterministic)
+}
+func (m *Adapters) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Adapters.Merge(m, src)
+}
+func (m *Adapters) XXX_Size() int {
+ return xxx_messageInfo_Adapters.Size(m)
+}
+func (m *Adapters) XXX_DiscardUnknown() {
+ xxx_messageInfo_Adapters.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Adapters proto.InternalMessageInfo
+
+func (m *Adapters) GetItems() []*Adapter {
+ if m != nil {
+ return m.Items
+ }
+ return nil
+}
+
+func init() {
+ proto.RegisterType((*AdapterConfig)(nil), "voltha.AdapterConfig")
+ proto.RegisterType((*Adapter)(nil), "voltha.Adapter")
+ proto.RegisterType((*Adapters)(nil), "voltha.Adapters")
+}
+
+func init() { proto.RegisterFile("voltha_protos/adapter.proto", fileDescriptor_7e998ce153307274) }
+
+var fileDescriptor_7e998ce153307274 = []byte{
+ // 439 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x52, 0xdd, 0x6a, 0xdb, 0x30,
+ 0x14, 0xc6, 0xc9, 0x92, 0x36, 0x2a, 0xdd, 0x52, 0x6d, 0x29, 0x5e, 0x46, 0x69, 0x08, 0x0c, 0x72,
+ 0xb1, 0xca, 0x2c, 0x79, 0x81, 0x25, 0xed, 0x4d, 0xa1, 0x57, 0x26, 0xec, 0x62, 0x37, 0x46, 0xb1,
+ 0x54, 0x55, 0x20, 0xeb, 0x18, 0x4b, 0x31, 0xe4, 0x09, 0xf6, 0x74, 0x7b, 0x83, 0x3d, 0xc0, 0x9e,
+ 0x60, 0xd7, 0xc3, 0x92, 0x4c, 0x7e, 0x06, 0xbd, 0x32, 0xe7, 0xfb, 0xbe, 0x73, 0xbe, 0xef, 0x1c,
+ 0x0b, 0x7d, 0xaa, 0x41, 0xd9, 0x17, 0x9a, 0x95, 0x15, 0x58, 0x30, 0x09, 0x65, 0xb4, 0xb4, 0xbc,
+ 0x22, 0xae, 0xc4, 0x7d, 0x4f, 0x8e, 0x3f, 0x0a, 0x00, 0xa1, 0x78, 0xe2, 0xd0, 0xcd, 0xf6, 0x39,
+ 0xa1, 0x7a, 0xe7, 0x25, 0xe3, 0xf1, 0x71, 0x7f, 0x0e, 0x45, 0x01, 0x3a, 0x70, 0xf1, 0x31, 0x57,
+ 0x70, 0x4b, 0x03, 0x73, 0x7b, 0x3a, 0xd0, 0xca, 0x82, 0x1b, 0x4b, 0x8b, 0xd2, 0x0b, 0xa6, 0x3f,
+ 0x23, 0x74, 0xb9, 0xf4, 0x59, 0xee, 0x41, 0x3f, 0x4b, 0x81, 0x17, 0x68, 0xa0, 0x40, 0x64, 0x8a,
+ 0xd7, 0x5c, 0xc5, 0xd1, 0x24, 0x9a, 0xbd, 0x9d, 0x5f, 0x93, 0x60, 0xf7, 0x04, 0xe2, 0xa9, 0xc1,
+ 0xc9, 0x7a, 0x57, 0x72, 0x93, 0x9e, 0xab, 0x50, 0xe3, 0x25, 0xba, 0xa2, 0x8c, 0x49, 0x2b, 0x41,
+ 0x53, 0x95, 0xe5, 0x6e, 0x52, 0xfc, 0x6d, 0x12, 0xcd, 0x2e, 0xe6, 0x1f, 0x88, 0xcf, 0x40, 0xda,
+ 0x0c, 0x64, 0xa9, 0x77, 0xe9, 0x70, 0x2f, 0xf7, 0xbe, 0xd3, 0xdf, 0x1d, 0x74, 0x16, 0x92, 0xe0,
+ 0x11, 0xea, 0x48, 0xe6, 0xcc, 0x07, 0xab, 0xde, 0x9f, 0xbf, 0xbf, 0x6e, 0xa2, 0xb4, 0x23, 0x19,
+ 0xbe, 0x41, 0xfd, 0x9a, 0x6b, 0x06, 0x55, 0xdc, 0x39, 0xa4, 0x02, 0x88, 0x6f, 0xd1, 0x59, 0xcd,
+ 0x2b, 0x23, 0x41, 0xc7, 0xdd, 0x43, 0xbe, 0x45, 0xf1, 0x1d, 0xea, 0x87, 0x68, 0x43, 0x17, 0x6d,
+ 0x44, 0xfc, 0xe1, 0xc8, 0xd1, 0x05, 0xd2, 0x20, 0xc2, 0x29, 0xba, 0x3e, 0x58, 0x8a, 0x71, 0x93,
+ 0x57, 0xb2, 0x6c, 0xaa, 0xd7, 0x36, 0x6b, 0x4d, 0x47, 0xfb, 0xd6, 0x87, 0x7d, 0x27, 0xfe, 0x82,
+ 0xb0, 0x02, 0x21, 0x73, 0x37, 0xb0, 0x96, 0x39, 0xcf, 0x24, 0x33, 0xf1, 0x9b, 0x49, 0x77, 0x36,
+ 0x48, 0x87, 0x81, 0x79, 0x70, 0xc4, 0x23, 0x33, 0xf8, 0x11, 0x61, 0x45, 0x8d, 0xcd, 0x9a, 0xf3,
+ 0x6f, 0xb5, 0xcc, 0xa9, 0x73, 0xef, 0x39, 0xf7, 0xf1, 0x7f, 0xee, 0xeb, 0xf6, 0xdf, 0xa6, 0x57,
+ 0x4d, 0xd7, 0xfd, 0x61, 0xd3, 0xf4, 0x2b, 0x3a, 0x0f, 0x5b, 0x1a, 0xfc, 0x19, 0xf5, 0xa4, 0xe5,
+ 0x85, 0x89, 0xa3, 0x49, 0x77, 0x76, 0x31, 0x7f, 0x77, 0x72, 0x86, 0xd4, 0xb3, 0xab, 0x35, 0x7a,
+ 0x0f, 0x95, 0x20, 0x50, 0x72, 0x9d, 0x43, 0xc5, 0x82, 0x6a, 0x75, 0xf9, 0xdd, 0x7d, 0x83, 0xf8,
+ 0x07, 0x11, 0xd2, 0xbe, 0x6c, 0x37, 0xcd, 0x13, 0x49, 0x5a, 0x69, 0xe2, 0xa5, 0x77, 0xe1, 0x41,
+ 0xd6, 0x8b, 0x44, 0x40, 0xc0, 0x36, 0x7d, 0x07, 0x2e, 0xfe, 0x05, 0x00, 0x00, 0xff, 0xff, 0x4d,
+ 0xb1, 0x4a, 0xa8, 0x11, 0x03, 0x00, 0x00,
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/device.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/voltha/device.pb.go
new file mode 100644
index 0000000..e713544
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/voltha/device.pb.go
@@ -0,0 +1,1865 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: voltha_protos/device.proto
+
+package voltha
+
+import (
+ fmt "fmt"
+ proto "github.com/golang/protobuf/proto"
+ any "github.com/golang/protobuf/ptypes/any"
+ common "github.com/opencord/voltha-protos/v3/go/common"
+ openflow_13 "github.com/opencord/voltha-protos/v3/go/openflow_13"
+ math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+type PmConfig_PmType int32
+
+const (
+ PmConfig_COUNTER PmConfig_PmType = 0
+ PmConfig_GAUGE PmConfig_PmType = 1
+ PmConfig_STATE PmConfig_PmType = 2
+ PmConfig_CONTEXT PmConfig_PmType = 3
+)
+
+var PmConfig_PmType_name = map[int32]string{
+ 0: "COUNTER",
+ 1: "GAUGE",
+ 2: "STATE",
+ 3: "CONTEXT",
+}
+
+var PmConfig_PmType_value = map[string]int32{
+ "COUNTER": 0,
+ "GAUGE": 1,
+ "STATE": 2,
+ "CONTEXT": 3,
+}
+
+func (x PmConfig_PmType) String() string {
+ return proto.EnumName(PmConfig_PmType_name, int32(x))
+}
+
+func (PmConfig_PmType) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_200940f73d155856, []int{2, 0}
+}
+
+type ImageDownload_ImageDownloadState int32
+
+const (
+ ImageDownload_DOWNLOAD_UNKNOWN ImageDownload_ImageDownloadState = 0
+ ImageDownload_DOWNLOAD_SUCCEEDED ImageDownload_ImageDownloadState = 1
+ ImageDownload_DOWNLOAD_REQUESTED ImageDownload_ImageDownloadState = 2
+ ImageDownload_DOWNLOAD_STARTED ImageDownload_ImageDownloadState = 3
+ ImageDownload_DOWNLOAD_FAILED ImageDownload_ImageDownloadState = 4
+ ImageDownload_DOWNLOAD_UNSUPPORTED ImageDownload_ImageDownloadState = 5
+ ImageDownload_DOWNLOAD_CANCELLED ImageDownload_ImageDownloadState = 6
+)
+
+var ImageDownload_ImageDownloadState_name = map[int32]string{
+ 0: "DOWNLOAD_UNKNOWN",
+ 1: "DOWNLOAD_SUCCEEDED",
+ 2: "DOWNLOAD_REQUESTED",
+ 3: "DOWNLOAD_STARTED",
+ 4: "DOWNLOAD_FAILED",
+ 5: "DOWNLOAD_UNSUPPORTED",
+ 6: "DOWNLOAD_CANCELLED",
+}
+
+var ImageDownload_ImageDownloadState_value = map[string]int32{
+ "DOWNLOAD_UNKNOWN": 0,
+ "DOWNLOAD_SUCCEEDED": 1,
+ "DOWNLOAD_REQUESTED": 2,
+ "DOWNLOAD_STARTED": 3,
+ "DOWNLOAD_FAILED": 4,
+ "DOWNLOAD_UNSUPPORTED": 5,
+ "DOWNLOAD_CANCELLED": 6,
+}
+
+func (x ImageDownload_ImageDownloadState) String() string {
+ return proto.EnumName(ImageDownload_ImageDownloadState_name, int32(x))
+}
+
+func (ImageDownload_ImageDownloadState) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_200940f73d155856, []int{7, 0}
+}
+
+type ImageDownload_ImageDownloadFailureReason int32
+
+const (
+ ImageDownload_NO_ERROR ImageDownload_ImageDownloadFailureReason = 0
+ ImageDownload_INVALID_URL ImageDownload_ImageDownloadFailureReason = 1
+ ImageDownload_DEVICE_BUSY ImageDownload_ImageDownloadFailureReason = 2
+ ImageDownload_INSUFFICIENT_SPACE ImageDownload_ImageDownloadFailureReason = 3
+ ImageDownload_UNKNOWN_ERROR ImageDownload_ImageDownloadFailureReason = 4
+ ImageDownload_CANCELLED ImageDownload_ImageDownloadFailureReason = 5
+)
+
+var ImageDownload_ImageDownloadFailureReason_name = map[int32]string{
+ 0: "NO_ERROR",
+ 1: "INVALID_URL",
+ 2: "DEVICE_BUSY",
+ 3: "INSUFFICIENT_SPACE",
+ 4: "UNKNOWN_ERROR",
+ 5: "CANCELLED",
+}
+
+var ImageDownload_ImageDownloadFailureReason_value = map[string]int32{
+ "NO_ERROR": 0,
+ "INVALID_URL": 1,
+ "DEVICE_BUSY": 2,
+ "INSUFFICIENT_SPACE": 3,
+ "UNKNOWN_ERROR": 4,
+ "CANCELLED": 5,
+}
+
+func (x ImageDownload_ImageDownloadFailureReason) String() string {
+ return proto.EnumName(ImageDownload_ImageDownloadFailureReason_name, int32(x))
+}
+
+func (ImageDownload_ImageDownloadFailureReason) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_200940f73d155856, []int{7, 1}
+}
+
+type ImageDownload_ImageActivateState int32
+
+const (
+ ImageDownload_IMAGE_UNKNOWN ImageDownload_ImageActivateState = 0
+ ImageDownload_IMAGE_INACTIVE ImageDownload_ImageActivateState = 1
+ ImageDownload_IMAGE_ACTIVATING ImageDownload_ImageActivateState = 2
+ ImageDownload_IMAGE_ACTIVE ImageDownload_ImageActivateState = 3
+ ImageDownload_IMAGE_REVERTING ImageDownload_ImageActivateState = 4
+ ImageDownload_IMAGE_REVERTED ImageDownload_ImageActivateState = 5
+)
+
+var ImageDownload_ImageActivateState_name = map[int32]string{
+ 0: "IMAGE_UNKNOWN",
+ 1: "IMAGE_INACTIVE",
+ 2: "IMAGE_ACTIVATING",
+ 3: "IMAGE_ACTIVE",
+ 4: "IMAGE_REVERTING",
+ 5: "IMAGE_REVERTED",
+}
+
+var ImageDownload_ImageActivateState_value = map[string]int32{
+ "IMAGE_UNKNOWN": 0,
+ "IMAGE_INACTIVE": 1,
+ "IMAGE_ACTIVATING": 2,
+ "IMAGE_ACTIVE": 3,
+ "IMAGE_REVERTING": 4,
+ "IMAGE_REVERTED": 5,
+}
+
+func (x ImageDownload_ImageActivateState) String() string {
+ return proto.EnumName(ImageDownload_ImageActivateState_name, int32(x))
+}
+
+func (ImageDownload_ImageActivateState) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_200940f73d155856, []int{7, 2}
+}
+
+type Port_PortType int32
+
+const (
+ Port_UNKNOWN Port_PortType = 0
+ Port_ETHERNET_NNI Port_PortType = 1
+ Port_ETHERNET_UNI Port_PortType = 2
+ Port_PON_OLT Port_PortType = 3
+ Port_PON_ONU Port_PortType = 4
+ Port_VENET_OLT Port_PortType = 5
+ Port_VENET_ONU Port_PortType = 6
+)
+
+var Port_PortType_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "ETHERNET_NNI",
+ 2: "ETHERNET_UNI",
+ 3: "PON_OLT",
+ 4: "PON_ONU",
+ 5: "VENET_OLT",
+ 6: "VENET_ONU",
+}
+
+var Port_PortType_value = map[string]int32{
+ "UNKNOWN": 0,
+ "ETHERNET_NNI": 1,
+ "ETHERNET_UNI": 2,
+ "PON_OLT": 3,
+ "PON_ONU": 4,
+ "VENET_OLT": 5,
+ "VENET_ONU": 6,
+}
+
+func (x Port_PortType) String() string {
+ return proto.EnumName(Port_PortType_name, int32(x))
+}
+
+func (Port_PortType) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_200940f73d155856, []int{9, 0}
+}
+
+type SimulateAlarmRequest_OperationType int32
+
+const (
+ SimulateAlarmRequest_RAISE SimulateAlarmRequest_OperationType = 0
+ SimulateAlarmRequest_CLEAR SimulateAlarmRequest_OperationType = 1
+)
+
+var SimulateAlarmRequest_OperationType_name = map[int32]string{
+ 0: "RAISE",
+ 1: "CLEAR",
+}
+
+var SimulateAlarmRequest_OperationType_value = map[string]int32{
+ "RAISE": 0,
+ "CLEAR": 1,
+}
+
+func (x SimulateAlarmRequest_OperationType) String() string {
+ return proto.EnumName(SimulateAlarmRequest_OperationType_name, int32(x))
+}
+
+func (SimulateAlarmRequest_OperationType) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_200940f73d155856, []int{13, 0}
+}
+
+// A Device Type
+type DeviceType struct {
+ // Unique name for the device type
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // Unique vendor id for the device type applicable to ONU
+ // 4 bytes of vendor id from ONU serial number
+ VendorId string `protobuf:"bytes,5,opt,name=vendor_id,json=vendorId,proto3" json:"vendor_id,omitempty"`
+ VendorIds []string `protobuf:"bytes,6,rep,name=vendor_ids,json=vendorIds,proto3" json:"vendor_ids,omitempty"`
+ // Name of the adapter that handles device type
+ Adapter string `protobuf:"bytes,2,opt,name=adapter,proto3" json:"adapter,omitempty"`
+ // Capabilities
+ AcceptsBulkFlowUpdate bool `protobuf:"varint,3,opt,name=accepts_bulk_flow_update,json=acceptsBulkFlowUpdate,proto3" json:"accepts_bulk_flow_update,omitempty"`
+ AcceptsAddRemoveFlowUpdates bool `protobuf:"varint,4,opt,name=accepts_add_remove_flow_updates,json=acceptsAddRemoveFlowUpdates,proto3" json:"accepts_add_remove_flow_updates,omitempty"`
+ AcceptsDirectLogicalFlowsUpdate bool `protobuf:"varint,7,opt,name=accepts_direct_logical_flows_update,json=acceptsDirectLogicalFlowsUpdate,proto3" json:"accepts_direct_logical_flows_update,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *DeviceType) Reset() { *m = DeviceType{} }
+func (m *DeviceType) String() string { return proto.CompactTextString(m) }
+func (*DeviceType) ProtoMessage() {}
+func (*DeviceType) Descriptor() ([]byte, []int) {
+ return fileDescriptor_200940f73d155856, []int{0}
+}
+
+func (m *DeviceType) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_DeviceType.Unmarshal(m, b)
+}
+func (m *DeviceType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_DeviceType.Marshal(b, m, deterministic)
+}
+func (m *DeviceType) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_DeviceType.Merge(m, src)
+}
+func (m *DeviceType) XXX_Size() int {
+ return xxx_messageInfo_DeviceType.Size(m)
+}
+func (m *DeviceType) XXX_DiscardUnknown() {
+ xxx_messageInfo_DeviceType.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeviceType proto.InternalMessageInfo
+
+func (m *DeviceType) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *DeviceType) GetVendorId() string {
+ if m != nil {
+ return m.VendorId
+ }
+ return ""
+}
+
+func (m *DeviceType) GetVendorIds() []string {
+ if m != nil {
+ return m.VendorIds
+ }
+ return nil
+}
+
+func (m *DeviceType) GetAdapter() string {
+ if m != nil {
+ return m.Adapter
+ }
+ return ""
+}
+
+func (m *DeviceType) GetAcceptsBulkFlowUpdate() bool {
+ if m != nil {
+ return m.AcceptsBulkFlowUpdate
+ }
+ return false
+}
+
+func (m *DeviceType) GetAcceptsAddRemoveFlowUpdates() bool {
+ if m != nil {
+ return m.AcceptsAddRemoveFlowUpdates
+ }
+ return false
+}
+
+func (m *DeviceType) GetAcceptsDirectLogicalFlowsUpdate() bool {
+ if m != nil {
+ return m.AcceptsDirectLogicalFlowsUpdate
+ }
+ return false
+}
+
+// A plurality of device types
+type DeviceTypes struct {
+ Items []*DeviceType `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *DeviceTypes) Reset() { *m = DeviceTypes{} }
+func (m *DeviceTypes) String() string { return proto.CompactTextString(m) }
+func (*DeviceTypes) ProtoMessage() {}
+func (*DeviceTypes) Descriptor() ([]byte, []int) {
+ return fileDescriptor_200940f73d155856, []int{1}
+}
+
+func (m *DeviceTypes) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_DeviceTypes.Unmarshal(m, b)
+}
+func (m *DeviceTypes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_DeviceTypes.Marshal(b, m, deterministic)
+}
+func (m *DeviceTypes) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_DeviceTypes.Merge(m, src)
+}
+func (m *DeviceTypes) XXX_Size() int {
+ return xxx_messageInfo_DeviceTypes.Size(m)
+}
+func (m *DeviceTypes) XXX_DiscardUnknown() {
+ xxx_messageInfo_DeviceTypes.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeviceTypes proto.InternalMessageInfo
+
+func (m *DeviceTypes) GetItems() []*DeviceType {
+ if m != nil {
+ return m.Items
+ }
+ return nil
+}
+
+type PmConfig struct {
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ Type PmConfig_PmType `protobuf:"varint,2,opt,name=type,proto3,enum=voltha.PmConfig_PmType" json:"type,omitempty"`
+ Enabled bool `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"`
+ SampleFreq uint32 `protobuf:"varint,4,opt,name=sample_freq,json=sampleFreq,proto3" json:"sample_freq,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *PmConfig) Reset() { *m = PmConfig{} }
+func (m *PmConfig) String() string { return proto.CompactTextString(m) }
+func (*PmConfig) ProtoMessage() {}
+func (*PmConfig) Descriptor() ([]byte, []int) {
+ return fileDescriptor_200940f73d155856, []int{2}
+}
+
+func (m *PmConfig) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_PmConfig.Unmarshal(m, b)
+}
+func (m *PmConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_PmConfig.Marshal(b, m, deterministic)
+}
+func (m *PmConfig) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_PmConfig.Merge(m, src)
+}
+func (m *PmConfig) XXX_Size() int {
+ return xxx_messageInfo_PmConfig.Size(m)
+}
+func (m *PmConfig) XXX_DiscardUnknown() {
+ xxx_messageInfo_PmConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PmConfig proto.InternalMessageInfo
+
+func (m *PmConfig) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *PmConfig) GetType() PmConfig_PmType {
+ if m != nil {
+ return m.Type
+ }
+ return PmConfig_COUNTER
+}
+
+func (m *PmConfig) GetEnabled() bool {
+ if m != nil {
+ return m.Enabled
+ }
+ return false
+}
+
+func (m *PmConfig) GetSampleFreq() uint32 {
+ if m != nil {
+ return m.SampleFreq
+ }
+ return 0
+}
+
+type PmGroupConfig struct {
+ GroupName string `protobuf:"bytes,1,opt,name=group_name,json=groupName,proto3" json:"group_name,omitempty"`
+ GroupFreq uint32 `protobuf:"varint,2,opt,name=group_freq,json=groupFreq,proto3" json:"group_freq,omitempty"`
+ Enabled bool `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"`
+ Metrics []*PmConfig `protobuf:"bytes,4,rep,name=metrics,proto3" json:"metrics,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *PmGroupConfig) Reset() { *m = PmGroupConfig{} }
+func (m *PmGroupConfig) String() string { return proto.CompactTextString(m) }
+func (*PmGroupConfig) ProtoMessage() {}
+func (*PmGroupConfig) Descriptor() ([]byte, []int) {
+ return fileDescriptor_200940f73d155856, []int{3}
+}
+
+func (m *PmGroupConfig) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_PmGroupConfig.Unmarshal(m, b)
+}
+func (m *PmGroupConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_PmGroupConfig.Marshal(b, m, deterministic)
+}
+func (m *PmGroupConfig) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_PmGroupConfig.Merge(m, src)
+}
+func (m *PmGroupConfig) XXX_Size() int {
+ return xxx_messageInfo_PmGroupConfig.Size(m)
+}
+func (m *PmGroupConfig) XXX_DiscardUnknown() {
+ xxx_messageInfo_PmGroupConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PmGroupConfig proto.InternalMessageInfo
+
+func (m *PmGroupConfig) GetGroupName() string {
+ if m != nil {
+ return m.GroupName
+ }
+ return ""
+}
+
+func (m *PmGroupConfig) GetGroupFreq() uint32 {
+ if m != nil {
+ return m.GroupFreq
+ }
+ return 0
+}
+
+func (m *PmGroupConfig) GetEnabled() bool {
+ if m != nil {
+ return m.Enabled
+ }
+ return false
+}
+
+func (m *PmGroupConfig) GetMetrics() []*PmConfig {
+ if m != nil {
+ return m.Metrics
+ }
+ return nil
+}
+
+type PmConfigs struct {
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ DefaultFreq uint32 `protobuf:"varint,2,opt,name=default_freq,json=defaultFreq,proto3" json:"default_freq,omitempty"`
+ // Forces group names and group semantics
+ Grouped bool `protobuf:"varint,3,opt,name=grouped,proto3" json:"grouped,omitempty"`
+ // Allows Pm to set an individual sample frequency
+ FreqOverride bool `protobuf:"varint,4,opt,name=freq_override,json=freqOverride,proto3" json:"freq_override,omitempty"`
+ Groups []*PmGroupConfig `protobuf:"bytes,5,rep,name=groups,proto3" json:"groups,omitempty"`
+ Metrics []*PmConfig `protobuf:"bytes,6,rep,name=metrics,proto3" json:"metrics,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *PmConfigs) Reset() { *m = PmConfigs{} }
+func (m *PmConfigs) String() string { return proto.CompactTextString(m) }
+func (*PmConfigs) ProtoMessage() {}
+func (*PmConfigs) Descriptor() ([]byte, []int) {
+ return fileDescriptor_200940f73d155856, []int{4}
+}
+
+func (m *PmConfigs) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_PmConfigs.Unmarshal(m, b)
+}
+func (m *PmConfigs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_PmConfigs.Marshal(b, m, deterministic)
+}
+func (m *PmConfigs) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_PmConfigs.Merge(m, src)
+}
+func (m *PmConfigs) XXX_Size() int {
+ return xxx_messageInfo_PmConfigs.Size(m)
+}
+func (m *PmConfigs) XXX_DiscardUnknown() {
+ xxx_messageInfo_PmConfigs.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PmConfigs proto.InternalMessageInfo
+
+func (m *PmConfigs) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *PmConfigs) GetDefaultFreq() uint32 {
+ if m != nil {
+ return m.DefaultFreq
+ }
+ return 0
+}
+
+func (m *PmConfigs) GetGrouped() bool {
+ if m != nil {
+ return m.Grouped
+ }
+ return false
+}
+
+func (m *PmConfigs) GetFreqOverride() bool {
+ if m != nil {
+ return m.FreqOverride
+ }
+ return false
+}
+
+func (m *PmConfigs) GetGroups() []*PmGroupConfig {
+ if m != nil {
+ return m.Groups
+ }
+ return nil
+}
+
+func (m *PmConfigs) GetMetrics() []*PmConfig {
+ if m != nil {
+ return m.Metrics
+ }
+ return nil
+}
+
+// Describes instance of software image on the device
+type Image struct {
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
+ Hash string `protobuf:"bytes,3,opt,name=hash,proto3" json:"hash,omitempty"`
+ InstallDatetime string `protobuf:"bytes,4,opt,name=install_datetime,json=installDatetime,proto3" json:"install_datetime,omitempty"`
+ // The active software image is one that is currently loaded and executing
+ // in the ONU or circuit pack. Under normal operation, one software image
+ // is always active while the other is inactive. Under no circumstances are
+ // both software images allowed to be active at the same time
+ IsActive bool `protobuf:"varint,5,opt,name=is_active,json=isActive,proto3" json:"is_active,omitempty"`
+ // The committed software image is loaded and executed upon reboot of the
+ // ONU and/or circuit pack. During normal operation, one software image is
+ // always committed, while the other is uncommitted.
+ IsCommitted bool `protobuf:"varint,6,opt,name=is_committed,json=isCommitted,proto3" json:"is_committed,omitempty"`
+ // A software image is valid if it has been verified to be an executable
+ // code image. The verification mechanism is not subject to standardization;
+ // however, it should include at least a data integrity (e.g., CRC) check of
+ // the entire code image.
+ IsValid bool `protobuf:"varint,7,opt,name=is_valid,json=isValid,proto3" json:"is_valid,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Image) Reset() { *m = Image{} }
+func (m *Image) String() string { return proto.CompactTextString(m) }
+func (*Image) ProtoMessage() {}
+func (*Image) Descriptor() ([]byte, []int) {
+ return fileDescriptor_200940f73d155856, []int{5}
+}
+
+func (m *Image) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Image.Unmarshal(m, b)
+}
+func (m *Image) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Image.Marshal(b, m, deterministic)
+}
+func (m *Image) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Image.Merge(m, src)
+}
+func (m *Image) XXX_Size() int {
+ return xxx_messageInfo_Image.Size(m)
+}
+func (m *Image) XXX_DiscardUnknown() {
+ xxx_messageInfo_Image.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Image proto.InternalMessageInfo
+
+func (m *Image) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *Image) GetVersion() string {
+ if m != nil {
+ return m.Version
+ }
+ return ""
+}
+
+func (m *Image) GetHash() string {
+ if m != nil {
+ return m.Hash
+ }
+ return ""
+}
+
+func (m *Image) GetInstallDatetime() string {
+ if m != nil {
+ return m.InstallDatetime
+ }
+ return ""
+}
+
+func (m *Image) GetIsActive() bool {
+ if m != nil {
+ return m.IsActive
+ }
+ return false
+}
+
+func (m *Image) GetIsCommitted() bool {
+ if m != nil {
+ return m.IsCommitted
+ }
+ return false
+}
+
+func (m *Image) GetIsValid() bool {
+ if m != nil {
+ return m.IsValid
+ }
+ return false
+}
+
+// List of software on the device
+type Images struct {
+ Image []*Image `protobuf:"bytes,1,rep,name=image,proto3" json:"image,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Images) Reset() { *m = Images{} }
+func (m *Images) String() string { return proto.CompactTextString(m) }
+func (*Images) ProtoMessage() {}
+func (*Images) Descriptor() ([]byte, []int) {
+ return fileDescriptor_200940f73d155856, []int{6}
+}
+
+func (m *Images) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Images.Unmarshal(m, b)
+}
+func (m *Images) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Images.Marshal(b, m, deterministic)
+}
+func (m *Images) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Images.Merge(m, src)
+}
+func (m *Images) XXX_Size() int {
+ return xxx_messageInfo_Images.Size(m)
+}
+func (m *Images) XXX_DiscardUnknown() {
+ xxx_messageInfo_Images.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Images proto.InternalMessageInfo
+
+func (m *Images) GetImage() []*Image {
+ if m != nil {
+ return m.Image
+ }
+ return nil
+}
+
+type ImageDownload struct {
+ // Device Identifier
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // Image unique identifier
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ // URL where the image is available
+ // should include username password
+ Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"`
+ // CRC of the image to be verified aginst
+ Crc uint32 `protobuf:"varint,4,opt,name=crc,proto3" json:"crc,omitempty"`
+ // Download state
+ DownloadState ImageDownload_ImageDownloadState `protobuf:"varint,5,opt,name=download_state,json=downloadState,proto3,enum=voltha.ImageDownload_ImageDownloadState" json:"download_state,omitempty"`
+ // Downloaded version
+ ImageVersion string `protobuf:"bytes,6,opt,name=image_version,json=imageVersion,proto3" json:"image_version,omitempty"`
+ // Bytes downloaded
+ DownloadedBytes uint32 `protobuf:"varint,7,opt,name=downloaded_bytes,json=downloadedBytes,proto3" json:"downloaded_bytes,omitempty"`
+ // Download failure reason
+ Reason ImageDownload_ImageDownloadFailureReason `protobuf:"varint,8,opt,name=reason,proto3,enum=voltha.ImageDownload_ImageDownloadFailureReason" json:"reason,omitempty"`
+ // Additional info
+ AdditionalInfo string `protobuf:"bytes,9,opt,name=additional_info,json=additionalInfo,proto3" json:"additional_info,omitempty"`
+ // Save current configuration
+ SaveConfig bool `protobuf:"varint,10,opt,name=save_config,json=saveConfig,proto3" json:"save_config,omitempty"`
+ // Image local location
+ LocalDir string `protobuf:"bytes,11,opt,name=local_dir,json=localDir,proto3" json:"local_dir,omitempty"`
+ // Image activation state
+ ImageState ImageDownload_ImageActivateState `protobuf:"varint,12,opt,name=image_state,json=imageState,proto3,enum=voltha.ImageDownload_ImageActivateState" json:"image_state,omitempty"`
+ // Image file size
+ FileSize uint32 `protobuf:"varint,13,opt,name=file_size,json=fileSize,proto3" json:"file_size,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *ImageDownload) Reset() { *m = ImageDownload{} }
+func (m *ImageDownload) String() string { return proto.CompactTextString(m) }
+func (*ImageDownload) ProtoMessage() {}
+func (*ImageDownload) Descriptor() ([]byte, []int) {
+ return fileDescriptor_200940f73d155856, []int{7}
+}
+
+func (m *ImageDownload) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_ImageDownload.Unmarshal(m, b)
+}
+func (m *ImageDownload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_ImageDownload.Marshal(b, m, deterministic)
+}
+func (m *ImageDownload) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ImageDownload.Merge(m, src)
+}
+func (m *ImageDownload) XXX_Size() int {
+ return xxx_messageInfo_ImageDownload.Size(m)
+}
+func (m *ImageDownload) XXX_DiscardUnknown() {
+ xxx_messageInfo_ImageDownload.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ImageDownload proto.InternalMessageInfo
+
+func (m *ImageDownload) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *ImageDownload) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *ImageDownload) GetUrl() string {
+ if m != nil {
+ return m.Url
+ }
+ return ""
+}
+
+func (m *ImageDownload) GetCrc() uint32 {
+ if m != nil {
+ return m.Crc
+ }
+ return 0
+}
+
+func (m *ImageDownload) GetDownloadState() ImageDownload_ImageDownloadState {
+ if m != nil {
+ return m.DownloadState
+ }
+ return ImageDownload_DOWNLOAD_UNKNOWN
+}
+
+func (m *ImageDownload) GetImageVersion() string {
+ if m != nil {
+ return m.ImageVersion
+ }
+ return ""
+}
+
+func (m *ImageDownload) GetDownloadedBytes() uint32 {
+ if m != nil {
+ return m.DownloadedBytes
+ }
+ return 0
+}
+
+func (m *ImageDownload) GetReason() ImageDownload_ImageDownloadFailureReason {
+ if m != nil {
+ return m.Reason
+ }
+ return ImageDownload_NO_ERROR
+}
+
+func (m *ImageDownload) GetAdditionalInfo() string {
+ if m != nil {
+ return m.AdditionalInfo
+ }
+ return ""
+}
+
+func (m *ImageDownload) GetSaveConfig() bool {
+ if m != nil {
+ return m.SaveConfig
+ }
+ return false
+}
+
+func (m *ImageDownload) GetLocalDir() string {
+ if m != nil {
+ return m.LocalDir
+ }
+ return ""
+}
+
+func (m *ImageDownload) GetImageState() ImageDownload_ImageActivateState {
+ if m != nil {
+ return m.ImageState
+ }
+ return ImageDownload_IMAGE_UNKNOWN
+}
+
+func (m *ImageDownload) GetFileSize() uint32 {
+ if m != nil {
+ return m.FileSize
+ }
+ return 0
+}
+
+type ImageDownloads struct {
+ Items []*ImageDownload `protobuf:"bytes,2,rep,name=items,proto3" json:"items,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *ImageDownloads) Reset() { *m = ImageDownloads{} }
+func (m *ImageDownloads) String() string { return proto.CompactTextString(m) }
+func (*ImageDownloads) ProtoMessage() {}
+func (*ImageDownloads) Descriptor() ([]byte, []int) {
+ return fileDescriptor_200940f73d155856, []int{8}
+}
+
+func (m *ImageDownloads) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_ImageDownloads.Unmarshal(m, b)
+}
+func (m *ImageDownloads) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_ImageDownloads.Marshal(b, m, deterministic)
+}
+func (m *ImageDownloads) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ImageDownloads.Merge(m, src)
+}
+func (m *ImageDownloads) XXX_Size() int {
+ return xxx_messageInfo_ImageDownloads.Size(m)
+}
+func (m *ImageDownloads) XXX_DiscardUnknown() {
+ xxx_messageInfo_ImageDownloads.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ImageDownloads proto.InternalMessageInfo
+
+func (m *ImageDownloads) GetItems() []*ImageDownload {
+ if m != nil {
+ return m.Items
+ }
+ return nil
+}
+
+type Port struct {
+ PortNo uint32 `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+ Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"`
+ Type Port_PortType `protobuf:"varint,3,opt,name=type,proto3,enum=voltha.Port_PortType" json:"type,omitempty"`
+ AdminState common.AdminState_Types `protobuf:"varint,5,opt,name=admin_state,json=adminState,proto3,enum=common.AdminState_Types" json:"admin_state,omitempty"`
+ OperStatus common.OperStatus_Types `protobuf:"varint,6,opt,name=oper_status,json=operStatus,proto3,enum=common.OperStatus_Types" json:"oper_status,omitempty"`
+ DeviceId string `protobuf:"bytes,7,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+ Peers []*Port_PeerPort `protobuf:"bytes,8,rep,name=peers,proto3" json:"peers,omitempty"`
+ RxPackets uint64 `protobuf:"fixed64,9,opt,name=rx_packets,json=rxPackets,proto3" json:"rx_packets,omitempty"`
+ RxBytes uint64 `protobuf:"fixed64,10,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"`
+ RxErrors uint64 `protobuf:"fixed64,11,opt,name=rx_errors,json=rxErrors,proto3" json:"rx_errors,omitempty"`
+ TxPackets uint64 `protobuf:"fixed64,12,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"`
+ TxBytes uint64 `protobuf:"fixed64,13,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`
+ TxErrors uint64 `protobuf:"fixed64,14,opt,name=tx_errors,json=txErrors,proto3" json:"tx_errors,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Port) Reset() { *m = Port{} }
+func (m *Port) String() string { return proto.CompactTextString(m) }
+func (*Port) ProtoMessage() {}
+func (*Port) Descriptor() ([]byte, []int) {
+ return fileDescriptor_200940f73d155856, []int{9}
+}
+
+func (m *Port) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Port.Unmarshal(m, b)
+}
+func (m *Port) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Port.Marshal(b, m, deterministic)
+}
+func (m *Port) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Port.Merge(m, src)
+}
+func (m *Port) XXX_Size() int {
+ return xxx_messageInfo_Port.Size(m)
+}
+func (m *Port) XXX_DiscardUnknown() {
+ xxx_messageInfo_Port.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Port proto.InternalMessageInfo
+
+func (m *Port) GetPortNo() uint32 {
+ if m != nil {
+ return m.PortNo
+ }
+ return 0
+}
+
+func (m *Port) GetLabel() string {
+ if m != nil {
+ return m.Label
+ }
+ return ""
+}
+
+func (m *Port) GetType() Port_PortType {
+ if m != nil {
+ return m.Type
+ }
+ return Port_UNKNOWN
+}
+
+func (m *Port) GetAdminState() common.AdminState_Types {
+ if m != nil {
+ return m.AdminState
+ }
+ return common.AdminState_UNKNOWN
+}
+
+func (m *Port) GetOperStatus() common.OperStatus_Types {
+ if m != nil {
+ return m.OperStatus
+ }
+ return common.OperStatus_UNKNOWN
+}
+
+func (m *Port) GetDeviceId() string {
+ if m != nil {
+ return m.DeviceId
+ }
+ return ""
+}
+
+func (m *Port) GetPeers() []*Port_PeerPort {
+ if m != nil {
+ return m.Peers
+ }
+ return nil
+}
+
+func (m *Port) GetRxPackets() uint64 {
+ if m != nil {
+ return m.RxPackets
+ }
+ return 0
+}
+
+func (m *Port) GetRxBytes() uint64 {
+ if m != nil {
+ return m.RxBytes
+ }
+ return 0
+}
+
+func (m *Port) GetRxErrors() uint64 {
+ if m != nil {
+ return m.RxErrors
+ }
+ return 0
+}
+
+func (m *Port) GetTxPackets() uint64 {
+ if m != nil {
+ return m.TxPackets
+ }
+ return 0
+}
+
+func (m *Port) GetTxBytes() uint64 {
+ if m != nil {
+ return m.TxBytes
+ }
+ return 0
+}
+
+func (m *Port) GetTxErrors() uint64 {
+ if m != nil {
+ return m.TxErrors
+ }
+ return 0
+}
+
+type Port_PeerPort struct {
+ DeviceId string `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+ PortNo uint32 `protobuf:"varint,2,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Port_PeerPort) Reset() { *m = Port_PeerPort{} }
+func (m *Port_PeerPort) String() string { return proto.CompactTextString(m) }
+func (*Port_PeerPort) ProtoMessage() {}
+func (*Port_PeerPort) Descriptor() ([]byte, []int) {
+ return fileDescriptor_200940f73d155856, []int{9, 0}
+}
+
+func (m *Port_PeerPort) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Port_PeerPort.Unmarshal(m, b)
+}
+func (m *Port_PeerPort) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Port_PeerPort.Marshal(b, m, deterministic)
+}
+func (m *Port_PeerPort) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Port_PeerPort.Merge(m, src)
+}
+func (m *Port_PeerPort) XXX_Size() int {
+ return xxx_messageInfo_Port_PeerPort.Size(m)
+}
+func (m *Port_PeerPort) XXX_DiscardUnknown() {
+ xxx_messageInfo_Port_PeerPort.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Port_PeerPort proto.InternalMessageInfo
+
+func (m *Port_PeerPort) GetDeviceId() string {
+ if m != nil {
+ return m.DeviceId
+ }
+ return ""
+}
+
+func (m *Port_PeerPort) GetPortNo() uint32 {
+ if m != nil {
+ return m.PortNo
+ }
+ return 0
+}
+
+type Ports struct {
+ Items []*Port `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Ports) Reset() { *m = Ports{} }
+func (m *Ports) String() string { return proto.CompactTextString(m) }
+func (*Ports) ProtoMessage() {}
+func (*Ports) Descriptor() ([]byte, []int) {
+ return fileDescriptor_200940f73d155856, []int{10}
+}
+
+func (m *Ports) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Ports.Unmarshal(m, b)
+}
+func (m *Ports) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Ports.Marshal(b, m, deterministic)
+}
+func (m *Ports) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Ports.Merge(m, src)
+}
+func (m *Ports) XXX_Size() int {
+ return xxx_messageInfo_Ports.Size(m)
+}
+func (m *Ports) XXX_DiscardUnknown() {
+ xxx_messageInfo_Ports.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Ports proto.InternalMessageInfo
+
+func (m *Ports) GetItems() []*Port {
+ if m != nil {
+ return m.Items
+ }
+ return nil
+}
+
+// A Physical Device instance
+type Device struct {
+ // Voltha's device identifier
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // Device type, refers to one of the registered device types
+ Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
+ // Is this device a root device. Each logical switch has one root
+ // device that is associated with the logical flow switch.
+ Root bool `protobuf:"varint,3,opt,name=root,proto3" json:"root,omitempty"`
+ // Parent device id, in the device tree (for a root device, the parent_id
+ // is the logical_device.id)
+ ParentId string `protobuf:"bytes,4,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
+ ParentPortNo uint32 `protobuf:"varint,20,opt,name=parent_port_no,json=parentPortNo,proto3" json:"parent_port_no,omitempty"`
+ // Vendor, version, serial number, etc.
+ Vendor string `protobuf:"bytes,5,opt,name=vendor,proto3" json:"vendor,omitempty"`
+ Model string `protobuf:"bytes,6,opt,name=model,proto3" json:"model,omitempty"`
+ HardwareVersion string `protobuf:"bytes,7,opt,name=hardware_version,json=hardwareVersion,proto3" json:"hardware_version,omitempty"`
+ FirmwareVersion string `protobuf:"bytes,8,opt,name=firmware_version,json=firmwareVersion,proto3" json:"firmware_version,omitempty"`
+ // List of software on the device
+ Images *Images `protobuf:"bytes,9,opt,name=images,proto3" json:"images,omitempty"`
+ SerialNumber string `protobuf:"bytes,10,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"`
+ VendorId string `protobuf:"bytes,24,opt,name=vendor_id,json=vendorId,proto3" json:"vendor_id,omitempty"`
+ // Addapter that takes care of device
+ Adapter string `protobuf:"bytes,11,opt,name=adapter,proto3" json:"adapter,omitempty"`
+ // Device contact on vlan (if 0, no vlan)
+ Vlan uint32 `protobuf:"varint,12,opt,name=vlan,proto3" json:"vlan,omitempty"`
+ // Device contact MAC address (format: "xx:xx:xx:xx:xx:xx")
+ MacAddress string `protobuf:"bytes,13,opt,name=mac_address,json=macAddress,proto3" json:"mac_address,omitempty"`
+ // Types that are valid to be assigned to Address:
+ // *Device_Ipv4Address
+ // *Device_Ipv6Address
+ // *Device_HostAndPort
+ Address isDevice_Address `protobuf_oneof:"address"`
+ ExtraArgs string `protobuf:"bytes,23,opt,name=extra_args,json=extraArgs,proto3" json:"extra_args,omitempty"`
+ ProxyAddress *Device_ProxyAddress `protobuf:"bytes,19,opt,name=proxy_address,json=proxyAddress,proto3" json:"proxy_address,omitempty"`
+ AdminState common.AdminState_Types `protobuf:"varint,16,opt,name=admin_state,json=adminState,proto3,enum=common.AdminState_Types" json:"admin_state,omitempty"`
+ OperStatus common.OperStatus_Types `protobuf:"varint,17,opt,name=oper_status,json=operStatus,proto3,enum=common.OperStatus_Types" json:"oper_status,omitempty"`
+ Reason string `protobuf:"bytes,22,opt,name=reason,proto3" json:"reason,omitempty"`
+ ConnectStatus common.ConnectStatus_Types `protobuf:"varint,18,opt,name=connect_status,json=connectStatus,proto3,enum=common.ConnectStatus_Types" json:"connect_status,omitempty"`
+ // Device type specific attributes
+ Custom *any.Any `protobuf:"bytes,64,opt,name=custom,proto3" json:"custom,omitempty"`
+ Ports []*Port `protobuf:"bytes,128,rep,name=ports,proto3" json:"ports,omitempty"`
+ Flows *openflow_13.Flows `protobuf:"bytes,129,opt,name=flows,proto3" json:"flows,omitempty"`
+ FlowGroups *openflow_13.FlowGroups `protobuf:"bytes,130,opt,name=flow_groups,json=flowGroups,proto3" json:"flow_groups,omitempty"`
+ // PmConfigs will eventually converted to a child node of the
+ // device to falicitata callbacks and to simplify manipulation.
+ PmConfigs *PmConfigs `protobuf:"bytes,131,opt,name=pm_configs,json=pmConfigs,proto3" json:"pm_configs,omitempty"`
+ ImageDownloads []*ImageDownload `protobuf:"bytes,133,rep,name=image_downloads,json=imageDownloads,proto3" json:"image_downloads,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Device) Reset() { *m = Device{} }
+func (m *Device) String() string { return proto.CompactTextString(m) }
+func (*Device) ProtoMessage() {}
+func (*Device) Descriptor() ([]byte, []int) {
+ return fileDescriptor_200940f73d155856, []int{11}
+}
+
+func (m *Device) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Device.Unmarshal(m, b)
+}
+func (m *Device) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Device.Marshal(b, m, deterministic)
+}
+func (m *Device) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Device.Merge(m, src)
+}
+func (m *Device) XXX_Size() int {
+ return xxx_messageInfo_Device.Size(m)
+}
+func (m *Device) XXX_DiscardUnknown() {
+ xxx_messageInfo_Device.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Device proto.InternalMessageInfo
+
+func (m *Device) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *Device) GetType() string {
+ if m != nil {
+ return m.Type
+ }
+ return ""
+}
+
+func (m *Device) GetRoot() bool {
+ if m != nil {
+ return m.Root
+ }
+ return false
+}
+
+func (m *Device) GetParentId() string {
+ if m != nil {
+ return m.ParentId
+ }
+ return ""
+}
+
+func (m *Device) GetParentPortNo() uint32 {
+ if m != nil {
+ return m.ParentPortNo
+ }
+ return 0
+}
+
+func (m *Device) GetVendor() string {
+ if m != nil {
+ return m.Vendor
+ }
+ return ""
+}
+
+func (m *Device) GetModel() string {
+ if m != nil {
+ return m.Model
+ }
+ return ""
+}
+
+func (m *Device) GetHardwareVersion() string {
+ if m != nil {
+ return m.HardwareVersion
+ }
+ return ""
+}
+
+func (m *Device) GetFirmwareVersion() string {
+ if m != nil {
+ return m.FirmwareVersion
+ }
+ return ""
+}
+
+func (m *Device) GetImages() *Images {
+ if m != nil {
+ return m.Images
+ }
+ return nil
+}
+
+func (m *Device) GetSerialNumber() string {
+ if m != nil {
+ return m.SerialNumber
+ }
+ return ""
+}
+
+func (m *Device) GetVendorId() string {
+ if m != nil {
+ return m.VendorId
+ }
+ return ""
+}
+
+func (m *Device) GetAdapter() string {
+ if m != nil {
+ return m.Adapter
+ }
+ return ""
+}
+
+func (m *Device) GetVlan() uint32 {
+ if m != nil {
+ return m.Vlan
+ }
+ return 0
+}
+
+func (m *Device) GetMacAddress() string {
+ if m != nil {
+ return m.MacAddress
+ }
+ return ""
+}
+
+type isDevice_Address interface {
+ isDevice_Address()
+}
+
+type Device_Ipv4Address struct {
+ Ipv4Address string `protobuf:"bytes,14,opt,name=ipv4_address,json=ipv4Address,proto3,oneof"`
+}
+
+type Device_Ipv6Address struct {
+ Ipv6Address string `protobuf:"bytes,15,opt,name=ipv6_address,json=ipv6Address,proto3,oneof"`
+}
+
+type Device_HostAndPort struct {
+ HostAndPort string `protobuf:"bytes,21,opt,name=host_and_port,json=hostAndPort,proto3,oneof"`
+}
+
+func (*Device_Ipv4Address) isDevice_Address() {}
+
+func (*Device_Ipv6Address) isDevice_Address() {}
+
+func (*Device_HostAndPort) isDevice_Address() {}
+
+func (m *Device) GetAddress() isDevice_Address {
+ if m != nil {
+ return m.Address
+ }
+ return nil
+}
+
+func (m *Device) GetIpv4Address() string {
+ if x, ok := m.GetAddress().(*Device_Ipv4Address); ok {
+ return x.Ipv4Address
+ }
+ return ""
+}
+
+func (m *Device) GetIpv6Address() string {
+ if x, ok := m.GetAddress().(*Device_Ipv6Address); ok {
+ return x.Ipv6Address
+ }
+ return ""
+}
+
+func (m *Device) GetHostAndPort() string {
+ if x, ok := m.GetAddress().(*Device_HostAndPort); ok {
+ return x.HostAndPort
+ }
+ return ""
+}
+
+func (m *Device) GetExtraArgs() string {
+ if m != nil {
+ return m.ExtraArgs
+ }
+ return ""
+}
+
+func (m *Device) GetProxyAddress() *Device_ProxyAddress {
+ if m != nil {
+ return m.ProxyAddress
+ }
+ return nil
+}
+
+func (m *Device) GetAdminState() common.AdminState_Types {
+ if m != nil {
+ return m.AdminState
+ }
+ return common.AdminState_UNKNOWN
+}
+
+func (m *Device) GetOperStatus() common.OperStatus_Types {
+ if m != nil {
+ return m.OperStatus
+ }
+ return common.OperStatus_UNKNOWN
+}
+
+func (m *Device) GetReason() string {
+ if m != nil {
+ return m.Reason
+ }
+ return ""
+}
+
+func (m *Device) GetConnectStatus() common.ConnectStatus_Types {
+ if m != nil {
+ return m.ConnectStatus
+ }
+ return common.ConnectStatus_UNKNOWN
+}
+
+func (m *Device) GetCustom() *any.Any {
+ if m != nil {
+ return m.Custom
+ }
+ return nil
+}
+
+func (m *Device) GetPorts() []*Port {
+ if m != nil {
+ return m.Ports
+ }
+ return nil
+}
+
+func (m *Device) GetFlows() *openflow_13.Flows {
+ if m != nil {
+ return m.Flows
+ }
+ return nil
+}
+
+func (m *Device) GetFlowGroups() *openflow_13.FlowGroups {
+ if m != nil {
+ return m.FlowGroups
+ }
+ return nil
+}
+
+func (m *Device) GetPmConfigs() *PmConfigs {
+ if m != nil {
+ return m.PmConfigs
+ }
+ return nil
+}
+
+func (m *Device) GetImageDownloads() []*ImageDownload {
+ if m != nil {
+ return m.ImageDownloads
+ }
+ return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*Device) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*Device_Ipv4Address)(nil),
+ (*Device_Ipv6Address)(nil),
+ (*Device_HostAndPort)(nil),
+ }
+}
+
+type Device_ProxyAddress struct {
+ DeviceId string `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+ DeviceType string `protobuf:"bytes,2,opt,name=device_type,json=deviceType,proto3" json:"device_type,omitempty"`
+ ChannelId uint32 `protobuf:"varint,3,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
+ ChannelGroupId uint32 `protobuf:"varint,4,opt,name=channel_group_id,json=channelGroupId,proto3" json:"channel_group_id,omitempty"`
+ ChannelTermination string `protobuf:"bytes,5,opt,name=channel_termination,json=channelTermination,proto3" json:"channel_termination,omitempty"`
+ OnuId uint32 `protobuf:"varint,6,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+ OnuSessionId uint32 `protobuf:"varint,7,opt,name=onu_session_id,json=onuSessionId,proto3" json:"onu_session_id,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Device_ProxyAddress) Reset() { *m = Device_ProxyAddress{} }
+func (m *Device_ProxyAddress) String() string { return proto.CompactTextString(m) }
+func (*Device_ProxyAddress) ProtoMessage() {}
+func (*Device_ProxyAddress) Descriptor() ([]byte, []int) {
+ return fileDescriptor_200940f73d155856, []int{11, 0}
+}
+
+func (m *Device_ProxyAddress) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Device_ProxyAddress.Unmarshal(m, b)
+}
+func (m *Device_ProxyAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Device_ProxyAddress.Marshal(b, m, deterministic)
+}
+func (m *Device_ProxyAddress) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Device_ProxyAddress.Merge(m, src)
+}
+func (m *Device_ProxyAddress) XXX_Size() int {
+ return xxx_messageInfo_Device_ProxyAddress.Size(m)
+}
+func (m *Device_ProxyAddress) XXX_DiscardUnknown() {
+ xxx_messageInfo_Device_ProxyAddress.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Device_ProxyAddress proto.InternalMessageInfo
+
+func (m *Device_ProxyAddress) GetDeviceId() string {
+ if m != nil {
+ return m.DeviceId
+ }
+ return ""
+}
+
+func (m *Device_ProxyAddress) GetDeviceType() string {
+ if m != nil {
+ return m.DeviceType
+ }
+ return ""
+}
+
+func (m *Device_ProxyAddress) GetChannelId() uint32 {
+ if m != nil {
+ return m.ChannelId
+ }
+ return 0
+}
+
+func (m *Device_ProxyAddress) GetChannelGroupId() uint32 {
+ if m != nil {
+ return m.ChannelGroupId
+ }
+ return 0
+}
+
+func (m *Device_ProxyAddress) GetChannelTermination() string {
+ if m != nil {
+ return m.ChannelTermination
+ }
+ return ""
+}
+
+func (m *Device_ProxyAddress) GetOnuId() uint32 {
+ if m != nil {
+ return m.OnuId
+ }
+ return 0
+}
+
+func (m *Device_ProxyAddress) GetOnuSessionId() uint32 {
+ if m != nil {
+ return m.OnuSessionId
+ }
+ return 0
+}
+
+type Devices struct {
+ Items []*Device `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Devices) Reset() { *m = Devices{} }
+func (m *Devices) String() string { return proto.CompactTextString(m) }
+func (*Devices) ProtoMessage() {}
+func (*Devices) Descriptor() ([]byte, []int) {
+ return fileDescriptor_200940f73d155856, []int{12}
+}
+
+func (m *Devices) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Devices.Unmarshal(m, b)
+}
+func (m *Devices) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Devices.Marshal(b, m, deterministic)
+}
+func (m *Devices) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Devices.Merge(m, src)
+}
+func (m *Devices) XXX_Size() int {
+ return xxx_messageInfo_Devices.Size(m)
+}
+func (m *Devices) XXX_DiscardUnknown() {
+ xxx_messageInfo_Devices.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Devices proto.InternalMessageInfo
+
+func (m *Devices) GetItems() []*Device {
+ if m != nil {
+ return m.Items
+ }
+ return nil
+}
+
+type SimulateAlarmRequest struct {
+ // Device Identifier
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Indicator string `protobuf:"bytes,2,opt,name=indicator,proto3" json:"indicator,omitempty"`
+ IntfId string `protobuf:"bytes,3,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ PortTypeName string `protobuf:"bytes,4,opt,name=port_type_name,json=portTypeName,proto3" json:"port_type_name,omitempty"`
+ OnuDeviceId string `protobuf:"bytes,5,opt,name=onu_device_id,json=onuDeviceId,proto3" json:"onu_device_id,omitempty"`
+ InverseBitErrorRate int32 `protobuf:"varint,6,opt,name=inverse_bit_error_rate,json=inverseBitErrorRate,proto3" json:"inverse_bit_error_rate,omitempty"`
+ Drift int32 `protobuf:"varint,7,opt,name=drift,proto3" json:"drift,omitempty"`
+ NewEqd int32 `protobuf:"varint,8,opt,name=new_eqd,json=newEqd,proto3" json:"new_eqd,omitempty"`
+ OnuSerialNumber string `protobuf:"bytes,9,opt,name=onu_serial_number,json=onuSerialNumber,proto3" json:"onu_serial_number,omitempty"`
+ Operation SimulateAlarmRequest_OperationType `protobuf:"varint,10,opt,name=operation,proto3,enum=voltha.SimulateAlarmRequest_OperationType" json:"operation,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *SimulateAlarmRequest) Reset() { *m = SimulateAlarmRequest{} }
+func (m *SimulateAlarmRequest) String() string { return proto.CompactTextString(m) }
+func (*SimulateAlarmRequest) ProtoMessage() {}
+func (*SimulateAlarmRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_200940f73d155856, []int{13}
+}
+
+func (m *SimulateAlarmRequest) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_SimulateAlarmRequest.Unmarshal(m, b)
+}
+func (m *SimulateAlarmRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_SimulateAlarmRequest.Marshal(b, m, deterministic)
+}
+func (m *SimulateAlarmRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_SimulateAlarmRequest.Merge(m, src)
+}
+func (m *SimulateAlarmRequest) XXX_Size() int {
+ return xxx_messageInfo_SimulateAlarmRequest.Size(m)
+}
+func (m *SimulateAlarmRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_SimulateAlarmRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SimulateAlarmRequest proto.InternalMessageInfo
+
+func (m *SimulateAlarmRequest) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *SimulateAlarmRequest) GetIndicator() string {
+ if m != nil {
+ return m.Indicator
+ }
+ return ""
+}
+
+func (m *SimulateAlarmRequest) GetIntfId() string {
+ if m != nil {
+ return m.IntfId
+ }
+ return ""
+}
+
+func (m *SimulateAlarmRequest) GetPortTypeName() string {
+ if m != nil {
+ return m.PortTypeName
+ }
+ return ""
+}
+
+func (m *SimulateAlarmRequest) GetOnuDeviceId() string {
+ if m != nil {
+ return m.OnuDeviceId
+ }
+ return ""
+}
+
+func (m *SimulateAlarmRequest) GetInverseBitErrorRate() int32 {
+ if m != nil {
+ return m.InverseBitErrorRate
+ }
+ return 0
+}
+
+func (m *SimulateAlarmRequest) GetDrift() int32 {
+ if m != nil {
+ return m.Drift
+ }
+ return 0
+}
+
+func (m *SimulateAlarmRequest) GetNewEqd() int32 {
+ if m != nil {
+ return m.NewEqd
+ }
+ return 0
+}
+
+func (m *SimulateAlarmRequest) GetOnuSerialNumber() string {
+ if m != nil {
+ return m.OnuSerialNumber
+ }
+ return ""
+}
+
+func (m *SimulateAlarmRequest) GetOperation() SimulateAlarmRequest_OperationType {
+ if m != nil {
+ return m.Operation
+ }
+ return SimulateAlarmRequest_RAISE
+}
+
+func init() {
+ proto.RegisterEnum("voltha.PmConfig_PmType", PmConfig_PmType_name, PmConfig_PmType_value)
+ proto.RegisterEnum("voltha.ImageDownload_ImageDownloadState", ImageDownload_ImageDownloadState_name, ImageDownload_ImageDownloadState_value)
+ proto.RegisterEnum("voltha.ImageDownload_ImageDownloadFailureReason", ImageDownload_ImageDownloadFailureReason_name, ImageDownload_ImageDownloadFailureReason_value)
+ proto.RegisterEnum("voltha.ImageDownload_ImageActivateState", ImageDownload_ImageActivateState_name, ImageDownload_ImageActivateState_value)
+ proto.RegisterEnum("voltha.Port_PortType", Port_PortType_name, Port_PortType_value)
+ proto.RegisterEnum("voltha.SimulateAlarmRequest_OperationType", SimulateAlarmRequest_OperationType_name, SimulateAlarmRequest_OperationType_value)
+ proto.RegisterType((*DeviceType)(nil), "voltha.DeviceType")
+ proto.RegisterType((*DeviceTypes)(nil), "voltha.DeviceTypes")
+ proto.RegisterType((*PmConfig)(nil), "voltha.PmConfig")
+ proto.RegisterType((*PmGroupConfig)(nil), "voltha.PmGroupConfig")
+ proto.RegisterType((*PmConfigs)(nil), "voltha.PmConfigs")
+ proto.RegisterType((*Image)(nil), "voltha.Image")
+ proto.RegisterType((*Images)(nil), "voltha.Images")
+ proto.RegisterType((*ImageDownload)(nil), "voltha.ImageDownload")
+ proto.RegisterType((*ImageDownloads)(nil), "voltha.ImageDownloads")
+ proto.RegisterType((*Port)(nil), "voltha.Port")
+ proto.RegisterType((*Port_PeerPort)(nil), "voltha.Port.PeerPort")
+ proto.RegisterType((*Ports)(nil), "voltha.Ports")
+ proto.RegisterType((*Device)(nil), "voltha.Device")
+ proto.RegisterType((*Device_ProxyAddress)(nil), "voltha.Device.ProxyAddress")
+ proto.RegisterType((*Devices)(nil), "voltha.Devices")
+ proto.RegisterType((*SimulateAlarmRequest)(nil), "voltha.SimulateAlarmRequest")
+}
+
+func init() { proto.RegisterFile("voltha_protos/device.proto", fileDescriptor_200940f73d155856) }
+
+var fileDescriptor_200940f73d155856 = []byte{
+ // 2359 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x58, 0x4d, 0x73, 0xdb, 0xc6,
+ 0xf9, 0x37, 0x29, 0x01, 0x24, 0x1e, 0xbe, 0x08, 0x5e, 0xcb, 0x31, 0x6c, 0xfd, 0x35, 0xf6, 0x9f,
+ 0x4e, 0xa7, 0x4a, 0x52, 0x4b, 0x6e, 0xdc, 0x49, 0xd2, 0x43, 0x67, 0x4c, 0x91, 0xb0, 0x8d, 0xa9,
+ 0x4a, 0xa9, 0x4b, 0x52, 0x69, 0x7b, 0xc1, 0x40, 0xc4, 0x4a, 0xc2, 0x04, 0x2f, 0xf4, 0x02, 0xa4,
+ 0xe5, 0x9c, 0xda, 0x66, 0xd2, 0x53, 0x6f, 0xfd, 0x12, 0xfd, 0x06, 0x3d, 0xb6, 0x33, 0x3d, 0x67,
+ 0xfa, 0x1d, 0xda, 0x99, 0x4e, 0x3f, 0x41, 0xce, 0x9d, 0x7d, 0x76, 0x97, 0x04, 0x64, 0xd7, 0x69,
+ 0x2f, 0x12, 0xf6, 0xf7, 0xbc, 0xec, 0xee, 0x6f, 0x77, 0x9f, 0x17, 0xc2, 0xbd, 0x65, 0x16, 0x17,
+ 0x97, 0x81, 0x3f, 0xe7, 0x59, 0x91, 0xe5, 0x07, 0x21, 0x5b, 0x46, 0x33, 0xb6, 0x8f, 0x23, 0x62,
+ 0x4a, 0xd9, 0xbd, 0xbb, 0x17, 0x59, 0x76, 0x11, 0xb3, 0x03, 0x44, 0xcf, 0x16, 0xe7, 0x07, 0x41,
+ 0xfa, 0x5a, 0xaa, 0xdc, 0xbb, 0x66, 0x3e, 0xcb, 0x92, 0x24, 0x4b, 0x95, 0xcc, 0xa9, 0xca, 0x12,
+ 0x56, 0x04, 0x4a, 0x72, 0xbf, 0x2a, 0xc9, 0xe6, 0x2c, 0x3d, 0x8f, 0xb3, 0x57, 0xfe, 0x0f, 0x9f,
+ 0x48, 0x85, 0xde, 0x9f, 0xeb, 0x00, 0x43, 0x5c, 0xca, 0xe4, 0xf5, 0x9c, 0x91, 0x2e, 0xd4, 0xa3,
+ 0xd0, 0xa9, 0x3d, 0xa8, 0xed, 0x59, 0xb4, 0x1e, 0x85, 0x64, 0x07, 0xac, 0x25, 0x4b, 0xc3, 0x8c,
+ 0xfb, 0x51, 0xe8, 0x18, 0x08, 0x37, 0x25, 0xe0, 0x85, 0x64, 0x17, 0x60, 0x25, 0xcc, 0x1d, 0xf3,
+ 0xc1, 0xc6, 0x9e, 0x45, 0x2d, 0x2d, 0xcd, 0x89, 0x03, 0x8d, 0x20, 0x0c, 0xe6, 0x05, 0xe3, 0x4e,
+ 0x1d, 0x2d, 0xf5, 0x90, 0x7c, 0x0a, 0x4e, 0x30, 0x9b, 0xb1, 0x79, 0x91, 0xfb, 0x67, 0x8b, 0xf8,
+ 0x0b, 0x1f, 0x97, 0xb4, 0x98, 0x87, 0x41, 0xc1, 0x9c, 0x8d, 0x07, 0xb5, 0xbd, 0x26, 0xbd, 0xad,
+ 0xe4, 0x87, 0x8b, 0xf8, 0x8b, 0x67, 0x71, 0xf6, 0x6a, 0x8a, 0x42, 0x32, 0x84, 0xfb, 0xda, 0x30,
+ 0x08, 0x43, 0x9f, 0xb3, 0x24, 0x5b, 0xb2, 0xb2, 0x79, 0xee, 0x6c, 0xa2, 0xfd, 0x8e, 0x52, 0xeb,
+ 0x87, 0x21, 0x45, 0xa5, 0xb5, 0x93, 0x9c, 0x1c, 0xc1, 0x43, 0xed, 0x25, 0x8c, 0x38, 0x9b, 0x15,
+ 0x7e, 0x9c, 0x5d, 0x44, 0xb3, 0x20, 0x46, 0x4f, 0xb9, 0x5e, 0x49, 0x03, 0x3d, 0xe9, 0x09, 0x87,
+ 0xa8, 0x79, 0x24, 0x15, 0x85, 0xb7, 0x5c, 0xba, 0xeb, 0x7d, 0x0a, 0xad, 0x35, 0x81, 0x39, 0xd9,
+ 0x03, 0x23, 0x2a, 0x58, 0x92, 0x3b, 0xb5, 0x07, 0x1b, 0x7b, 0xad, 0x8f, 0xc9, 0xbe, 0x3c, 0x81,
+ 0xfd, 0xb5, 0x0e, 0x95, 0x0a, 0xbd, 0xbf, 0xd4, 0xa0, 0x79, 0x92, 0x0c, 0xb2, 0xf4, 0x3c, 0xba,
+ 0x20, 0x04, 0x36, 0xd3, 0x20, 0x61, 0x8a, 0x7a, 0xfc, 0x26, 0x1f, 0xc1, 0x66, 0xf1, 0x7a, 0xce,
+ 0x90, 0xbd, 0xee, 0xc7, 0x77, 0xb4, 0x27, 0x6d, 0xb3, 0x7f, 0x92, 0xa0, 0x3b, 0x54, 0x12, 0x6c,
+ 0xb3, 0x34, 0x38, 0x8b, 0x59, 0xa8, 0x28, 0xd4, 0x43, 0x72, 0x1f, 0x5a, 0x79, 0x90, 0xcc, 0x63,
+ 0xe6, 0x9f, 0x73, 0xf6, 0x12, 0x09, 0xea, 0x50, 0x90, 0xd0, 0x33, 0xce, 0x5e, 0xf6, 0x3e, 0x03,
+ 0x53, 0xba, 0x22, 0x2d, 0x68, 0x0c, 0x8e, 0xa7, 0xa3, 0x89, 0x4b, 0xed, 0x1b, 0xc4, 0x02, 0xe3,
+ 0x79, 0x7f, 0xfa, 0xdc, 0xb5, 0x6b, 0xe2, 0x73, 0x3c, 0xe9, 0x4f, 0x5c, 0xbb, 0x2e, 0x55, 0x46,
+ 0x13, 0xf7, 0x17, 0x13, 0x7b, 0xa3, 0xf7, 0x87, 0x1a, 0x74, 0x4e, 0x92, 0xe7, 0x3c, 0x5b, 0xcc,
+ 0xd5, 0x3e, 0x76, 0x01, 0x2e, 0xc4, 0xd0, 0x2f, 0xed, 0xc6, 0x42, 0x64, 0x24, 0xb6, 0xb4, 0x12,
+ 0xe3, 0x52, 0xea, 0xb8, 0x14, 0x29, 0x16, 0x2b, 0x79, 0xc7, 0x26, 0x3e, 0x84, 0x46, 0xc2, 0x0a,
+ 0x1e, 0xcd, 0xc4, 0x09, 0x0b, 0x62, 0xed, 0xeb, 0x74, 0x50, 0xad, 0xd0, 0xfb, 0x67, 0x0d, 0x2c,
+ 0x8d, 0xe6, 0x6f, 0x5c, 0xe9, 0xff, 0x87, 0x76, 0xc8, 0xce, 0x83, 0x45, 0x5c, 0x94, 0x17, 0xd1,
+ 0x52, 0x18, 0x2e, 0xe3, 0x3e, 0x34, 0x70, 0x4d, 0x7a, 0x19, 0x87, 0xc6, 0xbf, 0xbe, 0xfd, 0x66,
+ 0xb7, 0x46, 0x35, 0x4a, 0x3e, 0x84, 0x8e, 0xb0, 0xf5, 0xb3, 0x25, 0xe3, 0x3c, 0x0a, 0x99, 0xbc,
+ 0x75, 0x5a, 0xad, 0x2d, 0x64, 0xc7, 0x4a, 0x44, 0x1e, 0x81, 0x89, 0x66, 0xb9, 0x63, 0xe0, 0xc2,
+ 0x6f, 0xaf, 0x17, 0x5e, 0x22, 0x8e, 0x2a, 0xa5, 0xf2, 0x46, 0xcd, 0xef, 0xda, 0xe8, 0xdf, 0x6a,
+ 0x60, 0x78, 0x49, 0x70, 0xc1, 0xde, 0x7a, 0x7d, 0x1c, 0x68, 0x2c, 0x19, 0xcf, 0xa3, 0x2c, 0xd5,
+ 0xef, 0x4f, 0x0d, 0x85, 0xf6, 0x65, 0x90, 0x5f, 0xe2, 0xe6, 0x2c, 0x8a, 0xdf, 0xe4, 0x03, 0xb0,
+ 0xa3, 0x34, 0x2f, 0x82, 0x38, 0xf6, 0xc5, 0xb5, 0x2e, 0xa2, 0x44, 0xee, 0xca, 0xa2, 0x5b, 0x0a,
+ 0x1f, 0x2a, 0x58, 0x04, 0x85, 0x28, 0xf7, 0x83, 0x59, 0x11, 0x2d, 0x19, 0x06, 0x85, 0x26, 0x6d,
+ 0x46, 0x79, 0x1f, 0xc7, 0x82, 0xde, 0x28, 0xf7, 0x45, 0x78, 0x8a, 0x8a, 0x82, 0x85, 0x8e, 0x89,
+ 0xf2, 0x56, 0x94, 0x0f, 0x34, 0x44, 0xee, 0x42, 0x33, 0xca, 0xfd, 0x65, 0x10, 0x47, 0xa1, 0x7a,
+ 0x64, 0x8d, 0x28, 0x3f, 0x15, 0xc3, 0xde, 0x23, 0x30, 0x71, 0x43, 0x39, 0x79, 0x08, 0x46, 0x24,
+ 0xbe, 0xd4, 0x3b, 0xea, 0x68, 0x16, 0x50, 0x4c, 0xa5, 0xac, 0xf7, 0x8f, 0x06, 0x74, 0x10, 0x18,
+ 0x66, 0xaf, 0xd2, 0x38, 0x0b, 0xc2, 0x37, 0x4e, 0x5b, 0x13, 0x53, 0x2f, 0x11, 0x63, 0xc3, 0xc6,
+ 0x82, 0xc7, 0x6a, 0xf7, 0xe2, 0x53, 0x20, 0x33, 0x3e, 0x53, 0x4f, 0x43, 0x7c, 0x92, 0x63, 0xe8,
+ 0x86, 0xca, 0xa7, 0x9f, 0x17, 0x22, 0x1c, 0x18, 0xf8, 0x0a, 0xf7, 0x2a, 0xeb, 0xd0, 0xd3, 0x56,
+ 0x47, 0x63, 0xa1, 0x4f, 0x3b, 0x61, 0x79, 0x48, 0x1e, 0x42, 0x07, 0xd7, 0xec, 0xeb, 0x33, 0x31,
+ 0x71, 0xfa, 0x36, 0x82, 0xa7, 0xea, 0x60, 0x3e, 0x00, 0x5b, 0x5b, 0xb1, 0xd0, 0x3f, 0x7b, 0x2d,
+ 0x02, 0x5a, 0x03, 0x17, 0xb5, 0xb5, 0xc6, 0x0f, 0x05, 0x4c, 0x5e, 0x80, 0xc9, 0x59, 0x90, 0x67,
+ 0xa9, 0xd3, 0xc4, 0x85, 0x3d, 0xfe, 0x2f, 0x16, 0xf6, 0x2c, 0x88, 0xe2, 0x05, 0x67, 0x14, 0xed,
+ 0xa8, 0xb2, 0x27, 0xdf, 0x87, 0xad, 0x20, 0x0c, 0xa3, 0x22, 0xca, 0xd2, 0x20, 0xf6, 0xa3, 0xf4,
+ 0x3c, 0x73, 0x2c, 0x5c, 0x5b, 0x77, 0x0d, 0x7b, 0xe9, 0x79, 0x26, 0x03, 0xc9, 0x92, 0xf9, 0x33,
+ 0xbc, 0x86, 0x0e, 0xe0, 0xd1, 0x81, 0x80, 0xd4, 0xe3, 0xdf, 0x01, 0x2b, 0xce, 0x44, 0x1c, 0x0d,
+ 0x23, 0xee, 0xb4, 0x64, 0xb6, 0x40, 0x60, 0x18, 0x71, 0xe2, 0x41, 0x4b, 0x12, 0x20, 0xe9, 0x6c,
+ 0x7f, 0x27, 0x9d, 0x78, 0xa1, 0x82, 0x82, 0x49, 0x3a, 0x01, 0x8d, 0x25, 0x97, 0x3b, 0x60, 0x9d,
+ 0x47, 0x31, 0xf3, 0xf3, 0xe8, 0x4b, 0xe6, 0x74, 0x90, 0x9f, 0xa6, 0x00, 0xc6, 0xd1, 0x97, 0xac,
+ 0xf7, 0xa7, 0x1a, 0x90, 0x37, 0x8f, 0x83, 0x6c, 0x83, 0x3d, 0x3c, 0xfe, 0x7c, 0x74, 0x74, 0xdc,
+ 0x1f, 0xfa, 0xd3, 0xd1, 0x4f, 0x47, 0xc7, 0x9f, 0x8f, 0xec, 0x1b, 0xe4, 0x3d, 0x20, 0x2b, 0x74,
+ 0x3c, 0x1d, 0x0c, 0x5c, 0x77, 0xe8, 0x0e, 0xed, 0x5a, 0x05, 0xa7, 0xee, 0xcf, 0xa7, 0xee, 0x78,
+ 0xe2, 0x0e, 0xed, 0x7a, 0xc5, 0xcb, 0x78, 0xd2, 0xa7, 0x02, 0xdd, 0x20, 0xb7, 0x60, 0x6b, 0x85,
+ 0x3e, 0xeb, 0x7b, 0x47, 0xee, 0xd0, 0xde, 0x24, 0x0e, 0x6c, 0x97, 0x26, 0x1c, 0x4f, 0x4f, 0x4e,
+ 0x8e, 0x51, 0xdd, 0xa8, 0x38, 0x1f, 0xf4, 0x47, 0x03, 0xf7, 0x48, 0x58, 0x98, 0xbd, 0xdf, 0xd5,
+ 0xe0, 0xde, 0x7f, 0x3e, 0x2f, 0xd2, 0x86, 0xe6, 0xe8, 0xd8, 0x77, 0x29, 0x3d, 0x16, 0xd1, 0x79,
+ 0x0b, 0x5a, 0xde, 0xe8, 0xb4, 0x7f, 0xe4, 0x0d, 0xfd, 0x29, 0x3d, 0xb2, 0x6b, 0x02, 0x18, 0xba,
+ 0xa7, 0xde, 0xc0, 0xf5, 0x0f, 0xa7, 0xe3, 0x5f, 0xda, 0x75, 0x31, 0x8d, 0x37, 0x1a, 0x4f, 0x9f,
+ 0x3d, 0xf3, 0x06, 0x9e, 0x3b, 0x9a, 0xf8, 0xe3, 0x93, 0xfe, 0xc0, 0xb5, 0x37, 0xc8, 0x4d, 0xe8,
+ 0x28, 0x02, 0x94, 0xb3, 0x4d, 0xd2, 0x01, 0x6b, 0xbd, 0x10, 0xa3, 0xf7, 0x7b, 0x4d, 0x61, 0xe5,
+ 0x08, 0x84, 0xa1, 0xf7, 0xb3, 0xfe, 0x73, 0xb7, 0xc4, 0x1f, 0x81, 0xae, 0x84, 0xbc, 0x51, 0x7f,
+ 0x30, 0xf1, 0x4e, 0x45, 0xb2, 0xd8, 0x06, 0x5b, 0x62, 0x88, 0xf4, 0x27, 0xde, 0xe8, 0xb9, 0x5d,
+ 0x27, 0x36, 0xb4, 0x4b, 0xa8, 0x2b, 0x59, 0x93, 0x08, 0x75, 0x4f, 0x5d, 0x8a, 0x6a, 0x9b, 0x6b,
+ 0x87, 0x12, 0xc4, 0xe5, 0xfc, 0x04, 0xba, 0x15, 0x5a, 0x72, 0xf2, 0x91, 0x4e, 0xb2, 0xf5, 0x6a,
+ 0x48, 0xad, 0xa8, 0xe9, 0x3c, 0xfb, 0xb5, 0x01, 0x9b, 0x27, 0x19, 0x2f, 0xc8, 0x1d, 0x68, 0xcc,
+ 0x33, 0x5e, 0xf8, 0x69, 0x86, 0x01, 0xa2, 0x43, 0x4d, 0x31, 0x1c, 0x65, 0x64, 0x1b, 0x8c, 0x38,
+ 0x38, 0x63, 0xb1, 0x8a, 0x12, 0x72, 0x40, 0x3e, 0x50, 0xe9, 0x77, 0x03, 0x6f, 0xea, 0x3a, 0x6c,
+ 0x67, 0xbc, 0xc0, 0x3f, 0xa5, 0xe4, 0xfb, 0x63, 0x68, 0x05, 0x61, 0x12, 0xa5, 0x95, 0x50, 0xe1,
+ 0xec, 0xab, 0x22, 0xad, 0x2f, 0x44, 0x48, 0xe1, 0x3e, 0xd6, 0x08, 0x14, 0x82, 0x15, 0x22, 0x4c,
+ 0xb3, 0x39, 0xe3, 0x68, 0xb9, 0xc8, 0x31, 0x2a, 0x94, 0x4c, 0x8f, 0xe7, 0x8c, 0x8f, 0x51, 0xa2,
+ 0x4d, 0xb3, 0x15, 0x22, 0x9e, 0x81, 0xac, 0x22, 0x7d, 0x15, 0x48, 0x2d, 0xda, 0x94, 0x80, 0x17,
+ 0x0a, 0x8a, 0xe6, 0x8c, 0xf1, 0xdc, 0x69, 0x5e, 0xcb, 0x3a, 0xb8, 0x7c, 0xc6, 0xb8, 0xf8, 0xa0,
+ 0x52, 0x47, 0xa4, 0x65, 0x7e, 0xe5, 0xcf, 0x83, 0xd9, 0x17, 0xac, 0xc8, 0xf1, 0xf5, 0x9b, 0xd4,
+ 0xe2, 0x57, 0x27, 0x12, 0x10, 0x01, 0x9b, 0x5f, 0xa9, 0x70, 0x04, 0x28, 0x6c, 0xf0, 0x2b, 0x19,
+ 0x86, 0x76, 0xc0, 0xe2, 0x57, 0x3e, 0xe3, 0x3c, 0xe3, 0x39, 0x3e, 0x79, 0x93, 0x36, 0xf9, 0x95,
+ 0x8b, 0x63, 0xe1, 0xb6, 0x58, 0xbb, 0x6d, 0x4b, 0xb7, 0x45, 0xd9, 0x6d, 0xa1, 0xdd, 0x76, 0xa4,
+ 0xdb, 0x62, 0xed, 0xb6, 0x58, 0xb9, 0xed, 0x4a, 0xb7, 0x85, 0x72, 0x7b, 0xef, 0x29, 0x34, 0xf5,
+ 0x06, 0xaa, 0x1c, 0xd4, 0xae, 0x71, 0x50, 0x3a, 0xf0, 0x7a, 0xf9, 0xc0, 0x7b, 0x39, 0x34, 0xf5,
+ 0x09, 0x8a, 0x82, 0x66, 0x7d, 0x9f, 0x6d, 0x68, 0xbb, 0x93, 0x17, 0x2e, 0x1d, 0xb9, 0x13, 0x7f,
+ 0x34, 0xf2, 0xec, 0x5a, 0x05, 0x99, 0x8e, 0x3c, 0x59, 0x01, 0x9d, 0x1c, 0x8f, 0xfc, 0xe3, 0xa3,
+ 0x89, 0xbd, 0xb1, 0x1a, 0x8c, 0xa6, 0xf2, 0x19, 0x9d, 0xba, 0x42, 0x51, 0xc8, 0x8c, 0xd2, 0x70,
+ 0x34, 0xb5, 0xcd, 0xde, 0x47, 0x60, 0x88, 0x49, 0x73, 0xd2, 0xab, 0x96, 0x88, 0xed, 0xf2, 0xd1,
+ 0xe8, 0x4b, 0xfb, 0xd7, 0x36, 0x98, 0xb2, 0x64, 0x24, 0xb7, 0xd7, 0x29, 0x4d, 0x57, 0x18, 0x22,
+ 0xb3, 0xdd, 0x2d, 0x55, 0x87, 0x2b, 0x81, 0xbc, 0x8e, 0x77, 0x61, 0x93, 0x67, 0x59, 0x51, 0x2d,
+ 0x5e, 0x10, 0x22, 0x3d, 0xb0, 0xe6, 0x01, 0x67, 0x69, 0x21, 0xf8, 0xda, 0x2c, 0x9b, 0x36, 0x25,
+ 0x8e, 0x57, 0xa7, 0xab, 0x74, 0x34, 0x7b, 0xdb, 0x82, 0xbd, 0x55, 0x79, 0x23, 0x85, 0x27, 0xf2,
+ 0xed, 0xec, 0x82, 0x29, 0x4b, 0x7e, 0xd9, 0x1e, 0x68, 0x25, 0x05, 0x92, 0x1d, 0x30, 0x92, 0x2c,
+ 0x64, 0xb1, 0x4c, 0x77, 0x5a, 0x2a, 0x31, 0xf2, 0x18, 0xec, 0xcb, 0x80, 0x87, 0xaf, 0x02, 0xbe,
+ 0x4e, 0x8b, 0x8d, 0xb2, 0xde, 0x96, 0x16, 0xeb, 0x04, 0xf9, 0x18, 0xec, 0xf3, 0x88, 0x27, 0x15,
+ 0x8b, 0x66, 0xc5, 0x42, 0x8b, 0xb5, 0xc5, 0x23, 0x30, 0x31, 0x73, 0xc8, 0x6b, 0xdd, 0xfa, 0xb8,
+ 0x5b, 0x89, 0x15, 0xf9, 0x6a, 0xbd, 0x52, 0x49, 0x54, 0x76, 0x39, 0xe3, 0x51, 0x10, 0xfb, 0xe9,
+ 0x22, 0x39, 0x63, 0x1c, 0xef, 0xfb, 0xca, 0x7b, 0x5b, 0xca, 0x46, 0x28, 0x12, 0x5c, 0xae, 0x9b,
+ 0x23, 0xa7, 0xc2, 0xe5, 0xaa, 0x47, 0xba, 0xbf, 0x6e, 0x82, 0x5a, 0x65, 0x8d, 0x55, 0x2f, 0x44,
+ 0x60, 0x73, 0x19, 0x07, 0x29, 0xbe, 0x8e, 0x0e, 0xc5, 0x6f, 0x91, 0x68, 0x93, 0x60, 0x26, 0x5a,
+ 0x1c, 0xce, 0x72, 0xf9, 0x36, 0x2c, 0x0a, 0x49, 0x30, 0xeb, 0x4b, 0x84, 0x3c, 0x84, 0x76, 0x34,
+ 0x5f, 0xfe, 0x68, 0xa5, 0x21, 0x5e, 0x88, 0xf5, 0xe2, 0x06, 0x6d, 0x09, 0xb4, 0xaa, 0xf4, 0xc9,
+ 0x4a, 0x69, 0xab, 0xa4, 0xf4, 0x89, 0x56, 0x7a, 0x1f, 0x3a, 0x97, 0x59, 0x5e, 0xf8, 0x41, 0x1a,
+ 0xe2, 0x69, 0x3b, 0xb7, 0xb5, 0x96, 0x80, 0xfb, 0x69, 0x88, 0xaf, 0x6c, 0x17, 0x80, 0x5d, 0x15,
+ 0x3c, 0xf0, 0x03, 0x7e, 0x91, 0x3b, 0x77, 0x64, 0x55, 0x8f, 0x48, 0x9f, 0x5f, 0xe4, 0xe4, 0x29,
+ 0x74, 0xe6, 0x3c, 0xbb, 0x7a, 0xbd, 0x9a, 0xea, 0x16, 0x52, 0xbd, 0x53, 0xed, 0x7d, 0xf6, 0x4f,
+ 0x84, 0x8e, 0x9a, 0x98, 0xb6, 0xe7, 0xa5, 0xd1, 0xf5, 0x00, 0x6a, 0xff, 0x0f, 0x01, 0xf4, 0x69,
+ 0x35, 0x80, 0xde, 0x7c, 0x77, 0x00, 0xd5, 0xfc, 0x97, 0xe3, 0xe8, 0xee, 0xaa, 0x94, 0x7a, 0xaf,
+ 0x72, 0x85, 0x55, 0x7d, 0xe4, 0x41, 0x77, 0x96, 0xa5, 0xa9, 0xe8, 0x13, 0xd5, 0x1c, 0x04, 0xe7,
+ 0xd8, 0xd1, 0x73, 0x0c, 0xa4, 0xf4, 0x6d, 0xd3, 0x74, 0x66, 0x65, 0x19, 0xf9, 0x01, 0x98, 0xb3,
+ 0x45, 0x5e, 0x64, 0x89, 0xf3, 0x14, 0x19, 0xda, 0xde, 0x97, 0x0d, 0xff, 0xbe, 0x6e, 0xf8, 0xf7,
+ 0xfb, 0xe9, 0x6b, 0xaa, 0x74, 0xc8, 0x13, 0x30, 0xc4, 0x91, 0xe4, 0xce, 0xaf, 0xdf, 0x12, 0x28,
+ 0x0e, 0xbb, 0x7f, 0xff, 0xf6, 0x9b, 0x5d, 0x6b, 0x15, 0xe1, 0xa8, 0xd4, 0x25, 0x8f, 0xc1, 0xc0,
+ 0x2e, 0xd6, 0xf9, 0x4d, 0x0d, 0xa7, 0x20, 0xfb, 0xe5, 0xa6, 0x1f, 0x1b, 0xd7, 0x43, 0x43, 0x98,
+ 0xde, 0xa0, 0x52, 0x51, 0x10, 0x88, 0x62, 0xd5, 0xa5, 0xfc, 0x56, 0xda, 0xdd, 0x79, 0xc3, 0x0e,
+ 0xbb, 0x95, 0x95, 0x31, 0x9c, 0xaf, 0x20, 0xf2, 0x19, 0xc0, 0x3c, 0x51, 0x65, 0x61, 0xee, 0x7c,
+ 0x25, 0x1d, 0xdc, 0xbc, 0xde, 0xb7, 0xac, 0x4c, 0xad, 0xf9, 0xaa, 0x39, 0x3b, 0x82, 0x2d, 0x59,
+ 0x14, 0xea, 0xf2, 0x36, 0x77, 0xbe, 0xae, 0xbd, 0x23, 0xa7, 0x1f, 0xb6, 0x84, 0x0b, 0x53, 0x16,
+ 0xf5, 0xb4, 0x1b, 0x55, 0xca, 0x82, 0x7b, 0x5f, 0xd5, 0xa1, 0x5d, 0xbe, 0x64, 0xef, 0xce, 0x0e,
+ 0xf7, 0xa1, 0xa5, 0x84, 0xeb, 0x38, 0x4a, 0x21, 0x5c, 0xff, 0x18, 0xb2, 0x0b, 0x30, 0xbb, 0x0c,
+ 0xd2, 0x94, 0xc5, 0xc2, 0x7c, 0x43, 0x36, 0xab, 0x0a, 0xf1, 0x42, 0xb2, 0x07, 0xb6, 0x16, 0xcb,
+ 0x9e, 0x56, 0x45, 0xd4, 0x0e, 0xed, 0x2a, 0x1c, 0xe9, 0xf1, 0x42, 0x72, 0x00, 0xb7, 0xb4, 0x66,
+ 0xc1, 0x78, 0x12, 0xa5, 0x81, 0xa8, 0xaa, 0xd5, 0xef, 0x29, 0x44, 0x89, 0x26, 0x6b, 0x09, 0xb9,
+ 0x0d, 0x66, 0x96, 0x2e, 0x84, 0x43, 0x13, 0x1d, 0x1a, 0x59, 0xba, 0xf0, 0x42, 0xf2, 0x3e, 0x74,
+ 0x05, 0x9c, 0xb3, 0x5c, 0x84, 0x36, 0x9d, 0xf5, 0x3b, 0xb4, 0x9d, 0xa5, 0x8b, 0xb1, 0x04, 0xbd,
+ 0xf0, 0xd0, 0x12, 0x21, 0x07, 0xf7, 0xdf, 0x3b, 0x80, 0x86, 0x7c, 0x7b, 0xe2, 0xa1, 0x57, 0x92,
+ 0x4e, 0xb7, 0xfa, 0x36, 0x75, 0xda, 0xf9, 0xe3, 0x06, 0x6c, 0x8f, 0xa3, 0x64, 0x11, 0x07, 0x05,
+ 0xeb, 0xc7, 0x01, 0x4f, 0x28, 0x7b, 0xb9, 0x60, 0x79, 0xf1, 0x46, 0x5f, 0xf5, 0x7f, 0x60, 0x45,
+ 0x69, 0x18, 0xcd, 0x82, 0x22, 0xd3, 0x3f, 0xef, 0xac, 0x01, 0x91, 0x78, 0xa3, 0xb4, 0x38, 0xd7,
+ 0xb4, 0x59, 0xd4, 0x14, 0x43, 0xb9, 0x03, 0xbc, 0xaf, 0x82, 0x71, 0xf9, 0x13, 0x81, 0xec, 0x31,
+ 0xdb, 0x73, 0x95, 0x8e, 0xf1, 0x57, 0x82, 0x1e, 0x74, 0xc4, 0x3e, 0xd7, 0x47, 0x27, 0x99, 0x6a,
+ 0x65, 0xe9, 0x62, 0xa8, 0x4f, 0xef, 0x09, 0xbc, 0x17, 0xa5, 0x22, 0x05, 0x30, 0xff, 0x2c, 0x2a,
+ 0x64, 0xa9, 0xe0, 0x73, 0x11, 0x3c, 0x04, 0x65, 0x06, 0xbd, 0xa5, 0xa4, 0x87, 0x51, 0x81, 0x65,
+ 0x03, 0x95, 0x4d, 0x80, 0x11, 0xf2, 0xe8, 0xbc, 0x40, 0xde, 0x0c, 0x2a, 0x07, 0x62, 0xb5, 0x29,
+ 0x7b, 0xe5, 0xb3, 0x97, 0x21, 0xe6, 0x12, 0x83, 0x9a, 0x29, 0x7b, 0xe5, 0xbe, 0x14, 0x6d, 0xfe,
+ 0x4d, 0xc9, 0x77, 0x39, 0x21, 0xc8, 0xde, 0x68, 0x0b, 0x29, 0x2f, 0x25, 0x83, 0x17, 0x60, 0x89,
+ 0x90, 0x22, 0x4f, 0x16, 0x30, 0x40, 0x7c, 0xa8, 0x39, 0x7e, 0x1b, 0xa3, 0x18, 0x99, 0x50, 0x1b,
+ 0xeb, 0xc8, 0xb5, 0x71, 0xef, 0x7b, 0xd0, 0xa9, 0xc8, 0x88, 0x05, 0x06, 0xed, 0x7b, 0x63, 0x57,
+ 0xfe, 0x26, 0x33, 0x38, 0x72, 0xfb, 0xd4, 0xae, 0x1d, 0x8e, 0xe1, 0x56, 0xc6, 0x2f, 0xf0, 0x95,
+ 0xce, 0x32, 0x1e, 0xaa, 0xb9, 0x0e, 0xdb, 0xa7, 0xf8, 0x5f, 0xf2, 0xf4, 0xab, 0xfd, 0x8b, 0xa8,
+ 0xb8, 0x5c, 0x9c, 0x89, 0x48, 0x75, 0xa0, 0x35, 0x0f, 0xa4, 0xe6, 0x23, 0xf5, 0x9b, 0xe0, 0xf2,
+ 0xc9, 0xc1, 0x45, 0xa6, 0xb0, 0x33, 0x13, 0xc1, 0x27, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x35,
+ 0x16, 0x1c, 0x6d, 0xad, 0x14, 0x00, 0x00,
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/events.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/voltha/events.pb.go
new file mode 100644
index 0000000..7df3e27
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/voltha/events.pb.go
@@ -0,0 +1,1538 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: voltha_protos/events.proto
+
+package voltha
+
+import (
+ fmt "fmt"
+ proto "github.com/golang/protobuf/proto"
+ _ "github.com/opencord/voltha-protos/v3/go/common"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+type ConfigEventType_Types int32
+
+const (
+ ConfigEventType_add ConfigEventType_Types = 0
+ ConfigEventType_remove ConfigEventType_Types = 1
+ ConfigEventType_update ConfigEventType_Types = 2
+)
+
+var ConfigEventType_Types_name = map[int32]string{
+ 0: "add",
+ 1: "remove",
+ 2: "update",
+}
+
+var ConfigEventType_Types_value = map[string]int32{
+ "add": 0,
+ "remove": 1,
+ "update": 2,
+}
+
+func (x ConfigEventType_Types) String() string {
+ return proto.EnumName(ConfigEventType_Types_name, int32(x))
+}
+
+func (ConfigEventType_Types) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{0, 0}
+}
+
+type KpiEventType_Types int32
+
+const (
+ KpiEventType_slice KpiEventType_Types = 0
+ KpiEventType_ts KpiEventType_Types = 1
+)
+
+var KpiEventType_Types_name = map[int32]string{
+ 0: "slice",
+ 1: "ts",
+}
+
+var KpiEventType_Types_value = map[string]int32{
+ "slice": 0,
+ "ts": 1,
+}
+
+func (x KpiEventType_Types) String() string {
+ return proto.EnumName(KpiEventType_Types_name, int32(x))
+}
+
+func (KpiEventType_Types) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{2, 0}
+}
+
+type AlarmEventType_Types int32
+
+const (
+ AlarmEventType_COMMUNICATION AlarmEventType_Types = 0
+ AlarmEventType_ENVIRONMENT AlarmEventType_Types = 1
+ AlarmEventType_EQUIPMENT AlarmEventType_Types = 2
+ AlarmEventType_SERVICE AlarmEventType_Types = 3
+ AlarmEventType_PROCESSING AlarmEventType_Types = 4
+ AlarmEventType_SECURITY AlarmEventType_Types = 5
+)
+
+var AlarmEventType_Types_name = map[int32]string{
+ 0: "COMMUNICATION",
+ 1: "ENVIRONMENT",
+ 2: "EQUIPMENT",
+ 3: "SERVICE",
+ 4: "PROCESSING",
+ 5: "SECURITY",
+}
+
+var AlarmEventType_Types_value = map[string]int32{
+ "COMMUNICATION": 0,
+ "ENVIRONMENT": 1,
+ "EQUIPMENT": 2,
+ "SERVICE": 3,
+ "PROCESSING": 4,
+ "SECURITY": 5,
+}
+
+func (x AlarmEventType_Types) String() string {
+ return proto.EnumName(AlarmEventType_Types_name, int32(x))
+}
+
+func (AlarmEventType_Types) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{8, 0}
+}
+
+type AlarmEventCategory_Types int32
+
+const (
+ AlarmEventCategory_PON AlarmEventCategory_Types = 0
+ AlarmEventCategory_OLT AlarmEventCategory_Types = 1
+ AlarmEventCategory_ONT AlarmEventCategory_Types = 2
+ AlarmEventCategory_ONU AlarmEventCategory_Types = 3
+ AlarmEventCategory_NNI AlarmEventCategory_Types = 4
+)
+
+var AlarmEventCategory_Types_name = map[int32]string{
+ 0: "PON",
+ 1: "OLT",
+ 2: "ONT",
+ 3: "ONU",
+ 4: "NNI",
+}
+
+var AlarmEventCategory_Types_value = map[string]int32{
+ "PON": 0,
+ "OLT": 1,
+ "ONT": 2,
+ "ONU": 3,
+ "NNI": 4,
+}
+
+func (x AlarmEventCategory_Types) String() string {
+ return proto.EnumName(AlarmEventCategory_Types_name, int32(x))
+}
+
+func (AlarmEventCategory_Types) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{9, 0}
+}
+
+type AlarmEventState_Types int32
+
+const (
+ AlarmEventState_RAISED AlarmEventState_Types = 0
+ AlarmEventState_CLEARED AlarmEventState_Types = 1
+)
+
+var AlarmEventState_Types_name = map[int32]string{
+ 0: "RAISED",
+ 1: "CLEARED",
+}
+
+var AlarmEventState_Types_value = map[string]int32{
+ "RAISED": 0,
+ "CLEARED": 1,
+}
+
+func (x AlarmEventState_Types) String() string {
+ return proto.EnumName(AlarmEventState_Types_name, int32(x))
+}
+
+func (AlarmEventState_Types) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{10, 0}
+}
+
+type AlarmEventSeverity_Types int32
+
+const (
+ AlarmEventSeverity_INDETERMINATE AlarmEventSeverity_Types = 0
+ AlarmEventSeverity_WARNING AlarmEventSeverity_Types = 1
+ AlarmEventSeverity_MINOR AlarmEventSeverity_Types = 2
+ AlarmEventSeverity_MAJOR AlarmEventSeverity_Types = 3
+ AlarmEventSeverity_CRITICAL AlarmEventSeverity_Types = 4
+)
+
+var AlarmEventSeverity_Types_name = map[int32]string{
+ 0: "INDETERMINATE",
+ 1: "WARNING",
+ 2: "MINOR",
+ 3: "MAJOR",
+ 4: "CRITICAL",
+}
+
+var AlarmEventSeverity_Types_value = map[string]int32{
+ "INDETERMINATE": 0,
+ "WARNING": 1,
+ "MINOR": 2,
+ "MAJOR": 3,
+ "CRITICAL": 4,
+}
+
+func (x AlarmEventSeverity_Types) String() string {
+ return proto.EnumName(AlarmEventSeverity_Types_name, int32(x))
+}
+
+func (AlarmEventSeverity_Types) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{11, 0}
+}
+
+type EventCategory_Types int32
+
+const (
+ EventCategory_COMMUNICATION EventCategory_Types = 0
+ EventCategory_ENVIRONMENT EventCategory_Types = 1
+ EventCategory_EQUIPMENT EventCategory_Types = 2
+ EventCategory_SERVICE EventCategory_Types = 3
+ EventCategory_PROCESSING EventCategory_Types = 4
+ EventCategory_SECURITY EventCategory_Types = 5
+)
+
+var EventCategory_Types_name = map[int32]string{
+ 0: "COMMUNICATION",
+ 1: "ENVIRONMENT",
+ 2: "EQUIPMENT",
+ 3: "SERVICE",
+ 4: "PROCESSING",
+ 5: "SECURITY",
+}
+
+var EventCategory_Types_value = map[string]int32{
+ "COMMUNICATION": 0,
+ "ENVIRONMENT": 1,
+ "EQUIPMENT": 2,
+ "SERVICE": 3,
+ "PROCESSING": 4,
+ "SECURITY": 5,
+}
+
+func (x EventCategory_Types) String() string {
+ return proto.EnumName(EventCategory_Types_name, int32(x))
+}
+
+func (EventCategory_Types) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{14, 0}
+}
+
+type EventSubCategory_Types int32
+
+const (
+ EventSubCategory_PON EventSubCategory_Types = 0
+ EventSubCategory_OLT EventSubCategory_Types = 1
+ EventSubCategory_ONT EventSubCategory_Types = 2
+ EventSubCategory_ONU EventSubCategory_Types = 3
+ EventSubCategory_NNI EventSubCategory_Types = 4
+)
+
+var EventSubCategory_Types_name = map[int32]string{
+ 0: "PON",
+ 1: "OLT",
+ 2: "ONT",
+ 3: "ONU",
+ 4: "NNI",
+}
+
+var EventSubCategory_Types_value = map[string]int32{
+ "PON": 0,
+ "OLT": 1,
+ "ONT": 2,
+ "ONU": 3,
+ "NNI": 4,
+}
+
+func (x EventSubCategory_Types) String() string {
+ return proto.EnumName(EventSubCategory_Types_name, int32(x))
+}
+
+func (EventSubCategory_Types) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{15, 0}
+}
+
+type EventType_Types int32
+
+const (
+ EventType_CONFIG_EVENT EventType_Types = 0
+ EventType_KPI_EVENT EventType_Types = 1
+ EventType_KPI_EVENT2 EventType_Types = 2
+ EventType_DEVICE_EVENT EventType_Types = 3
+)
+
+var EventType_Types_name = map[int32]string{
+ 0: "CONFIG_EVENT",
+ 1: "KPI_EVENT",
+ 2: "KPI_EVENT2",
+ 3: "DEVICE_EVENT",
+}
+
+var EventType_Types_value = map[string]int32{
+ "CONFIG_EVENT": 0,
+ "KPI_EVENT": 1,
+ "KPI_EVENT2": 2,
+ "DEVICE_EVENT": 3,
+}
+
+func (x EventType_Types) String() string {
+ return proto.EnumName(EventType_Types_name, int32(x))
+}
+
+func (EventType_Types) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{16, 0}
+}
+
+type ConfigEventType struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *ConfigEventType) Reset() { *m = ConfigEventType{} }
+func (m *ConfigEventType) String() string { return proto.CompactTextString(m) }
+func (*ConfigEventType) ProtoMessage() {}
+func (*ConfigEventType) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{0}
+}
+
+func (m *ConfigEventType) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_ConfigEventType.Unmarshal(m, b)
+}
+func (m *ConfigEventType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_ConfigEventType.Marshal(b, m, deterministic)
+}
+func (m *ConfigEventType) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ConfigEventType.Merge(m, src)
+}
+func (m *ConfigEventType) XXX_Size() int {
+ return xxx_messageInfo_ConfigEventType.Size(m)
+}
+func (m *ConfigEventType) XXX_DiscardUnknown() {
+ xxx_messageInfo_ConfigEventType.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ConfigEventType proto.InternalMessageInfo
+
+type ConfigEvent struct {
+ Type ConfigEventType_Types `protobuf:"varint,1,opt,name=type,proto3,enum=voltha.ConfigEventType_Types" json:"type,omitempty"`
+ Hash string `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"`
+ Data string `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *ConfigEvent) Reset() { *m = ConfigEvent{} }
+func (m *ConfigEvent) String() string { return proto.CompactTextString(m) }
+func (*ConfigEvent) ProtoMessage() {}
+func (*ConfigEvent) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{1}
+}
+
+func (m *ConfigEvent) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_ConfigEvent.Unmarshal(m, b)
+}
+func (m *ConfigEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_ConfigEvent.Marshal(b, m, deterministic)
+}
+func (m *ConfigEvent) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ConfigEvent.Merge(m, src)
+}
+func (m *ConfigEvent) XXX_Size() int {
+ return xxx_messageInfo_ConfigEvent.Size(m)
+}
+func (m *ConfigEvent) XXX_DiscardUnknown() {
+ xxx_messageInfo_ConfigEvent.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ConfigEvent proto.InternalMessageInfo
+
+func (m *ConfigEvent) GetType() ConfigEventType_Types {
+ if m != nil {
+ return m.Type
+ }
+ return ConfigEventType_add
+}
+
+func (m *ConfigEvent) GetHash() string {
+ if m != nil {
+ return m.Hash
+ }
+ return ""
+}
+
+func (m *ConfigEvent) GetData() string {
+ if m != nil {
+ return m.Data
+ }
+ return ""
+}
+
+type KpiEventType struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *KpiEventType) Reset() { *m = KpiEventType{} }
+func (m *KpiEventType) String() string { return proto.CompactTextString(m) }
+func (*KpiEventType) ProtoMessage() {}
+func (*KpiEventType) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{2}
+}
+
+func (m *KpiEventType) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_KpiEventType.Unmarshal(m, b)
+}
+func (m *KpiEventType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_KpiEventType.Marshal(b, m, deterministic)
+}
+func (m *KpiEventType) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_KpiEventType.Merge(m, src)
+}
+func (m *KpiEventType) XXX_Size() int {
+ return xxx_messageInfo_KpiEventType.Size(m)
+}
+func (m *KpiEventType) XXX_DiscardUnknown() {
+ xxx_messageInfo_KpiEventType.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_KpiEventType proto.InternalMessageInfo
+
+//
+// Struct to convey a dictionary of metric metadata.
+type MetricMetaData struct {
+ Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
+ Ts float64 `protobuf:"fixed64,2,opt,name=ts,proto3" json:"ts,omitempty"`
+ LogicalDeviceId string `protobuf:"bytes,3,opt,name=logical_device_id,json=logicalDeviceId,proto3" json:"logical_device_id,omitempty"`
+ // (equivalent to the DPID that ONOS has
+ // for the VOLTHA device without the
+ // 'of:' prefix
+ SerialNo string `protobuf:"bytes,4,opt,name=serial_no,json=serialNo,proto3" json:"serial_no,omitempty"`
+ DeviceId string `protobuf:"bytes,5,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+ Context map[string]string `protobuf:"bytes,6,rep,name=context,proto3" json:"context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *MetricMetaData) Reset() { *m = MetricMetaData{} }
+func (m *MetricMetaData) String() string { return proto.CompactTextString(m) }
+func (*MetricMetaData) ProtoMessage() {}
+func (*MetricMetaData) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{3}
+}
+
+func (m *MetricMetaData) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_MetricMetaData.Unmarshal(m, b)
+}
+func (m *MetricMetaData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_MetricMetaData.Marshal(b, m, deterministic)
+}
+func (m *MetricMetaData) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_MetricMetaData.Merge(m, src)
+}
+func (m *MetricMetaData) XXX_Size() int {
+ return xxx_messageInfo_MetricMetaData.Size(m)
+}
+func (m *MetricMetaData) XXX_DiscardUnknown() {
+ xxx_messageInfo_MetricMetaData.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MetricMetaData proto.InternalMessageInfo
+
+func (m *MetricMetaData) GetTitle() string {
+ if m != nil {
+ return m.Title
+ }
+ return ""
+}
+
+func (m *MetricMetaData) GetTs() float64 {
+ if m != nil {
+ return m.Ts
+ }
+ return 0
+}
+
+func (m *MetricMetaData) GetLogicalDeviceId() string {
+ if m != nil {
+ return m.LogicalDeviceId
+ }
+ return ""
+}
+
+func (m *MetricMetaData) GetSerialNo() string {
+ if m != nil {
+ return m.SerialNo
+ }
+ return ""
+}
+
+func (m *MetricMetaData) GetDeviceId() string {
+ if m != nil {
+ return m.DeviceId
+ }
+ return ""
+}
+
+func (m *MetricMetaData) GetContext() map[string]string {
+ if m != nil {
+ return m.Context
+ }
+ return nil
+}
+
+//
+// Struct to convey a dictionary of metric->value pairs. Typically used in
+// pure shared-timestamp or shared-timestamp + shared object prefix situations.
+type MetricValuePairs struct {
+ // Metric / value pairs.
+ Metrics map[string]float32 `protobuf:"bytes,1,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *MetricValuePairs) Reset() { *m = MetricValuePairs{} }
+func (m *MetricValuePairs) String() string { return proto.CompactTextString(m) }
+func (*MetricValuePairs) ProtoMessage() {}
+func (*MetricValuePairs) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{4}
+}
+
+func (m *MetricValuePairs) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_MetricValuePairs.Unmarshal(m, b)
+}
+func (m *MetricValuePairs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_MetricValuePairs.Marshal(b, m, deterministic)
+}
+func (m *MetricValuePairs) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_MetricValuePairs.Merge(m, src)
+}
+func (m *MetricValuePairs) XXX_Size() int {
+ return xxx_messageInfo_MetricValuePairs.Size(m)
+}
+func (m *MetricValuePairs) XXX_DiscardUnknown() {
+ xxx_messageInfo_MetricValuePairs.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MetricValuePairs proto.InternalMessageInfo
+
+func (m *MetricValuePairs) GetMetrics() map[string]float32 {
+ if m != nil {
+ return m.Metrics
+ }
+ return nil
+}
+
+//
+// Struct to group metadata for a metric (or group of metrics) with the key-value
+// pairs of collected metrics
+type MetricInformation struct {
+ Metadata *MetricMetaData `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
+ Metrics map[string]float32 `protobuf:"bytes,2,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *MetricInformation) Reset() { *m = MetricInformation{} }
+func (m *MetricInformation) String() string { return proto.CompactTextString(m) }
+func (*MetricInformation) ProtoMessage() {}
+func (*MetricInformation) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{5}
+}
+
+func (m *MetricInformation) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_MetricInformation.Unmarshal(m, b)
+}
+func (m *MetricInformation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_MetricInformation.Marshal(b, m, deterministic)
+}
+func (m *MetricInformation) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_MetricInformation.Merge(m, src)
+}
+func (m *MetricInformation) XXX_Size() int {
+ return xxx_messageInfo_MetricInformation.Size(m)
+}
+func (m *MetricInformation) XXX_DiscardUnknown() {
+ xxx_messageInfo_MetricInformation.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MetricInformation proto.InternalMessageInfo
+
+func (m *MetricInformation) GetMetadata() *MetricMetaData {
+ if m != nil {
+ return m.Metadata
+ }
+ return nil
+}
+
+func (m *MetricInformation) GetMetrics() map[string]float32 {
+ if m != nil {
+ return m.Metrics
+ }
+ return nil
+}
+
+//
+// Legacy KPI Event structured. In mid-August, the KPI event format was updated
+// to a more easily parsable format. See VOL-1140
+// for more information.
+type KpiEvent struct {
+ Type KpiEventType_Types `protobuf:"varint,1,opt,name=type,proto3,enum=voltha.KpiEventType_Types" json:"type,omitempty"`
+ Ts float32 `protobuf:"fixed32,2,opt,name=ts,proto3" json:"ts,omitempty"`
+ Prefixes map[string]*MetricValuePairs `protobuf:"bytes,3,rep,name=prefixes,proto3" json:"prefixes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *KpiEvent) Reset() { *m = KpiEvent{} }
+func (m *KpiEvent) String() string { return proto.CompactTextString(m) }
+func (*KpiEvent) ProtoMessage() {}
+func (*KpiEvent) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{6}
+}
+
+func (m *KpiEvent) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_KpiEvent.Unmarshal(m, b)
+}
+func (m *KpiEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_KpiEvent.Marshal(b, m, deterministic)
+}
+func (m *KpiEvent) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_KpiEvent.Merge(m, src)
+}
+func (m *KpiEvent) XXX_Size() int {
+ return xxx_messageInfo_KpiEvent.Size(m)
+}
+func (m *KpiEvent) XXX_DiscardUnknown() {
+ xxx_messageInfo_KpiEvent.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_KpiEvent proto.InternalMessageInfo
+
+func (m *KpiEvent) GetType() KpiEventType_Types {
+ if m != nil {
+ return m.Type
+ }
+ return KpiEventType_slice
+}
+
+func (m *KpiEvent) GetTs() float32 {
+ if m != nil {
+ return m.Ts
+ }
+ return 0
+}
+
+func (m *KpiEvent) GetPrefixes() map[string]*MetricValuePairs {
+ if m != nil {
+ return m.Prefixes
+ }
+ return nil
+}
+
+type KpiEvent2 struct {
+ // Type of KPI Event
+ Type KpiEventType_Types `protobuf:"varint,1,opt,name=type,proto3,enum=voltha.KpiEventType_Types" json:"type,omitempty"`
+ // Fields used when for slice:
+ Ts float64 `protobuf:"fixed64,2,opt,name=ts,proto3" json:"ts,omitempty"`
+ SliceData []*MetricInformation `protobuf:"bytes,3,rep,name=slice_data,json=sliceData,proto3" json:"slice_data,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *KpiEvent2) Reset() { *m = KpiEvent2{} }
+func (m *KpiEvent2) String() string { return proto.CompactTextString(m) }
+func (*KpiEvent2) ProtoMessage() {}
+func (*KpiEvent2) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{7}
+}
+
+func (m *KpiEvent2) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_KpiEvent2.Unmarshal(m, b)
+}
+func (m *KpiEvent2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_KpiEvent2.Marshal(b, m, deterministic)
+}
+func (m *KpiEvent2) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_KpiEvent2.Merge(m, src)
+}
+func (m *KpiEvent2) XXX_Size() int {
+ return xxx_messageInfo_KpiEvent2.Size(m)
+}
+func (m *KpiEvent2) XXX_DiscardUnknown() {
+ xxx_messageInfo_KpiEvent2.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_KpiEvent2 proto.InternalMessageInfo
+
+func (m *KpiEvent2) GetType() KpiEventType_Types {
+ if m != nil {
+ return m.Type
+ }
+ return KpiEventType_slice
+}
+
+func (m *KpiEvent2) GetTs() float64 {
+ if m != nil {
+ return m.Ts
+ }
+ return 0
+}
+
+func (m *KpiEvent2) GetSliceData() []*MetricInformation {
+ if m != nil {
+ return m.SliceData
+ }
+ return nil
+}
+
+//
+// Identify to the area of the system impacted by the alarm
+// To be deprecated once python version of OpenOLT adapter
+// moves to the new event defination for device alarms
+type AlarmEventType struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *AlarmEventType) Reset() { *m = AlarmEventType{} }
+func (m *AlarmEventType) String() string { return proto.CompactTextString(m) }
+func (*AlarmEventType) ProtoMessage() {}
+func (*AlarmEventType) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{8}
+}
+
+func (m *AlarmEventType) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_AlarmEventType.Unmarshal(m, b)
+}
+func (m *AlarmEventType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_AlarmEventType.Marshal(b, m, deterministic)
+}
+func (m *AlarmEventType) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_AlarmEventType.Merge(m, src)
+}
+func (m *AlarmEventType) XXX_Size() int {
+ return xxx_messageInfo_AlarmEventType.Size(m)
+}
+func (m *AlarmEventType) XXX_DiscardUnknown() {
+ xxx_messageInfo_AlarmEventType.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AlarmEventType proto.InternalMessageInfo
+
+//
+// Identify to the functional category originating the alarm
+// To be deprecated once python version of OpenOLT adapter
+// as well as OpenONU adapter moves to the new event
+// defination for device alarms
+type AlarmEventCategory struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *AlarmEventCategory) Reset() { *m = AlarmEventCategory{} }
+func (m *AlarmEventCategory) String() string { return proto.CompactTextString(m) }
+func (*AlarmEventCategory) ProtoMessage() {}
+func (*AlarmEventCategory) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{9}
+}
+
+func (m *AlarmEventCategory) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_AlarmEventCategory.Unmarshal(m, b)
+}
+func (m *AlarmEventCategory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_AlarmEventCategory.Marshal(b, m, deterministic)
+}
+func (m *AlarmEventCategory) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_AlarmEventCategory.Merge(m, src)
+}
+func (m *AlarmEventCategory) XXX_Size() int {
+ return xxx_messageInfo_AlarmEventCategory.Size(m)
+}
+func (m *AlarmEventCategory) XXX_DiscardUnknown() {
+ xxx_messageInfo_AlarmEventCategory.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AlarmEventCategory proto.InternalMessageInfo
+
+//
+// Active state of the alarm
+// To be deprecated once python version of OpenOLT adapter
+// as well as OpenONU adapter moves to the new event
+// defination for device alarms
+type AlarmEventState struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *AlarmEventState) Reset() { *m = AlarmEventState{} }
+func (m *AlarmEventState) String() string { return proto.CompactTextString(m) }
+func (*AlarmEventState) ProtoMessage() {}
+func (*AlarmEventState) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{10}
+}
+
+func (m *AlarmEventState) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_AlarmEventState.Unmarshal(m, b)
+}
+func (m *AlarmEventState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_AlarmEventState.Marshal(b, m, deterministic)
+}
+func (m *AlarmEventState) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_AlarmEventState.Merge(m, src)
+}
+func (m *AlarmEventState) XXX_Size() int {
+ return xxx_messageInfo_AlarmEventState.Size(m)
+}
+func (m *AlarmEventState) XXX_DiscardUnknown() {
+ xxx_messageInfo_AlarmEventState.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AlarmEventState proto.InternalMessageInfo
+
+//
+// Identify the overall impact of the alarm on the system
+// To be deprecated once python version of OpenOLT adapter
+// as well as OpenONU adapter moves to the new event
+// defination for device alarms
+type AlarmEventSeverity struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *AlarmEventSeverity) Reset() { *m = AlarmEventSeverity{} }
+func (m *AlarmEventSeverity) String() string { return proto.CompactTextString(m) }
+func (*AlarmEventSeverity) ProtoMessage() {}
+func (*AlarmEventSeverity) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{11}
+}
+
+func (m *AlarmEventSeverity) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_AlarmEventSeverity.Unmarshal(m, b)
+}
+func (m *AlarmEventSeverity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_AlarmEventSeverity.Marshal(b, m, deterministic)
+}
+func (m *AlarmEventSeverity) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_AlarmEventSeverity.Merge(m, src)
+}
+func (m *AlarmEventSeverity) XXX_Size() int {
+ return xxx_messageInfo_AlarmEventSeverity.Size(m)
+}
+func (m *AlarmEventSeverity) XXX_DiscardUnknown() {
+ xxx_messageInfo_AlarmEventSeverity.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AlarmEventSeverity proto.InternalMessageInfo
+
+//
+// To be deprecated once python version of OpenOLT adapter
+// as well as OpenONU adapter moves to the new event
+// defination for device alarms
+type AlarmEvent struct {
+ // Unique ID for this alarm. e.g. voltha.some_olt.1234
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // Refers to the area of the system impacted by the alarm
+ Type AlarmEventType_Types `protobuf:"varint,2,opt,name=type,proto3,enum=voltha.AlarmEventType_Types" json:"type,omitempty"`
+ // Refers to functional category of the alarm
+ Category AlarmEventCategory_Types `protobuf:"varint,3,opt,name=category,proto3,enum=voltha.AlarmEventCategory_Types" json:"category,omitempty"`
+ // Current active state of the alarm
+ State AlarmEventState_Types `protobuf:"varint,4,opt,name=state,proto3,enum=voltha.AlarmEventState_Types" json:"state,omitempty"`
+ // Overall impact of the alarm on the system
+ Severity AlarmEventSeverity_Types `protobuf:"varint,5,opt,name=severity,proto3,enum=voltha.AlarmEventSeverity_Types" json:"severity,omitempty"`
+ // Timestamp at which the alarm was first raised
+ RaisedTs float32 `protobuf:"fixed32,6,opt,name=raised_ts,json=raisedTs,proto3" json:"raised_ts,omitempty"`
+ // Timestamp at which the alarm was reported
+ ReportedTs float32 `protobuf:"fixed32,7,opt,name=reported_ts,json=reportedTs,proto3" json:"reported_ts,omitempty"`
+ // Timestamp at which the alarm has changed since it was raised
+ ChangedTs float32 `protobuf:"fixed32,8,opt,name=changed_ts,json=changedTs,proto3" json:"changed_ts,omitempty"`
+ // Identifier of the originating resource of the alarm
+ ResourceId string `protobuf:"bytes,9,opt,name=resource_id,json=resourceId,proto3" json:"resource_id,omitempty"`
+ // Textual explanation of the alarm
+ Description string `protobuf:"bytes,10,opt,name=description,proto3" json:"description,omitempty"`
+ // Key/Value storage for extra information that may give context to the alarm
+ Context map[string]string `protobuf:"bytes,11,rep,name=context,proto3" json:"context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // logical device id
+ LogicalDeviceId string `protobuf:"bytes,12,opt,name=logical_device_id,json=logicalDeviceId,proto3" json:"logical_device_id,omitempty"`
+ // alarm_type name indicates clearly the name of the alarm
+ AlarmTypeName string `protobuf:"bytes,13,opt,name=alarm_type_name,json=alarmTypeName,proto3" json:"alarm_type_name,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *AlarmEvent) Reset() { *m = AlarmEvent{} }
+func (m *AlarmEvent) String() string { return proto.CompactTextString(m) }
+func (*AlarmEvent) ProtoMessage() {}
+func (*AlarmEvent) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{12}
+}
+
+func (m *AlarmEvent) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_AlarmEvent.Unmarshal(m, b)
+}
+func (m *AlarmEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_AlarmEvent.Marshal(b, m, deterministic)
+}
+func (m *AlarmEvent) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_AlarmEvent.Merge(m, src)
+}
+func (m *AlarmEvent) XXX_Size() int {
+ return xxx_messageInfo_AlarmEvent.Size(m)
+}
+func (m *AlarmEvent) XXX_DiscardUnknown() {
+ xxx_messageInfo_AlarmEvent.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AlarmEvent proto.InternalMessageInfo
+
+func (m *AlarmEvent) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *AlarmEvent) GetType() AlarmEventType_Types {
+ if m != nil {
+ return m.Type
+ }
+ return AlarmEventType_COMMUNICATION
+}
+
+func (m *AlarmEvent) GetCategory() AlarmEventCategory_Types {
+ if m != nil {
+ return m.Category
+ }
+ return AlarmEventCategory_PON
+}
+
+func (m *AlarmEvent) GetState() AlarmEventState_Types {
+ if m != nil {
+ return m.State
+ }
+ return AlarmEventState_RAISED
+}
+
+func (m *AlarmEvent) GetSeverity() AlarmEventSeverity_Types {
+ if m != nil {
+ return m.Severity
+ }
+ return AlarmEventSeverity_INDETERMINATE
+}
+
+func (m *AlarmEvent) GetRaisedTs() float32 {
+ if m != nil {
+ return m.RaisedTs
+ }
+ return 0
+}
+
+func (m *AlarmEvent) GetReportedTs() float32 {
+ if m != nil {
+ return m.ReportedTs
+ }
+ return 0
+}
+
+func (m *AlarmEvent) GetChangedTs() float32 {
+ if m != nil {
+ return m.ChangedTs
+ }
+ return 0
+}
+
+func (m *AlarmEvent) GetResourceId() string {
+ if m != nil {
+ return m.ResourceId
+ }
+ return ""
+}
+
+func (m *AlarmEvent) GetDescription() string {
+ if m != nil {
+ return m.Description
+ }
+ return ""
+}
+
+func (m *AlarmEvent) GetContext() map[string]string {
+ if m != nil {
+ return m.Context
+ }
+ return nil
+}
+
+func (m *AlarmEvent) GetLogicalDeviceId() string {
+ if m != nil {
+ return m.LogicalDeviceId
+ }
+ return ""
+}
+
+func (m *AlarmEvent) GetAlarmTypeName() string {
+ if m != nil {
+ return m.AlarmTypeName
+ }
+ return ""
+}
+
+//
+// Describes the events specific to device
+type DeviceEvent struct {
+ // Identifier of the originating resource of the event, for ex: device_id
+ ResourceId string `protobuf:"bytes,1,opt,name=resource_id,json=resourceId,proto3" json:"resource_id,omitempty"`
+ // device_event_name indicates clearly the name of the device event
+ DeviceEventName string `protobuf:"bytes,2,opt,name=device_event_name,json=deviceEventName,proto3" json:"device_event_name,omitempty"`
+ // Textual explanation of the device event
+ Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
+ // Key/Value storage for extra information that may give context to the event
+ Context map[string]string `protobuf:"bytes,4,rep,name=context,proto3" json:"context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *DeviceEvent) Reset() { *m = DeviceEvent{} }
+func (m *DeviceEvent) String() string { return proto.CompactTextString(m) }
+func (*DeviceEvent) ProtoMessage() {}
+func (*DeviceEvent) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{13}
+}
+
+func (m *DeviceEvent) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_DeviceEvent.Unmarshal(m, b)
+}
+func (m *DeviceEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_DeviceEvent.Marshal(b, m, deterministic)
+}
+func (m *DeviceEvent) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_DeviceEvent.Merge(m, src)
+}
+func (m *DeviceEvent) XXX_Size() int {
+ return xxx_messageInfo_DeviceEvent.Size(m)
+}
+func (m *DeviceEvent) XXX_DiscardUnknown() {
+ xxx_messageInfo_DeviceEvent.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeviceEvent proto.InternalMessageInfo
+
+func (m *DeviceEvent) GetResourceId() string {
+ if m != nil {
+ return m.ResourceId
+ }
+ return ""
+}
+
+func (m *DeviceEvent) GetDeviceEventName() string {
+ if m != nil {
+ return m.DeviceEventName
+ }
+ return ""
+}
+
+func (m *DeviceEvent) GetDescription() string {
+ if m != nil {
+ return m.Description
+ }
+ return ""
+}
+
+func (m *DeviceEvent) GetContext() map[string]string {
+ if m != nil {
+ return m.Context
+ }
+ return nil
+}
+
+//
+// Identify the area of the system impacted by the event.
+type EventCategory struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *EventCategory) Reset() { *m = EventCategory{} }
+func (m *EventCategory) String() string { return proto.CompactTextString(m) }
+func (*EventCategory) ProtoMessage() {}
+func (*EventCategory) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{14}
+}
+
+func (m *EventCategory) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_EventCategory.Unmarshal(m, b)
+}
+func (m *EventCategory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_EventCategory.Marshal(b, m, deterministic)
+}
+func (m *EventCategory) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_EventCategory.Merge(m, src)
+}
+func (m *EventCategory) XXX_Size() int {
+ return xxx_messageInfo_EventCategory.Size(m)
+}
+func (m *EventCategory) XXX_DiscardUnknown() {
+ xxx_messageInfo_EventCategory.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_EventCategory proto.InternalMessageInfo
+
+//
+// Identify the functional category originating the event
+type EventSubCategory struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *EventSubCategory) Reset() { *m = EventSubCategory{} }
+func (m *EventSubCategory) String() string { return proto.CompactTextString(m) }
+func (*EventSubCategory) ProtoMessage() {}
+func (*EventSubCategory) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{15}
+}
+
+func (m *EventSubCategory) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_EventSubCategory.Unmarshal(m, b)
+}
+func (m *EventSubCategory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_EventSubCategory.Marshal(b, m, deterministic)
+}
+func (m *EventSubCategory) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_EventSubCategory.Merge(m, src)
+}
+func (m *EventSubCategory) XXX_Size() int {
+ return xxx_messageInfo_EventSubCategory.Size(m)
+}
+func (m *EventSubCategory) XXX_DiscardUnknown() {
+ xxx_messageInfo_EventSubCategory.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_EventSubCategory proto.InternalMessageInfo
+
+//
+// Identify the type of event
+type EventType struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *EventType) Reset() { *m = EventType{} }
+func (m *EventType) String() string { return proto.CompactTextString(m) }
+func (*EventType) ProtoMessage() {}
+func (*EventType) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{16}
+}
+
+func (m *EventType) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_EventType.Unmarshal(m, b)
+}
+func (m *EventType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_EventType.Marshal(b, m, deterministic)
+}
+func (m *EventType) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_EventType.Merge(m, src)
+}
+func (m *EventType) XXX_Size() int {
+ return xxx_messageInfo_EventType.Size(m)
+}
+func (m *EventType) XXX_DiscardUnknown() {
+ xxx_messageInfo_EventType.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_EventType proto.InternalMessageInfo
+
+//
+// Identify the functional category originating the event
+type EventHeader struct {
+ // Unique ID for this event. e.g. voltha.some_olt.1234
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // Refers to the functional area affect by the event
+ Category EventCategory_Types `protobuf:"varint,2,opt,name=category,proto3,enum=voltha.EventCategory_Types" json:"category,omitempty"`
+ // Refers to functional category of the event
+ SubCategory EventSubCategory_Types `protobuf:"varint,3,opt,name=sub_category,json=subCategory,proto3,enum=voltha.EventSubCategory_Types" json:"sub_category,omitempty"`
+ // Refers to the type of the event
+ Type EventType_Types `protobuf:"varint,4,opt,name=type,proto3,enum=voltha.EventType_Types" json:"type,omitempty"`
+ // The version identifier for this event type, thus allowing each
+ // event type to evolve independently. The version should be in the
+ // format “MAJOR.MINOR” format and minor changes must only be additive
+ // and non-breaking.
+ TypeVersion string `protobuf:"bytes,5,opt,name=type_version,json=typeVersion,proto3" json:"type_version,omitempty"`
+ // Timestamp at which the event was first raised.
+ // This represents the UTC time stamp since epoch (in seconds) when the
+ // the event was first raised from the source entity.
+ // If the source entity doesn't send the raised_ts, this shall be set
+ // to timestamp when the event was received.
+ RaisedTs float32 `protobuf:"fixed32,6,opt,name=raised_ts,json=raisedTs,proto3" json:"raised_ts,omitempty"`
+ // Timestamp at which the event was reported.
+ // This represents the UTC time stamp since epoch (in seconds) when the
+ // the event was reported (this time stamp is >= raised_ts).
+ // If the source entity that reported this event doesn't send the
+ // reported_ts, this shall be set to the same value as raised_ts.
+ ReportedTs float32 `protobuf:"fixed32,7,opt,name=reported_ts,json=reportedTs,proto3" json:"reported_ts,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *EventHeader) Reset() { *m = EventHeader{} }
+func (m *EventHeader) String() string { return proto.CompactTextString(m) }
+func (*EventHeader) ProtoMessage() {}
+func (*EventHeader) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{17}
+}
+
+func (m *EventHeader) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_EventHeader.Unmarshal(m, b)
+}
+func (m *EventHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_EventHeader.Marshal(b, m, deterministic)
+}
+func (m *EventHeader) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_EventHeader.Merge(m, src)
+}
+func (m *EventHeader) XXX_Size() int {
+ return xxx_messageInfo_EventHeader.Size(m)
+}
+func (m *EventHeader) XXX_DiscardUnknown() {
+ xxx_messageInfo_EventHeader.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_EventHeader proto.InternalMessageInfo
+
+func (m *EventHeader) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *EventHeader) GetCategory() EventCategory_Types {
+ if m != nil {
+ return m.Category
+ }
+ return EventCategory_COMMUNICATION
+}
+
+func (m *EventHeader) GetSubCategory() EventSubCategory_Types {
+ if m != nil {
+ return m.SubCategory
+ }
+ return EventSubCategory_PON
+}
+
+func (m *EventHeader) GetType() EventType_Types {
+ if m != nil {
+ return m.Type
+ }
+ return EventType_CONFIG_EVENT
+}
+
+func (m *EventHeader) GetTypeVersion() string {
+ if m != nil {
+ return m.TypeVersion
+ }
+ return ""
+}
+
+func (m *EventHeader) GetRaisedTs() float32 {
+ if m != nil {
+ return m.RaisedTs
+ }
+ return 0
+}
+
+func (m *EventHeader) GetReportedTs() float32 {
+ if m != nil {
+ return m.ReportedTs
+ }
+ return 0
+}
+
+//
+// Event Structure
+type Event struct {
+ // event header
+ Header *EventHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`
+ // oneof event types referred by EventType.
+ //
+ // Types that are valid to be assigned to EventType:
+ // *Event_ConfigEvent
+ // *Event_KpiEvent
+ // *Event_KpiEvent2
+ // *Event_DeviceEvent
+ EventType isEvent_EventType `protobuf_oneof:"event_type"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Event) Reset() { *m = Event{} }
+func (m *Event) String() string { return proto.CompactTextString(m) }
+func (*Event) ProtoMessage() {}
+func (*Event) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e63e6c07044fd2c4, []int{18}
+}
+
+func (m *Event) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Event.Unmarshal(m, b)
+}
+func (m *Event) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Event.Marshal(b, m, deterministic)
+}
+func (m *Event) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Event.Merge(m, src)
+}
+func (m *Event) XXX_Size() int {
+ return xxx_messageInfo_Event.Size(m)
+}
+func (m *Event) XXX_DiscardUnknown() {
+ xxx_messageInfo_Event.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Event proto.InternalMessageInfo
+
+func (m *Event) GetHeader() *EventHeader {
+ if m != nil {
+ return m.Header
+ }
+ return nil
+}
+
+type isEvent_EventType interface {
+ isEvent_EventType()
+}
+
+type Event_ConfigEvent struct {
+ ConfigEvent *ConfigEvent `protobuf:"bytes,2,opt,name=config_event,json=configEvent,proto3,oneof"`
+}
+
+type Event_KpiEvent struct {
+ KpiEvent *KpiEvent `protobuf:"bytes,3,opt,name=kpi_event,json=kpiEvent,proto3,oneof"`
+}
+
+type Event_KpiEvent2 struct {
+ KpiEvent2 *KpiEvent2 `protobuf:"bytes,4,opt,name=kpi_event2,json=kpiEvent2,proto3,oneof"`
+}
+
+type Event_DeviceEvent struct {
+ DeviceEvent *DeviceEvent `protobuf:"bytes,5,opt,name=device_event,json=deviceEvent,proto3,oneof"`
+}
+
+func (*Event_ConfigEvent) isEvent_EventType() {}
+
+func (*Event_KpiEvent) isEvent_EventType() {}
+
+func (*Event_KpiEvent2) isEvent_EventType() {}
+
+func (*Event_DeviceEvent) isEvent_EventType() {}
+
+func (m *Event) GetEventType() isEvent_EventType {
+ if m != nil {
+ return m.EventType
+ }
+ return nil
+}
+
+func (m *Event) GetConfigEvent() *ConfigEvent {
+ if x, ok := m.GetEventType().(*Event_ConfigEvent); ok {
+ return x.ConfigEvent
+ }
+ return nil
+}
+
+func (m *Event) GetKpiEvent() *KpiEvent {
+ if x, ok := m.GetEventType().(*Event_KpiEvent); ok {
+ return x.KpiEvent
+ }
+ return nil
+}
+
+func (m *Event) GetKpiEvent2() *KpiEvent2 {
+ if x, ok := m.GetEventType().(*Event_KpiEvent2); ok {
+ return x.KpiEvent2
+ }
+ return nil
+}
+
+func (m *Event) GetDeviceEvent() *DeviceEvent {
+ if x, ok := m.GetEventType().(*Event_DeviceEvent); ok {
+ return x.DeviceEvent
+ }
+ return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*Event) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*Event_ConfigEvent)(nil),
+ (*Event_KpiEvent)(nil),
+ (*Event_KpiEvent2)(nil),
+ (*Event_DeviceEvent)(nil),
+ }
+}
+
+func init() {
+ proto.RegisterEnum("voltha.ConfigEventType_Types", ConfigEventType_Types_name, ConfigEventType_Types_value)
+ proto.RegisterEnum("voltha.KpiEventType_Types", KpiEventType_Types_name, KpiEventType_Types_value)
+ proto.RegisterEnum("voltha.AlarmEventType_Types", AlarmEventType_Types_name, AlarmEventType_Types_value)
+ proto.RegisterEnum("voltha.AlarmEventCategory_Types", AlarmEventCategory_Types_name, AlarmEventCategory_Types_value)
+ proto.RegisterEnum("voltha.AlarmEventState_Types", AlarmEventState_Types_name, AlarmEventState_Types_value)
+ proto.RegisterEnum("voltha.AlarmEventSeverity_Types", AlarmEventSeverity_Types_name, AlarmEventSeverity_Types_value)
+ proto.RegisterEnum("voltha.EventCategory_Types", EventCategory_Types_name, EventCategory_Types_value)
+ proto.RegisterEnum("voltha.EventSubCategory_Types", EventSubCategory_Types_name, EventSubCategory_Types_value)
+ proto.RegisterEnum("voltha.EventType_Types", EventType_Types_name, EventType_Types_value)
+ proto.RegisterType((*ConfigEventType)(nil), "voltha.ConfigEventType")
+ proto.RegisterType((*ConfigEvent)(nil), "voltha.ConfigEvent")
+ proto.RegisterType((*KpiEventType)(nil), "voltha.KpiEventType")
+ proto.RegisterType((*MetricMetaData)(nil), "voltha.MetricMetaData")
+ proto.RegisterMapType((map[string]string)(nil), "voltha.MetricMetaData.ContextEntry")
+ proto.RegisterType((*MetricValuePairs)(nil), "voltha.MetricValuePairs")
+ proto.RegisterMapType((map[string]float32)(nil), "voltha.MetricValuePairs.MetricsEntry")
+ proto.RegisterType((*MetricInformation)(nil), "voltha.MetricInformation")
+ proto.RegisterMapType((map[string]float32)(nil), "voltha.MetricInformation.MetricsEntry")
+ proto.RegisterType((*KpiEvent)(nil), "voltha.KpiEvent")
+ proto.RegisterMapType((map[string]*MetricValuePairs)(nil), "voltha.KpiEvent.PrefixesEntry")
+ proto.RegisterType((*KpiEvent2)(nil), "voltha.KpiEvent2")
+ proto.RegisterType((*AlarmEventType)(nil), "voltha.AlarmEventType")
+ proto.RegisterType((*AlarmEventCategory)(nil), "voltha.AlarmEventCategory")
+ proto.RegisterType((*AlarmEventState)(nil), "voltha.AlarmEventState")
+ proto.RegisterType((*AlarmEventSeverity)(nil), "voltha.AlarmEventSeverity")
+ proto.RegisterType((*AlarmEvent)(nil), "voltha.AlarmEvent")
+ proto.RegisterMapType((map[string]string)(nil), "voltha.AlarmEvent.ContextEntry")
+ proto.RegisterType((*DeviceEvent)(nil), "voltha.DeviceEvent")
+ proto.RegisterMapType((map[string]string)(nil), "voltha.DeviceEvent.ContextEntry")
+ proto.RegisterType((*EventCategory)(nil), "voltha.EventCategory")
+ proto.RegisterType((*EventSubCategory)(nil), "voltha.EventSubCategory")
+ proto.RegisterType((*EventType)(nil), "voltha.EventType")
+ proto.RegisterType((*EventHeader)(nil), "voltha.EventHeader")
+ proto.RegisterType((*Event)(nil), "voltha.Event")
+}
+
+func init() { proto.RegisterFile("voltha_protos/events.proto", fileDescriptor_e63e6c07044fd2c4) }
+
+var fileDescriptor_e63e6c07044fd2c4 = []byte{
+ // 1334 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xdd, 0x72, 0xdb, 0x44,
+ 0x14, 0xb6, 0xe4, 0x9f, 0xd8, 0x47, 0x4e, 0xa2, 0x6c, 0x19, 0x30, 0xee, 0x5f, 0x10, 0x43, 0x27,
+ 0xd3, 0x0e, 0x36, 0x38, 0xcc, 0x10, 0x02, 0x0c, 0xb8, 0x8e, 0x68, 0xd4, 0xd6, 0x72, 0x90, 0x9d,
+ 0x74, 0xe0, 0xc6, 0xb3, 0xb1, 0x36, 0xb6, 0x26, 0xb6, 0xe4, 0x91, 0x36, 0xa6, 0x79, 0x00, 0xae,
+ 0xb9, 0xe4, 0x82, 0x07, 0xe0, 0x49, 0x78, 0x0c, 0x5e, 0x80, 0x6b, 0x1e, 0x80, 0xd9, 0x1f, 0x59,
+ 0x92, 0xe3, 0xc2, 0x45, 0xa6, 0x5c, 0x79, 0x75, 0xfe, 0xf6, 0x3b, 0xdf, 0x9e, 0x73, 0x76, 0x0d,
+ 0xf5, 0x45, 0x30, 0xa5, 0x13, 0x3c, 0x9c, 0x87, 0x01, 0x0d, 0xa2, 0x26, 0x59, 0x10, 0x9f, 0x46,
+ 0x0d, 0xfe, 0x85, 0x4a, 0x42, 0x57, 0xaf, 0x65, 0x6d, 0x66, 0x84, 0x62, 0x61, 0x51, 0xbf, 0x37,
+ 0x0e, 0x82, 0xf1, 0x94, 0x34, 0xf1, 0xdc, 0x6b, 0x62, 0xdf, 0x0f, 0x28, 0xa6, 0x5e, 0xe0, 0x4b,
+ 0x7f, 0xe3, 0x4b, 0xd8, 0xee, 0x04, 0xfe, 0x85, 0x37, 0x36, 0x59, 0xd4, 0xc1, 0xf5, 0x9c, 0x18,
+ 0x7b, 0x50, 0x64, 0xbf, 0x11, 0xda, 0x80, 0x3c, 0x76, 0x5d, 0x3d, 0x87, 0x00, 0x4a, 0x21, 0x99,
+ 0x05, 0x0b, 0xa2, 0x2b, 0x6c, 0x7d, 0x35, 0x77, 0x31, 0x25, 0xba, 0x6a, 0x4c, 0x40, 0x4b, 0x39,
+ 0xa3, 0x4f, 0xa1, 0x40, 0xaf, 0xe7, 0xa4, 0xa6, 0xec, 0x2a, 0x7b, 0x5b, 0xad, 0xfb, 0x0d, 0x01,
+ 0xa9, 0xb1, 0x12, 0xbf, 0xc1, 0x83, 0x3b, 0xdc, 0x14, 0x21, 0x28, 0x4c, 0x70, 0x34, 0xa9, 0xa9,
+ 0xbb, 0xca, 0x5e, 0xc5, 0xe1, 0x6b, 0x26, 0x73, 0x31, 0xc5, 0xb5, 0xbc, 0x90, 0xb1, 0xb5, 0xf1,
+ 0x18, 0xaa, 0x2f, 0xe6, 0x5e, 0x82, 0xb1, 0x1e, 0x63, 0xac, 0x40, 0x31, 0x9a, 0x7a, 0x23, 0xa2,
+ 0xe7, 0x50, 0x09, 0x54, 0x1a, 0xe9, 0x8a, 0xf1, 0xab, 0x0a, 0x5b, 0x5d, 0x42, 0x43, 0x6f, 0xd4,
+ 0x25, 0x14, 0x1f, 0x61, 0x8a, 0xd1, 0x3b, 0x50, 0xa4, 0x1e, 0x9d, 0x0a, 0x68, 0x15, 0x47, 0x7c,
+ 0xa0, 0x2d, 0xe6, 0xc0, 0xb7, 0x56, 0x1c, 0x95, 0x46, 0xe8, 0x31, 0xec, 0x4c, 0x83, 0xb1, 0x37,
+ 0xc2, 0xd3, 0xa1, 0x4b, 0x16, 0xde, 0x88, 0x0c, 0x3d, 0x57, 0xa2, 0xd8, 0x96, 0x8a, 0x23, 0x2e,
+ 0xb7, 0x5c, 0x74, 0x17, 0x2a, 0x11, 0x09, 0x3d, 0x3c, 0x1d, 0xfa, 0x41, 0xad, 0xc0, 0x6d, 0xca,
+ 0x42, 0x60, 0x07, 0x4c, 0x99, 0x04, 0x28, 0x0a, 0xa5, 0x1b, 0x7b, 0x7e, 0x0d, 0x1b, 0xa3, 0xc0,
+ 0xa7, 0xe4, 0x35, 0xad, 0x95, 0x76, 0xf3, 0x7b, 0x5a, 0xeb, 0xc3, 0x98, 0xa8, 0x2c, 0x68, 0xc6,
+ 0x1b, 0xb3, 0x32, 0x7d, 0x1a, 0x5e, 0x3b, 0xb1, 0x4f, 0xfd, 0x10, 0xaa, 0x69, 0x05, 0xd2, 0x21,
+ 0x7f, 0x49, 0xae, 0x65, 0x62, 0x6c, 0xc9, 0x92, 0x5d, 0xe0, 0xe9, 0x15, 0x91, 0xa4, 0x8a, 0x8f,
+ 0x43, 0xf5, 0x40, 0x31, 0x7e, 0x51, 0x40, 0x17, 0x9b, 0x9c, 0x31, 0xd9, 0x09, 0xf6, 0xc2, 0x08,
+ 0x7d, 0x03, 0x1b, 0x33, 0x2e, 0x8b, 0x6a, 0x0a, 0xc7, 0xf3, 0x51, 0x16, 0x4f, 0x62, 0x2a, 0x05,
+ 0x91, 0x44, 0x24, 0xbd, 0x18, 0xa2, 0xb4, 0xe2, 0xbf, 0x10, 0xa9, 0x69, 0x44, 0x7f, 0x28, 0xb0,
+ 0x23, 0x9c, 0x2d, 0xff, 0x22, 0x08, 0x67, 0xbc, 0x36, 0x51, 0x0b, 0xca, 0xac, 0x80, 0x79, 0x15,
+ 0xb0, 0x30, 0x5a, 0xeb, 0xdd, 0xf5, 0x1c, 0x39, 0x4b, 0x3b, 0xf4, 0x6d, 0x92, 0x86, 0xca, 0xd3,
+ 0x78, 0x94, 0x75, 0x49, 0xc5, 0x7f, 0x0b, 0x79, 0xfc, 0xa9, 0x40, 0x39, 0x2e, 0x50, 0xd4, 0xc8,
+ 0xf4, 0x41, 0x3d, 0xc6, 0x91, 0x2e, 0xe0, 0x4c, 0x13, 0x24, 0x75, 0xa8, 0xf2, 0x3a, 0x3c, 0x84,
+ 0xf2, 0x3c, 0x24, 0x17, 0xde, 0x6b, 0x12, 0xd5, 0xf2, 0x3c, 0x97, 0x07, 0xab, 0x31, 0x1a, 0x27,
+ 0xd2, 0x40, 0xe4, 0xb0, 0xb4, 0xaf, 0x9f, 0xc2, 0x66, 0x46, 0xb5, 0x26, 0x8b, 0x46, 0x3a, 0x0b,
+ 0xad, 0x55, 0x7b, 0xd3, 0x71, 0xa7, 0xf3, 0xfb, 0x59, 0x81, 0x4a, 0xbc, 0x77, 0xeb, 0x16, 0x09,
+ 0x8a, 0x46, 0x3b, 0x00, 0xe0, 0x4d, 0x3b, 0x94, 0x7d, 0xce, 0x52, 0x7c, 0xff, 0x8d, 0xc7, 0xe5,
+ 0x54, 0xb8, 0x31, 0x3b, 0x6f, 0xe3, 0x27, 0xd8, 0x6a, 0x4f, 0x71, 0x38, 0x4b, 0x26, 0x01, 0x89,
+ 0x27, 0xc1, 0x0e, 0x6c, 0x76, 0x7a, 0xdd, 0xee, 0xa9, 0x6d, 0x75, 0xda, 0x03, 0xab, 0x67, 0xeb,
+ 0x39, 0xb4, 0x0d, 0x9a, 0x69, 0x9f, 0x59, 0x4e, 0xcf, 0xee, 0x9a, 0xf6, 0x40, 0x57, 0xd0, 0x26,
+ 0x54, 0xcc, 0xef, 0x4f, 0xad, 0x13, 0xfe, 0xa9, 0x22, 0x0d, 0x36, 0xfa, 0xa6, 0x73, 0x66, 0x75,
+ 0x4c, 0x3d, 0x8f, 0xb6, 0x00, 0x4e, 0x9c, 0x5e, 0xc7, 0xec, 0xf7, 0x2d, 0xfb, 0x99, 0x5e, 0x40,
+ 0x55, 0x28, 0xf7, 0xcd, 0xce, 0xa9, 0x63, 0x0d, 0x7e, 0xd0, 0x8b, 0xc6, 0x73, 0x40, 0xc9, 0xc6,
+ 0x1d, 0x4c, 0xc9, 0x38, 0x08, 0xaf, 0x8d, 0xcf, 0x52, 0xa3, 0xf2, 0x84, 0x6f, 0xb9, 0x01, 0xf9,
+ 0xde, 0x4b, 0xb6, 0x15, 0x5b, 0xf0, 0x4d, 0xf8, 0xe2, 0x54, 0xcf, 0xb3, 0x85, 0x6d, 0x5b, 0x7a,
+ 0xc1, 0xd8, 0x87, 0xed, 0x24, 0x56, 0x9f, 0x62, 0x4a, 0x8c, 0xdd, 0x38, 0x10, 0x40, 0xc9, 0x69,
+ 0x5b, 0x7d, 0xf3, 0x48, 0xcf, 0x31, 0x78, 0x9d, 0x97, 0x66, 0xdb, 0x31, 0x8f, 0x74, 0xc5, 0xc0,
+ 0x69, 0x00, 0x7d, 0xb2, 0x20, 0xa1, 0x47, 0xaf, 0x8d, 0x17, 0xa9, 0xec, 0x2d, 0xfb, 0xc8, 0x1c,
+ 0x98, 0x4e, 0xd7, 0xb2, 0xdb, 0x03, 0x53, 0xb8, 0xbf, 0x6a, 0x3b, 0x36, 0xcb, 0x46, 0x61, 0x73,
+ 0xb2, 0x6b, 0xd9, 0x3d, 0x47, 0x57, 0xf9, 0xb2, 0xfd, 0xbc, 0xe7, 0xe8, 0x79, 0x96, 0x63, 0xc7,
+ 0xb1, 0x06, 0x56, 0xa7, 0xfd, 0x52, 0x2f, 0x18, 0x7f, 0x15, 0x00, 0x92, 0x3d, 0xd8, 0xa9, 0x79,
+ 0xae, 0x2c, 0x1c, 0xd5, 0x73, 0xd1, 0x27, 0xf2, 0xd4, 0x55, 0x7e, 0xea, 0xf7, 0xe2, 0xf3, 0xca,
+ 0x9e, 0x47, 0xe6, 0xdc, 0xbf, 0x82, 0xf2, 0x48, 0x52, 0xc5, 0xe7, 0xe8, 0x56, 0x6b, 0xf7, 0xa6,
+ 0x57, 0x4c, 0xa6, 0xf4, 0x5c, 0x7a, 0xa0, 0x7d, 0x28, 0x46, 0x8c, 0x1c, 0x3e, 0x5e, 0x53, 0xf7,
+ 0xc9, 0x0a, 0x77, 0xd2, 0x4f, 0xd8, 0xb2, 0x2d, 0x23, 0x49, 0x0e, 0x9f, 0xbc, 0x6b, 0xb7, 0x8c,
+ 0xe9, 0x8b, 0xb7, 0x8c, 0x3d, 0xd8, 0xe0, 0x0e, 0xb1, 0x17, 0x11, 0x77, 0x48, 0xa3, 0x5a, 0x89,
+ 0x37, 0x64, 0x59, 0x08, 0x06, 0x11, 0x7a, 0x08, 0x5a, 0x48, 0xe6, 0x41, 0x48, 0x85, 0x7a, 0x83,
+ 0xab, 0x21, 0x16, 0x0d, 0x22, 0x74, 0x1f, 0x60, 0x34, 0xc1, 0xfe, 0x58, 0xe8, 0xcb, 0x5c, 0x5f,
+ 0x91, 0x92, 0xd8, 0x3f, 0x0a, 0xae, 0x42, 0x71, 0x2f, 0x54, 0x38, 0xb1, 0x10, 0x8b, 0x2c, 0x17,
+ 0xed, 0x82, 0xe6, 0x92, 0x68, 0x14, 0x7a, 0x73, 0x56, 0xf6, 0x35, 0xe0, 0x06, 0x69, 0x11, 0xfa,
+ 0x22, 0xb9, 0x3b, 0x34, 0xde, 0x35, 0x0f, 0x6f, 0x26, 0xb7, 0xfe, 0xde, 0x58, 0x7f, 0xb9, 0x55,
+ 0xd7, 0x5f, 0x6e, 0x8f, 0x60, 0x1b, 0xb3, 0x78, 0x43, 0x76, 0x8a, 0x43, 0x1f, 0xcf, 0x48, 0x6d,
+ 0x93, 0x5b, 0x6e, 0x72, 0x31, 0x63, 0xcd, 0xc6, 0x33, 0x72, 0xab, 0xbb, 0xe8, 0x6f, 0x05, 0x34,
+ 0xb1, 0xa1, 0xa8, 0xb6, 0x15, 0x76, 0x94, 0x1b, 0xec, 0x3c, 0x86, 0x1d, 0x09, 0x9c, 0x3f, 0x80,
+ 0x04, 0x2c, 0x11, 0x76, 0xdb, 0x4d, 0x02, 0x31, 0x60, 0xab, 0x4c, 0xe6, 0x6f, 0x32, 0x79, 0x98,
+ 0x30, 0x59, 0xe0, 0x4c, 0x2e, 0xcb, 0x24, 0x05, 0xea, 0x2d, 0x5c, 0xc1, 0x0b, 0xd8, 0xcc, 0x8e,
+ 0x90, 0xff, 0x69, 0x7e, 0x1d, 0x83, 0x2e, 0x4a, 0xff, 0xea, 0xfc, 0x96, 0xd3, 0xeb, 0x15, 0x54,
+ 0x92, 0xe9, 0xfb, 0x3c, 0x0e, 0xa1, 0x43, 0xb5, 0xd3, 0xb3, 0xbf, 0xb3, 0x9e, 0x0d, 0xcd, 0x33,
+ 0x06, 0x2e, 0xc7, 0xb0, 0xbe, 0x38, 0xb1, 0xe4, 0xa7, 0xc2, 0xe0, 0x2d, 0x3f, 0x5b, 0xba, 0xca,
+ 0x1c, 0x8e, 0x4c, 0x06, 0x5d, 0x5a, 0xe4, 0x8d, 0xdf, 0x55, 0xd0, 0x78, 0xe4, 0x63, 0x82, 0x5d,
+ 0x12, 0xde, 0x98, 0x3f, 0x9f, 0xa7, 0xa6, 0x89, 0x98, 0x41, 0x77, 0xe3, 0x33, 0xfb, 0xf7, 0x41,
+ 0xd2, 0x86, 0x6a, 0x74, 0x75, 0x3e, 0x5c, 0x19, 0x45, 0x0f, 0x32, 0xce, 0x29, 0x5e, 0xa4, 0xbf,
+ 0x16, 0x25, 0x22, 0xf4, 0x44, 0xce, 0x3e, 0x31, 0x8a, 0xde, 0xcb, 0xb8, 0xde, 0x18, 0x7b, 0x1f,
+ 0x40, 0x95, 0x37, 0xce, 0x82, 0x84, 0x11, 0x2b, 0x3f, 0xf1, 0x02, 0xd4, 0x98, 0xec, 0x4c, 0x88,
+ 0x6e, 0x37, 0x68, 0x8c, 0xdf, 0x54, 0x28, 0x8a, 0xae, 0x79, 0x02, 0xa5, 0x09, 0x67, 0x4b, 0xbe,
+ 0x93, 0xee, 0x64, 0x90, 0x09, 0x22, 0x1d, 0x69, 0x82, 0x0e, 0xa0, 0x3a, 0xe2, 0x6f, 0x71, 0xd1,
+ 0x41, 0xf2, 0xfe, 0xbf, 0xb3, 0xe6, 0x9d, 0x7e, 0x9c, 0x73, 0xb4, 0x51, 0xea, 0x65, 0xdf, 0x84,
+ 0xca, 0xe5, 0xdc, 0x93, 0x6e, 0x79, 0xee, 0xa6, 0xaf, 0xde, 0xfa, 0xc7, 0x39, 0xa7, 0x7c, 0x19,
+ 0x3f, 0x81, 0x5a, 0x00, 0x4b, 0x87, 0x16, 0x67, 0x4d, 0x6b, 0xed, 0xac, 0x7a, 0xb4, 0x8e, 0x73,
+ 0x4e, 0xe5, 0x72, 0xf9, 0xaa, 0x38, 0x80, 0x6a, 0xba, 0xc1, 0x39, 0x6d, 0x29, 0x78, 0xa9, 0xbe,
+ 0x64, 0xf0, 0x52, 0x2d, 0xff, 0xb4, 0x0a, 0x20, 0x66, 0x02, 0xa3, 0xf8, 0xa9, 0x09, 0x77, 0x82,
+ 0x70, 0xdc, 0x08, 0xe6, 0xc4, 0x1f, 0x05, 0xa1, 0x2b, 0xfd, 0x7f, 0x6c, 0x8c, 0x3d, 0x3a, 0xb9,
+ 0x3a, 0x6f, 0x8c, 0x82, 0x59, 0x33, 0xd6, 0x35, 0x85, 0xee, 0x63, 0xf9, 0xaf, 0x69, 0xb1, 0xdf,
+ 0x1c, 0x07, 0x52, 0x76, 0x5e, 0xe2, 0xc2, 0xfd, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x8c, 0x4c,
+ 0x16, 0xa6, 0x7e, 0x0d, 0x00, 0x00,
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/health.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/voltha/health.pb.go
new file mode 100644
index 0000000..42b0541
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/voltha/health.pb.go
@@ -0,0 +1,200 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: voltha_protos/health.proto
+
+package voltha
+
+import (
+ context "context"
+ fmt "fmt"
+ proto "github.com/golang/protobuf/proto"
+ empty "github.com/golang/protobuf/ptypes/empty"
+ _ "github.com/opencord/voltha-protos/v3/go/common"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ grpc "google.golang.org/grpc"
+ math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// Health states
+type HealthStatus_HealthState int32
+
+const (
+ HealthStatus_HEALTHY HealthStatus_HealthState = 0
+ HealthStatus_OVERLOADED HealthStatus_HealthState = 1
+ HealthStatus_DYING HealthStatus_HealthState = 2
+)
+
+var HealthStatus_HealthState_name = map[int32]string{
+ 0: "HEALTHY",
+ 1: "OVERLOADED",
+ 2: "DYING",
+}
+
+var HealthStatus_HealthState_value = map[string]int32{
+ "HEALTHY": 0,
+ "OVERLOADED": 1,
+ "DYING": 2,
+}
+
+func (x HealthStatus_HealthState) String() string {
+ return proto.EnumName(HealthStatus_HealthState_name, int32(x))
+}
+
+func (HealthStatus_HealthState) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_dd1fc2b2d96d69b8, []int{0, 0}
+}
+
+// Encode health status of a Voltha instance
+type HealthStatus struct {
+ // Current state of health of this Voltha instance
+ State HealthStatus_HealthState `protobuf:"varint,1,opt,name=state,proto3,enum=voltha.HealthStatus_HealthState" json:"state,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *HealthStatus) Reset() { *m = HealthStatus{} }
+func (m *HealthStatus) String() string { return proto.CompactTextString(m) }
+func (*HealthStatus) ProtoMessage() {}
+func (*HealthStatus) Descriptor() ([]byte, []int) {
+ return fileDescriptor_dd1fc2b2d96d69b8, []int{0}
+}
+
+func (m *HealthStatus) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_HealthStatus.Unmarshal(m, b)
+}
+func (m *HealthStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_HealthStatus.Marshal(b, m, deterministic)
+}
+func (m *HealthStatus) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_HealthStatus.Merge(m, src)
+}
+func (m *HealthStatus) XXX_Size() int {
+ return xxx_messageInfo_HealthStatus.Size(m)
+}
+func (m *HealthStatus) XXX_DiscardUnknown() {
+ xxx_messageInfo_HealthStatus.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_HealthStatus proto.InternalMessageInfo
+
+func (m *HealthStatus) GetState() HealthStatus_HealthState {
+ if m != nil {
+ return m.State
+ }
+ return HealthStatus_HEALTHY
+}
+
+func init() {
+ proto.RegisterEnum("voltha.HealthStatus_HealthState", HealthStatus_HealthState_name, HealthStatus_HealthState_value)
+ proto.RegisterType((*HealthStatus)(nil), "voltha.HealthStatus")
+}
+
+func init() { proto.RegisterFile("voltha_protos/health.proto", fileDescriptor_dd1fc2b2d96d69b8) }
+
+var fileDescriptor_dd1fc2b2d96d69b8 = []byte{
+ // 302 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2a, 0xcb, 0xcf, 0x29,
+ 0xc9, 0x48, 0x8c, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x2f, 0xd6, 0xcf, 0x48, 0x4d, 0xcc, 0x29, 0xc9,
+ 0xd0, 0x03, 0xf3, 0x84, 0xd8, 0x20, 0x72, 0x52, 0x32, 0xe9, 0xf9, 0xf9, 0xe9, 0x39, 0xa9, 0xfa,
+ 0x89, 0x05, 0x99, 0xfa, 0x89, 0x79, 0x79, 0xf9, 0x25, 0x89, 0x25, 0x99, 0xf9, 0x79, 0xc5, 0x10,
+ 0x55, 0x52, 0xd2, 0x50, 0x59, 0x30, 0x2f, 0xa9, 0x34, 0x4d, 0x3f, 0x35, 0xb7, 0xa0, 0xa4, 0x12,
+ 0x2a, 0x29, 0x81, 0x6a, 0x7c, 0x6e, 0x6a, 0x49, 0x22, 0x44, 0x46, 0xa9, 0x85, 0x91, 0x8b, 0xc7,
+ 0x03, 0x6c, 0x5b, 0x70, 0x49, 0x62, 0x49, 0x69, 0xb1, 0x90, 0x2d, 0x17, 0x6b, 0x71, 0x49, 0x62,
+ 0x49, 0xaa, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0x9f, 0x91, 0x82, 0x1e, 0x44, 0xab, 0x1e, 0xb2, 0x22,
+ 0x24, 0x4e, 0xaa, 0x13, 0xeb, 0x8b, 0x6f, 0x67, 0x65, 0x19, 0x83, 0x20, 0xba, 0x94, 0x4c, 0xb9,
+ 0xb8, 0x91, 0x24, 0x85, 0xb8, 0xb9, 0xd8, 0x3d, 0x5c, 0x1d, 0x7d, 0x42, 0x3c, 0x22, 0x05, 0x18,
+ 0x84, 0xf8, 0xb8, 0xb8, 0xfc, 0xc3, 0x5c, 0x83, 0x7c, 0xfc, 0x1d, 0x5d, 0x5c, 0x5d, 0x04, 0x18,
+ 0x85, 0x38, 0xb9, 0x58, 0x5d, 0x22, 0x3d, 0xfd, 0xdc, 0x05, 0x98, 0x8c, 0x12, 0xb9, 0x78, 0xa1,
+ 0xda, 0x52, 0x8b, 0xca, 0x32, 0x93, 0x53, 0x85, 0x02, 0xb8, 0xf8, 0xdd, 0x53, 0x4b, 0x50, 0x5c,
+ 0x26, 0xa6, 0x07, 0xf1, 0xa2, 0x1e, 0xcc, 0x8b, 0x7a, 0xae, 0x20, 0x2f, 0x4a, 0x89, 0x60, 0x73,
+ 0xa2, 0x12, 0x7f, 0xd3, 0xe5, 0x27, 0x93, 0x99, 0x38, 0x85, 0xd8, 0xa1, 0x81, 0xe9, 0xe4, 0xca,
+ 0x25, 0x9c, 0x5f, 0x94, 0xae, 0x97, 0x5f, 0x90, 0x9a, 0x97, 0x9c, 0x5f, 0x94, 0x02, 0xd5, 0x14,
+ 0xa5, 0x97, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x0f, 0x93, 0xd3, 0x87,
+ 0xc8, 0xe9, 0x42, 0x83, 0xab, 0xcc, 0x58, 0x3f, 0x3d, 0x1f, 0x2a, 0x96, 0xc4, 0x06, 0x16, 0x34,
+ 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x39, 0x87, 0x64, 0xd7, 0xb2, 0x01, 0x00, 0x00,
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConn
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+const _ = grpc.SupportPackageIsVersion4
+
+// HealthServiceClient is the client API for HealthService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
+type HealthServiceClient interface {
+ // Return current health status of a Voltha instance
+ GetHealthStatus(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*HealthStatus, error)
+}
+
+type healthServiceClient struct {
+ cc *grpc.ClientConn
+}
+
+func NewHealthServiceClient(cc *grpc.ClientConn) HealthServiceClient {
+ return &healthServiceClient{cc}
+}
+
+func (c *healthServiceClient) GetHealthStatus(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*HealthStatus, error) {
+ out := new(HealthStatus)
+ err := c.cc.Invoke(ctx, "/voltha.HealthService/GetHealthStatus", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// HealthServiceServer is the server API for HealthService service.
+type HealthServiceServer interface {
+ // Return current health status of a Voltha instance
+ GetHealthStatus(context.Context, *empty.Empty) (*HealthStatus, error)
+}
+
+func RegisterHealthServiceServer(s *grpc.Server, srv HealthServiceServer) {
+ s.RegisterService(&_HealthService_serviceDesc, srv)
+}
+
+func _HealthService_GetHealthStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(empty.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(HealthServiceServer).GetHealthStatus(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.HealthService/GetHealthStatus",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(HealthServiceServer).GetHealthStatus(ctx, req.(*empty.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+var _HealthService_serviceDesc = grpc.ServiceDesc{
+ ServiceName: "voltha.HealthService",
+ HandlerType: (*HealthServiceServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "GetHealthStatus",
+ Handler: _HealthService_GetHealthStatus_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "voltha_protos/health.proto",
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/logical_device.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/voltha/logical_device.pb.go
new file mode 100644
index 0000000..8ebaa02
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/voltha/logical_device.pb.go
@@ -0,0 +1,391 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: voltha_protos/logical_device.proto
+
+package voltha
+
+import (
+ fmt "fmt"
+ proto "github.com/golang/protobuf/proto"
+ _ "github.com/opencord/voltha-protos/v3/go/common"
+ openflow_13 "github.com/opencord/voltha-protos/v3/go/openflow_13"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+type LogicalPortId struct {
+ // unique id of logical device
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // id of the port on the logical device
+ PortId string `protobuf:"bytes,2,opt,name=port_id,json=portId,proto3" json:"port_id,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *LogicalPortId) Reset() { *m = LogicalPortId{} }
+func (m *LogicalPortId) String() string { return proto.CompactTextString(m) }
+func (*LogicalPortId) ProtoMessage() {}
+func (*LogicalPortId) Descriptor() ([]byte, []int) {
+ return fileDescriptor_caf139ab3abc8240, []int{0}
+}
+
+func (m *LogicalPortId) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_LogicalPortId.Unmarshal(m, b)
+}
+func (m *LogicalPortId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_LogicalPortId.Marshal(b, m, deterministic)
+}
+func (m *LogicalPortId) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_LogicalPortId.Merge(m, src)
+}
+func (m *LogicalPortId) XXX_Size() int {
+ return xxx_messageInfo_LogicalPortId.Size(m)
+}
+func (m *LogicalPortId) XXX_DiscardUnknown() {
+ xxx_messageInfo_LogicalPortId.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_LogicalPortId proto.InternalMessageInfo
+
+func (m *LogicalPortId) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *LogicalPortId) GetPortId() string {
+ if m != nil {
+ return m.PortId
+ }
+ return ""
+}
+
+type LogicalPort struct {
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ OfpPort *openflow_13.OfpPort `protobuf:"bytes,2,opt,name=ofp_port,json=ofpPort,proto3" json:"ofp_port,omitempty"`
+ DeviceId string `protobuf:"bytes,3,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+ DevicePortNo uint32 `protobuf:"varint,4,opt,name=device_port_no,json=devicePortNo,proto3" json:"device_port_no,omitempty"`
+ RootPort bool `protobuf:"varint,5,opt,name=root_port,json=rootPort,proto3" json:"root_port,omitempty"`
+ OfpPortStats *openflow_13.OfpPortStats `protobuf:"bytes,6,opt,name=ofp_port_stats,json=ofpPortStats,proto3" json:"ofp_port_stats,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *LogicalPort) Reset() { *m = LogicalPort{} }
+func (m *LogicalPort) String() string { return proto.CompactTextString(m) }
+func (*LogicalPort) ProtoMessage() {}
+func (*LogicalPort) Descriptor() ([]byte, []int) {
+ return fileDescriptor_caf139ab3abc8240, []int{1}
+}
+
+func (m *LogicalPort) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_LogicalPort.Unmarshal(m, b)
+}
+func (m *LogicalPort) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_LogicalPort.Marshal(b, m, deterministic)
+}
+func (m *LogicalPort) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_LogicalPort.Merge(m, src)
+}
+func (m *LogicalPort) XXX_Size() int {
+ return xxx_messageInfo_LogicalPort.Size(m)
+}
+func (m *LogicalPort) XXX_DiscardUnknown() {
+ xxx_messageInfo_LogicalPort.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_LogicalPort proto.InternalMessageInfo
+
+func (m *LogicalPort) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *LogicalPort) GetOfpPort() *openflow_13.OfpPort {
+ if m != nil {
+ return m.OfpPort
+ }
+ return nil
+}
+
+func (m *LogicalPort) GetDeviceId() string {
+ if m != nil {
+ return m.DeviceId
+ }
+ return ""
+}
+
+func (m *LogicalPort) GetDevicePortNo() uint32 {
+ if m != nil {
+ return m.DevicePortNo
+ }
+ return 0
+}
+
+func (m *LogicalPort) GetRootPort() bool {
+ if m != nil {
+ return m.RootPort
+ }
+ return false
+}
+
+func (m *LogicalPort) GetOfpPortStats() *openflow_13.OfpPortStats {
+ if m != nil {
+ return m.OfpPortStats
+ }
+ return nil
+}
+
+type LogicalPorts struct {
+ Items []*LogicalPort `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *LogicalPorts) Reset() { *m = LogicalPorts{} }
+func (m *LogicalPorts) String() string { return proto.CompactTextString(m) }
+func (*LogicalPorts) ProtoMessage() {}
+func (*LogicalPorts) Descriptor() ([]byte, []int) {
+ return fileDescriptor_caf139ab3abc8240, []int{2}
+}
+
+func (m *LogicalPorts) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_LogicalPorts.Unmarshal(m, b)
+}
+func (m *LogicalPorts) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_LogicalPorts.Marshal(b, m, deterministic)
+}
+func (m *LogicalPorts) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_LogicalPorts.Merge(m, src)
+}
+func (m *LogicalPorts) XXX_Size() int {
+ return xxx_messageInfo_LogicalPorts.Size(m)
+}
+func (m *LogicalPorts) XXX_DiscardUnknown() {
+ xxx_messageInfo_LogicalPorts.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_LogicalPorts proto.InternalMessageInfo
+
+func (m *LogicalPorts) GetItems() []*LogicalPort {
+ if m != nil {
+ return m.Items
+ }
+ return nil
+}
+
+type LogicalDevice struct {
+ // unique id of logical device
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // unique datapath id for the logical device (used by the SDN controller)
+ DatapathId uint64 `protobuf:"varint,2,opt,name=datapath_id,json=datapathId,proto3" json:"datapath_id,omitempty"`
+ // device description
+ Desc *openflow_13.OfpDesc `protobuf:"bytes,3,opt,name=desc,proto3" json:"desc,omitempty"`
+ // device features
+ SwitchFeatures *openflow_13.OfpSwitchFeatures `protobuf:"bytes,4,opt,name=switch_features,json=switchFeatures,proto3" json:"switch_features,omitempty"`
+ // name of the root device anchoring logical device
+ RootDeviceId string `protobuf:"bytes,5,opt,name=root_device_id,json=rootDeviceId,proto3" json:"root_device_id,omitempty"`
+ // logical device ports
+ Ports []*LogicalPort `protobuf:"bytes,128,rep,name=ports,proto3" json:"ports,omitempty"`
+ // flows configured on the logical device
+ Flows *openflow_13.Flows `protobuf:"bytes,129,opt,name=flows,proto3" json:"flows,omitempty"`
+ // flow groups configured on the logical device
+ FlowGroups *openflow_13.FlowGroups `protobuf:"bytes,130,opt,name=flow_groups,json=flowGroups,proto3" json:"flow_groups,omitempty"`
+ // meters configured on the logical device
+ Meters *openflow_13.Meters `protobuf:"bytes,131,opt,name=meters,proto3" json:"meters,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *LogicalDevice) Reset() { *m = LogicalDevice{} }
+func (m *LogicalDevice) String() string { return proto.CompactTextString(m) }
+func (*LogicalDevice) ProtoMessage() {}
+func (*LogicalDevice) Descriptor() ([]byte, []int) {
+ return fileDescriptor_caf139ab3abc8240, []int{3}
+}
+
+func (m *LogicalDevice) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_LogicalDevice.Unmarshal(m, b)
+}
+func (m *LogicalDevice) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_LogicalDevice.Marshal(b, m, deterministic)
+}
+func (m *LogicalDevice) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_LogicalDevice.Merge(m, src)
+}
+func (m *LogicalDevice) XXX_Size() int {
+ return xxx_messageInfo_LogicalDevice.Size(m)
+}
+func (m *LogicalDevice) XXX_DiscardUnknown() {
+ xxx_messageInfo_LogicalDevice.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_LogicalDevice proto.InternalMessageInfo
+
+func (m *LogicalDevice) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *LogicalDevice) GetDatapathId() uint64 {
+ if m != nil {
+ return m.DatapathId
+ }
+ return 0
+}
+
+func (m *LogicalDevice) GetDesc() *openflow_13.OfpDesc {
+ if m != nil {
+ return m.Desc
+ }
+ return nil
+}
+
+func (m *LogicalDevice) GetSwitchFeatures() *openflow_13.OfpSwitchFeatures {
+ if m != nil {
+ return m.SwitchFeatures
+ }
+ return nil
+}
+
+func (m *LogicalDevice) GetRootDeviceId() string {
+ if m != nil {
+ return m.RootDeviceId
+ }
+ return ""
+}
+
+func (m *LogicalDevice) GetPorts() []*LogicalPort {
+ if m != nil {
+ return m.Ports
+ }
+ return nil
+}
+
+func (m *LogicalDevice) GetFlows() *openflow_13.Flows {
+ if m != nil {
+ return m.Flows
+ }
+ return nil
+}
+
+func (m *LogicalDevice) GetFlowGroups() *openflow_13.FlowGroups {
+ if m != nil {
+ return m.FlowGroups
+ }
+ return nil
+}
+
+func (m *LogicalDevice) GetMeters() *openflow_13.Meters {
+ if m != nil {
+ return m.Meters
+ }
+ return nil
+}
+
+type LogicalDevices struct {
+ Items []*LogicalDevice `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *LogicalDevices) Reset() { *m = LogicalDevices{} }
+func (m *LogicalDevices) String() string { return proto.CompactTextString(m) }
+func (*LogicalDevices) ProtoMessage() {}
+func (*LogicalDevices) Descriptor() ([]byte, []int) {
+ return fileDescriptor_caf139ab3abc8240, []int{4}
+}
+
+func (m *LogicalDevices) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_LogicalDevices.Unmarshal(m, b)
+}
+func (m *LogicalDevices) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_LogicalDevices.Marshal(b, m, deterministic)
+}
+func (m *LogicalDevices) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_LogicalDevices.Merge(m, src)
+}
+func (m *LogicalDevices) XXX_Size() int {
+ return xxx_messageInfo_LogicalDevices.Size(m)
+}
+func (m *LogicalDevices) XXX_DiscardUnknown() {
+ xxx_messageInfo_LogicalDevices.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_LogicalDevices proto.InternalMessageInfo
+
+func (m *LogicalDevices) GetItems() []*LogicalDevice {
+ if m != nil {
+ return m.Items
+ }
+ return nil
+}
+
+func init() {
+ proto.RegisterType((*LogicalPortId)(nil), "voltha.LogicalPortId")
+ proto.RegisterType((*LogicalPort)(nil), "voltha.LogicalPort")
+ proto.RegisterType((*LogicalPorts)(nil), "voltha.LogicalPorts")
+ proto.RegisterType((*LogicalDevice)(nil), "voltha.LogicalDevice")
+ proto.RegisterType((*LogicalDevices)(nil), "voltha.LogicalDevices")
+}
+
+func init() { proto.RegisterFile("voltha_protos/logical_device.proto", fileDescriptor_caf139ab3abc8240) }
+
+var fileDescriptor_caf139ab3abc8240 = []byte{
+ // 550 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x93, 0xcf, 0x6a, 0xdb, 0x40,
+ 0x10, 0xc6, 0xab, 0xd8, 0x72, 0xec, 0x91, 0xe3, 0xc0, 0x9a, 0x10, 0x91, 0xb4, 0xc4, 0x88, 0x1e,
+ 0x1c, 0x4a, 0xa5, 0xd4, 0xa6, 0xd0, 0x1e, 0x0a, 0xad, 0x09, 0x2e, 0x86, 0xfe, 0x63, 0x0b, 0x3d,
+ 0xf4, 0x22, 0x36, 0xd2, 0x5a, 0x16, 0xd8, 0x1a, 0xa1, 0x5d, 0x3b, 0xd7, 0xfe, 0x79, 0xad, 0xbe,
+ 0x42, 0x5f, 0xa2, 0x8f, 0xd0, 0x43, 0xcf, 0x65, 0x77, 0xa5, 0xd4, 0x8a, 0xd3, 0xa3, 0xbe, 0xf9,
+ 0x7d, 0x33, 0xb3, 0xdf, 0x20, 0xf0, 0x36, 0xb8, 0x94, 0x0b, 0x16, 0xe6, 0x05, 0x4a, 0x14, 0xc1,
+ 0x12, 0x93, 0x34, 0x62, 0xcb, 0x30, 0xe6, 0x9b, 0x34, 0xe2, 0xbe, 0x56, 0x49, 0xcb, 0x30, 0x27,
+ 0xf7, 0x13, 0xc4, 0x64, 0xc9, 0x03, 0x96, 0xa7, 0x01, 0xcb, 0x32, 0x94, 0x4c, 0xa6, 0x98, 0x09,
+ 0x43, 0x9d, 0xb8, 0xf5, 0x4e, 0x2b, 0x2e, 0x59, 0x59, 0x39, 0xab, 0x57, 0x30, 0xe7, 0xd9, 0x7c,
+ 0x89, 0xd7, 0xe1, 0x93, 0xb1, 0x01, 0xbc, 0x67, 0x70, 0xf0, 0xc6, 0x0c, 0xfe, 0x80, 0x85, 0x9c,
+ 0xc5, 0xa4, 0x07, 0x7b, 0x69, 0xec, 0x5a, 0x03, 0x6b, 0xd8, 0xa1, 0x7b, 0x69, 0x4c, 0x8e, 0x61,
+ 0x3f, 0xc7, 0x42, 0x86, 0x69, 0xec, 0xee, 0x69, 0xb1, 0x95, 0x6b, 0xd0, 0xfb, 0x6d, 0x81, 0xb3,
+ 0x65, 0xdd, 0x31, 0x5e, 0x40, 0x1b, 0xe7, 0x79, 0xa8, 0x68, 0xed, 0x74, 0x46, 0x47, 0xfe, 0xf6,
+ 0xfc, 0xaa, 0x48, 0xf7, 0x71, 0x9e, 0xeb, 0x0e, 0xa7, 0xd0, 0x31, 0x8f, 0x57, 0xc3, 0x1a, 0xba,
+ 0x51, 0xdb, 0x08, 0xb3, 0x98, 0x3c, 0x84, 0x5e, 0x59, 0xd4, 0xeb, 0x64, 0xe8, 0x36, 0x07, 0xd6,
+ 0xf0, 0x80, 0x76, 0x8d, 0xaa, 0x1a, 0xbc, 0x43, 0xd5, 0xa2, 0x40, 0x94, 0x66, 0xaa, 0x3d, 0xb0,
+ 0x86, 0x6d, 0xda, 0x56, 0x82, 0xee, 0xff, 0x0a, 0x7a, 0xd5, 0xd0, 0x50, 0x48, 0x26, 0x85, 0xdb,
+ 0xd2, 0x7b, 0x9d, 0xde, 0xb9, 0x97, 0x41, 0x68, 0xb7, 0xdc, 0xee, 0xa3, 0xfa, 0xf2, 0x9e, 0x43,
+ 0x77, 0xeb, 0xcd, 0x82, 0x9c, 0x83, 0x9d, 0x4a, 0xbe, 0x12, 0xae, 0x35, 0x68, 0x0c, 0x9d, 0x51,
+ 0xdf, 0x37, 0x79, 0xfb, 0x5b, 0x10, 0x35, 0x84, 0xf7, 0xa3, 0x71, 0x13, 0xf5, 0xa5, 0x5e, 0x79,
+ 0x27, 0xb1, 0x33, 0x70, 0x62, 0x26, 0x59, 0xce, 0xe4, 0xa2, 0x8a, 0xbb, 0x49, 0xa1, 0x92, 0x66,
+ 0x31, 0x39, 0x87, 0x66, 0xcc, 0x45, 0xa4, 0xb3, 0xb9, 0x2b, 0x4e, 0x55, 0xa4, 0x1a, 0x21, 0x33,
+ 0x38, 0x14, 0xd7, 0xa9, 0x8c, 0x16, 0xe1, 0x9c, 0x33, 0xb9, 0x2e, 0xb8, 0xd0, 0x79, 0x39, 0xa3,
+ 0xc1, 0x8e, 0xeb, 0x16, 0x47, 0x7b, 0x46, 0x98, 0x96, 0xdf, 0x2a, 0x79, 0x9d, 0xe9, 0xbf, 0xdb,
+ 0xd8, 0x7a, 0xe5, 0xae, 0x52, 0x2f, 0xab, 0xfb, 0x3c, 0x05, 0x5b, 0xa5, 0x26, 0xdc, 0x2f, 0xff,
+ 0x8f, 0x62, 0xd2, 0xf9, 0xf5, 0xe7, 0xe7, 0x83, 0xa6, 0x7a, 0x36, 0x35, 0x34, 0xb9, 0x00, 0x5b,
+ 0xed, 0x22, 0xdc, 0xaf, 0x96, 0x5e, 0x8f, 0xd4, 0xd6, 0x9b, 0xaa, 0xd2, 0xc4, 0x56, 0xae, 0x7b,
+ 0xd4, 0x80, 0xe4, 0x25, 0x38, 0xba, 0x9c, 0x14, 0xb8, 0xce, 0x85, 0xfb, 0xcd, 0xf8, 0x8e, 0x77,
+ 0x7c, 0xaf, 0x75, 0xbd, 0x32, 0xc3, 0xfc, 0x46, 0x22, 0x63, 0x68, 0xad, 0xb8, 0xe4, 0x85, 0x70,
+ 0xbf, 0x1b, 0x73, 0xbf, 0x66, 0x7e, 0xab, 0x6b, 0x95, 0xb1, 0x44, 0xbd, 0x17, 0xd0, 0xab, 0x5d,
+ 0x4f, 0x90, 0x47, 0xf5, 0xdb, 0x1f, 0xdd, 0x7a, 0xb0, 0xc1, 0xca, 0xeb, 0x4f, 0x3e, 0x41, 0x1f,
+ 0x8b, 0x44, 0xcf, 0x89, 0xb0, 0x88, 0x4b, 0x76, 0x72, 0xf8, 0x7e, 0x5a, 0xc3, 0x3f, 0xfb, 0x49,
+ 0x2a, 0x17, 0xeb, 0x2b, 0x3f, 0xc2, 0x55, 0x50, 0xc1, 0x81, 0x81, 0x1f, 0x97, 0x3f, 0xf1, 0x66,
+ 0x1c, 0x24, 0x58, 0x6a, 0x57, 0x2d, 0x2d, 0x8e, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0xdd, 0xad,
+ 0x36, 0xdf, 0x4d, 0x04, 0x00, 0x00,
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/ponsim.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/voltha/ponsim.pb.go
new file mode 100644
index 0000000..1dc6e94
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/voltha/ponsim.pb.go
@@ -0,0 +1,686 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: voltha_protos/ponsim.proto
+
+package voltha
+
+import (
+ context "context"
+ fmt "fmt"
+ proto "github.com/golang/protobuf/proto"
+ empty "github.com/golang/protobuf/ptypes/empty"
+ openflow_13 "github.com/opencord/voltha-protos/v3/go/openflow_13"
+ grpc "google.golang.org/grpc"
+ math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+type PonSimOnuDeviceInfo struct {
+ UniPort int32 `protobuf:"varint,1,opt,name=uni_port,json=uniPort,proto3" json:"uni_port,omitempty"`
+ SerialNumber string `protobuf:"bytes,2,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *PonSimOnuDeviceInfo) Reset() { *m = PonSimOnuDeviceInfo{} }
+func (m *PonSimOnuDeviceInfo) String() string { return proto.CompactTextString(m) }
+func (*PonSimOnuDeviceInfo) ProtoMessage() {}
+func (*PonSimOnuDeviceInfo) Descriptor() ([]byte, []int) {
+ return fileDescriptor_352253851b8ea7c0, []int{0}
+}
+
+func (m *PonSimOnuDeviceInfo) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_PonSimOnuDeviceInfo.Unmarshal(m, b)
+}
+func (m *PonSimOnuDeviceInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_PonSimOnuDeviceInfo.Marshal(b, m, deterministic)
+}
+func (m *PonSimOnuDeviceInfo) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_PonSimOnuDeviceInfo.Merge(m, src)
+}
+func (m *PonSimOnuDeviceInfo) XXX_Size() int {
+ return xxx_messageInfo_PonSimOnuDeviceInfo.Size(m)
+}
+func (m *PonSimOnuDeviceInfo) XXX_DiscardUnknown() {
+ xxx_messageInfo_PonSimOnuDeviceInfo.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PonSimOnuDeviceInfo proto.InternalMessageInfo
+
+func (m *PonSimOnuDeviceInfo) GetUniPort() int32 {
+ if m != nil {
+ return m.UniPort
+ }
+ return 0
+}
+
+func (m *PonSimOnuDeviceInfo) GetSerialNumber() string {
+ if m != nil {
+ return m.SerialNumber
+ }
+ return ""
+}
+
+type PonSimDeviceInfo struct {
+ NniPort int32 `protobuf:"varint,1,opt,name=nni_port,json=nniPort,proto3" json:"nni_port,omitempty"`
+ Onus []*PonSimOnuDeviceInfo `protobuf:"bytes,2,rep,name=onus,proto3" json:"onus,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *PonSimDeviceInfo) Reset() { *m = PonSimDeviceInfo{} }
+func (m *PonSimDeviceInfo) String() string { return proto.CompactTextString(m) }
+func (*PonSimDeviceInfo) ProtoMessage() {}
+func (*PonSimDeviceInfo) Descriptor() ([]byte, []int) {
+ return fileDescriptor_352253851b8ea7c0, []int{1}
+}
+
+func (m *PonSimDeviceInfo) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_PonSimDeviceInfo.Unmarshal(m, b)
+}
+func (m *PonSimDeviceInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_PonSimDeviceInfo.Marshal(b, m, deterministic)
+}
+func (m *PonSimDeviceInfo) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_PonSimDeviceInfo.Merge(m, src)
+}
+func (m *PonSimDeviceInfo) XXX_Size() int {
+ return xxx_messageInfo_PonSimDeviceInfo.Size(m)
+}
+func (m *PonSimDeviceInfo) XXX_DiscardUnknown() {
+ xxx_messageInfo_PonSimDeviceInfo.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PonSimDeviceInfo proto.InternalMessageInfo
+
+func (m *PonSimDeviceInfo) GetNniPort() int32 {
+ if m != nil {
+ return m.NniPort
+ }
+ return 0
+}
+
+func (m *PonSimDeviceInfo) GetOnus() []*PonSimOnuDeviceInfo {
+ if m != nil {
+ return m.Onus
+ }
+ return nil
+}
+
+type FlowTable struct {
+ Port int32 `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
+ Flows []*openflow_13.OfpFlowStats `protobuf:"bytes,2,rep,name=flows,proto3" json:"flows,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *FlowTable) Reset() { *m = FlowTable{} }
+func (m *FlowTable) String() string { return proto.CompactTextString(m) }
+func (*FlowTable) ProtoMessage() {}
+func (*FlowTable) Descriptor() ([]byte, []int) {
+ return fileDescriptor_352253851b8ea7c0, []int{2}
+}
+
+func (m *FlowTable) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_FlowTable.Unmarshal(m, b)
+}
+func (m *FlowTable) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_FlowTable.Marshal(b, m, deterministic)
+}
+func (m *FlowTable) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_FlowTable.Merge(m, src)
+}
+func (m *FlowTable) XXX_Size() int {
+ return xxx_messageInfo_FlowTable.Size(m)
+}
+func (m *FlowTable) XXX_DiscardUnknown() {
+ xxx_messageInfo_FlowTable.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FlowTable proto.InternalMessageInfo
+
+func (m *FlowTable) GetPort() int32 {
+ if m != nil {
+ return m.Port
+ }
+ return 0
+}
+
+func (m *FlowTable) GetFlows() []*openflow_13.OfpFlowStats {
+ if m != nil {
+ return m.Flows
+ }
+ return nil
+}
+
+type PonSimFrame struct {
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"`
+ OutPort int32 `protobuf:"varint,3,opt,name=out_port,json=outPort,proto3" json:"out_port,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *PonSimFrame) Reset() { *m = PonSimFrame{} }
+func (m *PonSimFrame) String() string { return proto.CompactTextString(m) }
+func (*PonSimFrame) ProtoMessage() {}
+func (*PonSimFrame) Descriptor() ([]byte, []int) {
+ return fileDescriptor_352253851b8ea7c0, []int{3}
+}
+
+func (m *PonSimFrame) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_PonSimFrame.Unmarshal(m, b)
+}
+func (m *PonSimFrame) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_PonSimFrame.Marshal(b, m, deterministic)
+}
+func (m *PonSimFrame) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_PonSimFrame.Merge(m, src)
+}
+func (m *PonSimFrame) XXX_Size() int {
+ return xxx_messageInfo_PonSimFrame.Size(m)
+}
+func (m *PonSimFrame) XXX_DiscardUnknown() {
+ xxx_messageInfo_PonSimFrame.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PonSimFrame proto.InternalMessageInfo
+
+func (m *PonSimFrame) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *PonSimFrame) GetPayload() []byte {
+ if m != nil {
+ return m.Payload
+ }
+ return nil
+}
+
+func (m *PonSimFrame) GetOutPort() int32 {
+ if m != nil {
+ return m.OutPort
+ }
+ return 0
+}
+
+type PonSimPacketCounter struct {
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ Value int64 `protobuf:"varint,2,opt,name=value,proto3" json:"value,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *PonSimPacketCounter) Reset() { *m = PonSimPacketCounter{} }
+func (m *PonSimPacketCounter) String() string { return proto.CompactTextString(m) }
+func (*PonSimPacketCounter) ProtoMessage() {}
+func (*PonSimPacketCounter) Descriptor() ([]byte, []int) {
+ return fileDescriptor_352253851b8ea7c0, []int{4}
+}
+
+func (m *PonSimPacketCounter) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_PonSimPacketCounter.Unmarshal(m, b)
+}
+func (m *PonSimPacketCounter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_PonSimPacketCounter.Marshal(b, m, deterministic)
+}
+func (m *PonSimPacketCounter) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_PonSimPacketCounter.Merge(m, src)
+}
+func (m *PonSimPacketCounter) XXX_Size() int {
+ return xxx_messageInfo_PonSimPacketCounter.Size(m)
+}
+func (m *PonSimPacketCounter) XXX_DiscardUnknown() {
+ xxx_messageInfo_PonSimPacketCounter.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PonSimPacketCounter proto.InternalMessageInfo
+
+func (m *PonSimPacketCounter) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *PonSimPacketCounter) GetValue() int64 {
+ if m != nil {
+ return m.Value
+ }
+ return 0
+}
+
+type PonSimPortMetrics struct {
+ PortName string `protobuf:"bytes,1,opt,name=port_name,json=portName,proto3" json:"port_name,omitempty"`
+ Packets []*PonSimPacketCounter `protobuf:"bytes,2,rep,name=packets,proto3" json:"packets,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *PonSimPortMetrics) Reset() { *m = PonSimPortMetrics{} }
+func (m *PonSimPortMetrics) String() string { return proto.CompactTextString(m) }
+func (*PonSimPortMetrics) ProtoMessage() {}
+func (*PonSimPortMetrics) Descriptor() ([]byte, []int) {
+ return fileDescriptor_352253851b8ea7c0, []int{5}
+}
+
+func (m *PonSimPortMetrics) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_PonSimPortMetrics.Unmarshal(m, b)
+}
+func (m *PonSimPortMetrics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_PonSimPortMetrics.Marshal(b, m, deterministic)
+}
+func (m *PonSimPortMetrics) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_PonSimPortMetrics.Merge(m, src)
+}
+func (m *PonSimPortMetrics) XXX_Size() int {
+ return xxx_messageInfo_PonSimPortMetrics.Size(m)
+}
+func (m *PonSimPortMetrics) XXX_DiscardUnknown() {
+ xxx_messageInfo_PonSimPortMetrics.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PonSimPortMetrics proto.InternalMessageInfo
+
+func (m *PonSimPortMetrics) GetPortName() string {
+ if m != nil {
+ return m.PortName
+ }
+ return ""
+}
+
+func (m *PonSimPortMetrics) GetPackets() []*PonSimPacketCounter {
+ if m != nil {
+ return m.Packets
+ }
+ return nil
+}
+
+type PonSimMetrics struct {
+ Device string `protobuf:"bytes,1,opt,name=device,proto3" json:"device,omitempty"`
+ Metrics []*PonSimPortMetrics `protobuf:"bytes,2,rep,name=metrics,proto3" json:"metrics,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *PonSimMetrics) Reset() { *m = PonSimMetrics{} }
+func (m *PonSimMetrics) String() string { return proto.CompactTextString(m) }
+func (*PonSimMetrics) ProtoMessage() {}
+func (*PonSimMetrics) Descriptor() ([]byte, []int) {
+ return fileDescriptor_352253851b8ea7c0, []int{6}
+}
+
+func (m *PonSimMetrics) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_PonSimMetrics.Unmarshal(m, b)
+}
+func (m *PonSimMetrics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_PonSimMetrics.Marshal(b, m, deterministic)
+}
+func (m *PonSimMetrics) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_PonSimMetrics.Merge(m, src)
+}
+func (m *PonSimMetrics) XXX_Size() int {
+ return xxx_messageInfo_PonSimMetrics.Size(m)
+}
+func (m *PonSimMetrics) XXX_DiscardUnknown() {
+ xxx_messageInfo_PonSimMetrics.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PonSimMetrics proto.InternalMessageInfo
+
+func (m *PonSimMetrics) GetDevice() string {
+ if m != nil {
+ return m.Device
+ }
+ return ""
+}
+
+func (m *PonSimMetrics) GetMetrics() []*PonSimPortMetrics {
+ if m != nil {
+ return m.Metrics
+ }
+ return nil
+}
+
+type PonSimMetricsRequest struct {
+ Port int32 `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *PonSimMetricsRequest) Reset() { *m = PonSimMetricsRequest{} }
+func (m *PonSimMetricsRequest) String() string { return proto.CompactTextString(m) }
+func (*PonSimMetricsRequest) ProtoMessage() {}
+func (*PonSimMetricsRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_352253851b8ea7c0, []int{7}
+}
+
+func (m *PonSimMetricsRequest) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_PonSimMetricsRequest.Unmarshal(m, b)
+}
+func (m *PonSimMetricsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_PonSimMetricsRequest.Marshal(b, m, deterministic)
+}
+func (m *PonSimMetricsRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_PonSimMetricsRequest.Merge(m, src)
+}
+func (m *PonSimMetricsRequest) XXX_Size() int {
+ return xxx_messageInfo_PonSimMetricsRequest.Size(m)
+}
+func (m *PonSimMetricsRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_PonSimMetricsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PonSimMetricsRequest proto.InternalMessageInfo
+
+func (m *PonSimMetricsRequest) GetPort() int32 {
+ if m != nil {
+ return m.Port
+ }
+ return 0
+}
+
+func init() {
+ proto.RegisterType((*PonSimOnuDeviceInfo)(nil), "voltha.PonSimOnuDeviceInfo")
+ proto.RegisterType((*PonSimDeviceInfo)(nil), "voltha.PonSimDeviceInfo")
+ proto.RegisterType((*FlowTable)(nil), "voltha.FlowTable")
+ proto.RegisterType((*PonSimFrame)(nil), "voltha.PonSimFrame")
+ proto.RegisterType((*PonSimPacketCounter)(nil), "voltha.PonSimPacketCounter")
+ proto.RegisterType((*PonSimPortMetrics)(nil), "voltha.PonSimPortMetrics")
+ proto.RegisterType((*PonSimMetrics)(nil), "voltha.PonSimMetrics")
+ proto.RegisterType((*PonSimMetricsRequest)(nil), "voltha.PonSimMetricsRequest")
+}
+
+func init() { proto.RegisterFile("voltha_protos/ponsim.proto", fileDescriptor_352253851b8ea7c0) }
+
+var fileDescriptor_352253851b8ea7c0 = []byte{
+ // 563 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x94, 0x5f, 0x6f, 0xd3, 0x30,
+ 0x14, 0xc5, 0xdb, 0x6e, 0xeb, 0x9f, 0xbb, 0x15, 0x98, 0x3b, 0xa6, 0xae, 0x7d, 0xa0, 0x32, 0x2f,
+ 0x15, 0x12, 0x09, 0x5b, 0xc5, 0x0b, 0x48, 0x80, 0x18, 0xdb, 0xc4, 0x03, 0xa3, 0x72, 0xd9, 0x0b,
+ 0x42, 0x44, 0x69, 0xe2, 0x66, 0x11, 0x89, 0x6f, 0x48, 0xec, 0x4e, 0xfb, 0x86, 0x7c, 0x2c, 0x14,
+ 0x3b, 0xa1, 0xcd, 0xd4, 0xf2, 0x66, 0x5f, 0x9f, 0xfe, 0xce, 0x3d, 0x37, 0x57, 0x85, 0xc1, 0x12,
+ 0x23, 0x79, 0xeb, 0x3a, 0x49, 0x8a, 0x12, 0x33, 0x3b, 0x41, 0x91, 0x85, 0xb1, 0xa5, 0x6f, 0xa4,
+ 0x69, 0xde, 0x06, 0xc3, 0x00, 0x31, 0x88, 0xb8, 0xad, 0xab, 0x73, 0xb5, 0xb0, 0x79, 0x9c, 0xc8,
+ 0x7b, 0x23, 0x1a, 0x3c, 0xab, 0x02, 0x30, 0xe1, 0x62, 0x11, 0xe1, 0x9d, 0x73, 0x3a, 0x31, 0x02,
+ 0x7a, 0x03, 0xbd, 0x29, 0x8a, 0x59, 0x18, 0x7f, 0x15, 0xea, 0x13, 0x5f, 0x86, 0x1e, 0xff, 0x2c,
+ 0x16, 0x48, 0x4e, 0xa0, 0xad, 0x44, 0xe8, 0x24, 0x98, 0xca, 0x7e, 0x7d, 0x54, 0x1f, 0xef, 0xb1,
+ 0x96, 0x12, 0xe1, 0x14, 0x53, 0x49, 0x9e, 0x43, 0x37, 0xe3, 0x69, 0xe8, 0x46, 0x8e, 0x50, 0xf1,
+ 0x9c, 0xa7, 0xfd, 0xc6, 0xa8, 0x3e, 0xee, 0xb0, 0x03, 0x53, 0xbc, 0xd6, 0x35, 0xfa, 0x13, 0x9e,
+ 0x18, 0x6c, 0x95, 0x29, 0x1e, 0x30, 0x45, 0xc1, 0xb4, 0x61, 0x17, 0x85, 0xca, 0xfa, 0x8d, 0xd1,
+ 0xce, 0x78, 0xff, 0x6c, 0x68, 0x99, 0xae, 0xad, 0x0d, 0x9d, 0x31, 0x2d, 0xa4, 0x0c, 0x3a, 0x97,
+ 0x11, 0xde, 0x7d, 0x73, 0xe7, 0x11, 0x27, 0x04, 0x76, 0xd7, 0xa0, 0xfa, 0x4c, 0x4e, 0x61, 0x2f,
+ 0x0f, 0xba, 0x42, 0xae, 0x47, 0xc7, 0x45, 0xe2, 0xe8, 0x73, 0x26, 0x5d, 0x99, 0x31, 0xa3, 0xa4,
+ 0x0c, 0xf6, 0x8d, 0xe1, 0x65, 0xea, 0xc6, 0x9c, 0x3c, 0x82, 0x46, 0xe8, 0x6b, 0x66, 0x87, 0x35,
+ 0x42, 0x9f, 0xf4, 0xa1, 0x95, 0xb8, 0xf7, 0x11, 0xba, 0xbe, 0x4e, 0x7c, 0xc0, 0xca, 0x6b, 0x1e,
+ 0x0c, 0x95, 0x34, 0xc1, 0x76, 0x4c, 0x30, 0x54, 0x32, 0x0f, 0x46, 0xdf, 0x97, 0xe3, 0x9d, 0xba,
+ 0xde, 0x2f, 0x2e, 0xcf, 0x51, 0x09, 0xc9, 0xd3, 0xbc, 0x63, 0xe1, 0xc6, 0xbc, 0xa0, 0xeb, 0x33,
+ 0x39, 0x82, 0xbd, 0xa5, 0x1b, 0x29, 0xae, 0xe9, 0x3b, 0xcc, 0x5c, 0x68, 0x00, 0x87, 0x05, 0x00,
+ 0x53, 0xf9, 0x85, 0xcb, 0x34, 0xf4, 0x32, 0x32, 0x84, 0x4e, 0x6e, 0xe6, 0xac, 0x31, 0xda, 0x79,
+ 0xe1, 0x3a, 0xe7, 0xbc, 0xce, 0xfb, 0xcc, 0xcd, 0xb6, 0x8c, 0xb3, 0xd2, 0x09, 0x2b, 0xb5, 0xf4,
+ 0x07, 0x74, 0xcd, 0x7b, 0x69, 0x72, 0x0c, 0x4d, 0x5f, 0x8f, 0xbd, 0x70, 0x28, 0x6e, 0x64, 0x02,
+ 0xad, 0xd8, 0x48, 0x0a, 0xfe, 0xc9, 0x03, 0xfe, 0xaa, 0x51, 0x56, 0x2a, 0xe9, 0x0b, 0x38, 0xaa,
+ 0xd0, 0x19, 0xff, 0xad, 0x78, 0x26, 0x37, 0x7d, 0xba, 0xb3, 0x3f, 0x0d, 0x68, 0x1a, 0x31, 0x79,
+ 0x03, 0x9d, 0x19, 0x17, 0xbe, 0xf9, 0x20, 0xbd, 0xaa, 0x8f, 0x2e, 0x0e, 0x8e, 0x2d, 0xb3, 0xfe,
+ 0x56, 0xb9, 0xfe, 0xd6, 0x45, 0xbe, 0xfe, 0xb4, 0x46, 0x3e, 0x40, 0x97, 0x71, 0x8f, 0x87, 0x4b,
+ 0xae, 0x95, 0x19, 0xd9, 0x22, 0x1d, 0x6c, 0xe2, 0xd2, 0xda, 0xab, 0x3a, 0x39, 0x87, 0xee, 0x15,
+ 0x97, 0x6b, 0x1b, 0xbc, 0x8d, 0xd0, 0xaf, 0x12, 0x56, 0xbf, 0xa0, 0x35, 0xf2, 0x0e, 0x1e, 0xdf,
+ 0x24, 0xbe, 0x2b, 0xf9, 0x6a, 0x5f, 0x0f, 0x4b, 0xf9, 0xbf, 0xd2, 0x7f, 0x62, 0xbc, 0x85, 0xf6,
+ 0x15, 0x97, 0xb3, 0x7c, 0x51, 0xb7, 0xfa, 0x3f, 0xad, 0xfa, 0x17, 0x33, 0xa6, 0xb5, 0x8f, 0x17,
+ 0xd0, 0xc3, 0x34, 0xd0, 0xbb, 0xef, 0x61, 0xea, 0x17, 0xb2, 0xef, 0x56, 0x10, 0xca, 0x5b, 0x35,
+ 0xb7, 0x3c, 0x8c, 0xed, 0xf2, 0xcd, 0x36, 0x6f, 0x2f, 0x8b, 0x7f, 0x8a, 0xe5, 0xc4, 0x0e, 0xb0,
+ 0xa8, 0xcd, 0x9b, 0xba, 0x38, 0xf9, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xb2, 0x72, 0x9e, 0xcb, 0x8f,
+ 0x04, 0x00, 0x00,
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConn
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+const _ = grpc.SupportPackageIsVersion4
+
+// PonSimClient is the client API for PonSim service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
+type PonSimClient interface {
+ SendFrame(ctx context.Context, in *PonSimFrame, opts ...grpc.CallOption) (*empty.Empty, error)
+ ReceiveFrames(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (PonSim_ReceiveFramesClient, error)
+ GetDeviceInfo(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*PonSimDeviceInfo, error)
+ UpdateFlowTable(ctx context.Context, in *FlowTable, opts ...grpc.CallOption) (*empty.Empty, error)
+ GetStats(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*PonSimMetrics, error)
+}
+
+type ponSimClient struct {
+ cc *grpc.ClientConn
+}
+
+func NewPonSimClient(cc *grpc.ClientConn) PonSimClient {
+ return &ponSimClient{cc}
+}
+
+func (c *ponSimClient) SendFrame(ctx context.Context, in *PonSimFrame, opts ...grpc.CallOption) (*empty.Empty, error) {
+ out := new(empty.Empty)
+ err := c.cc.Invoke(ctx, "/voltha.PonSim/SendFrame", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *ponSimClient) ReceiveFrames(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (PonSim_ReceiveFramesClient, error) {
+ stream, err := c.cc.NewStream(ctx, &_PonSim_serviceDesc.Streams[0], "/voltha.PonSim/ReceiveFrames", opts...)
+ if err != nil {
+ return nil, err
+ }
+ x := &ponSimReceiveFramesClient{stream}
+ if err := x.ClientStream.SendMsg(in); err != nil {
+ return nil, err
+ }
+ if err := x.ClientStream.CloseSend(); err != nil {
+ return nil, err
+ }
+ return x, nil
+}
+
+type PonSim_ReceiveFramesClient interface {
+ Recv() (*PonSimFrame, error)
+ grpc.ClientStream
+}
+
+type ponSimReceiveFramesClient struct {
+ grpc.ClientStream
+}
+
+func (x *ponSimReceiveFramesClient) Recv() (*PonSimFrame, error) {
+ m := new(PonSimFrame)
+ if err := x.ClientStream.RecvMsg(m); err != nil {
+ return nil, err
+ }
+ return m, nil
+}
+
+func (c *ponSimClient) GetDeviceInfo(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*PonSimDeviceInfo, error) {
+ out := new(PonSimDeviceInfo)
+ err := c.cc.Invoke(ctx, "/voltha.PonSim/GetDeviceInfo", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *ponSimClient) UpdateFlowTable(ctx context.Context, in *FlowTable, opts ...grpc.CallOption) (*empty.Empty, error) {
+ out := new(empty.Empty)
+ err := c.cc.Invoke(ctx, "/voltha.PonSim/UpdateFlowTable", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *ponSimClient) GetStats(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*PonSimMetrics, error) {
+ out := new(PonSimMetrics)
+ err := c.cc.Invoke(ctx, "/voltha.PonSim/GetStats", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// PonSimServer is the server API for PonSim service.
+type PonSimServer interface {
+ SendFrame(context.Context, *PonSimFrame) (*empty.Empty, error)
+ ReceiveFrames(*empty.Empty, PonSim_ReceiveFramesServer) error
+ GetDeviceInfo(context.Context, *empty.Empty) (*PonSimDeviceInfo, error)
+ UpdateFlowTable(context.Context, *FlowTable) (*empty.Empty, error)
+ GetStats(context.Context, *empty.Empty) (*PonSimMetrics, error)
+}
+
+func RegisterPonSimServer(s *grpc.Server, srv PonSimServer) {
+ s.RegisterService(&_PonSim_serviceDesc, srv)
+}
+
+func _PonSim_SendFrame_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(PonSimFrame)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(PonSimServer).SendFrame(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.PonSim/SendFrame",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(PonSimServer).SendFrame(ctx, req.(*PonSimFrame))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _PonSim_ReceiveFrames_Handler(srv interface{}, stream grpc.ServerStream) error {
+ m := new(empty.Empty)
+ if err := stream.RecvMsg(m); err != nil {
+ return err
+ }
+ return srv.(PonSimServer).ReceiveFrames(m, &ponSimReceiveFramesServer{stream})
+}
+
+type PonSim_ReceiveFramesServer interface {
+ Send(*PonSimFrame) error
+ grpc.ServerStream
+}
+
+type ponSimReceiveFramesServer struct {
+ grpc.ServerStream
+}
+
+func (x *ponSimReceiveFramesServer) Send(m *PonSimFrame) error {
+ return x.ServerStream.SendMsg(m)
+}
+
+func _PonSim_GetDeviceInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(empty.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(PonSimServer).GetDeviceInfo(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.PonSim/GetDeviceInfo",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(PonSimServer).GetDeviceInfo(ctx, req.(*empty.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _PonSim_UpdateFlowTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(FlowTable)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(PonSimServer).UpdateFlowTable(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.PonSim/UpdateFlowTable",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(PonSimServer).UpdateFlowTable(ctx, req.(*FlowTable))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _PonSim_GetStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(empty.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(PonSimServer).GetStats(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.PonSim/GetStats",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(PonSimServer).GetStats(ctx, req.(*empty.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+var _PonSim_serviceDesc = grpc.ServiceDesc{
+ ServiceName: "voltha.PonSim",
+ HandlerType: (*PonSimServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "SendFrame",
+ Handler: _PonSim_SendFrame_Handler,
+ },
+ {
+ MethodName: "GetDeviceInfo",
+ Handler: _PonSim_GetDeviceInfo_Handler,
+ },
+ {
+ MethodName: "UpdateFlowTable",
+ Handler: _PonSim_UpdateFlowTable_Handler,
+ },
+ {
+ MethodName: "GetStats",
+ Handler: _PonSim_GetStats_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{
+ {
+ StreamName: "ReceiveFrames",
+ Handler: _PonSim_ReceiveFrames_Handler,
+ ServerStreams: true,
+ },
+ },
+ Metadata: "voltha_protos/ponsim.proto",
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/voltha.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/voltha/voltha.pb.go
new file mode 100644
index 0000000..f6512d6
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/voltha/voltha.pb.go
@@ -0,0 +1,4451 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: voltha_protos/voltha.proto
+
+package voltha
+
+import (
+ context "context"
+ fmt "fmt"
+ proto "github.com/golang/protobuf/proto"
+ empty "github.com/golang/protobuf/ptypes/empty"
+ common "github.com/opencord/voltha-protos/v3/go/common"
+ omci "github.com/opencord/voltha-protos/v3/go/omci"
+ openflow_13 "github.com/opencord/voltha-protos/v3/go/openflow_13"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ grpc "google.golang.org/grpc"
+ math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// ChildNode from public import voltha_protos/meta.proto
+type ChildNode = common.ChildNode
+
+// Access from public import voltha_protos/meta.proto
+type Access = common.Access
+
+var Access_name = common.Access_name
+var Access_value = common.Access_value
+
+const Access_CONFIG = Access(common.Access_CONFIG)
+const Access_READ_ONLY = Access(common.Access_READ_ONLY)
+const Access_REAL_TIME = Access(common.Access_REAL_TIME)
+
+var E_ChildNode = common.E_ChildNode
+
+var E_Access = common.E_Access
+
+// ID from public import voltha_protos/common.proto
+type ID = common.ID
+
+// IDs from public import voltha_protos/common.proto
+type IDs = common.IDs
+
+// LogLevel from public import voltha_protos/common.proto
+type LogLevel = common.LogLevel
+
+// Logging from public import voltha_protos/common.proto
+type Logging = common.Logging
+
+// LoggingComponent from public import voltha_protos/common.proto
+type LoggingComponent = common.LoggingComponent
+
+// Loggings from public import voltha_protos/common.proto
+type Loggings = common.Loggings
+
+// AdminState from public import voltha_protos/common.proto
+type AdminState = common.AdminState
+
+// OperStatus from public import voltha_protos/common.proto
+type OperStatus = common.OperStatus
+
+// ConnectStatus from public import voltha_protos/common.proto
+type ConnectStatus = common.ConnectStatus
+
+// OperationResp from public import voltha_protos/common.proto
+type OperationResp = common.OperationResp
+
+// TestModeKeys from public import voltha_protos/common.proto
+type TestModeKeys = common.TestModeKeys
+
+var TestModeKeys_name = common.TestModeKeys_name
+var TestModeKeys_value = common.TestModeKeys_value
+
+const TestModeKeys_api_test = TestModeKeys(common.TestModeKeys_api_test)
+
+// LogLevel_Types from public import voltha_protos/common.proto
+type LogLevel_Types = common.LogLevel_Types
+
+var LogLevel_Types_name = common.LogLevel_Types_name
+var LogLevel_Types_value = common.LogLevel_Types_value
+
+const LogLevel_DEBUG = LogLevel_Types(common.LogLevel_DEBUG)
+const LogLevel_INFO = LogLevel_Types(common.LogLevel_INFO)
+const LogLevel_WARNING = LogLevel_Types(common.LogLevel_WARNING)
+const LogLevel_ERROR = LogLevel_Types(common.LogLevel_ERROR)
+const LogLevel_CRITICAL = LogLevel_Types(common.LogLevel_CRITICAL)
+const LogLevel_FATAL = LogLevel_Types(common.LogLevel_FATAL)
+
+// AdminState_Types from public import voltha_protos/common.proto
+type AdminState_Types = common.AdminState_Types
+
+var AdminState_Types_name = common.AdminState_Types_name
+var AdminState_Types_value = common.AdminState_Types_value
+
+const AdminState_UNKNOWN = AdminState_Types(common.AdminState_UNKNOWN)
+const AdminState_PREPROVISIONED = AdminState_Types(common.AdminState_PREPROVISIONED)
+const AdminState_ENABLED = AdminState_Types(common.AdminState_ENABLED)
+const AdminState_DISABLED = AdminState_Types(common.AdminState_DISABLED)
+const AdminState_DOWNLOADING_IMAGE = AdminState_Types(common.AdminState_DOWNLOADING_IMAGE)
+const AdminState_DELETED = AdminState_Types(common.AdminState_DELETED)
+
+// OperStatus_Types from public import voltha_protos/common.proto
+type OperStatus_Types = common.OperStatus_Types
+
+var OperStatus_Types_name = common.OperStatus_Types_name
+var OperStatus_Types_value = common.OperStatus_Types_value
+
+const OperStatus_UNKNOWN = OperStatus_Types(common.OperStatus_UNKNOWN)
+const OperStatus_DISCOVERED = OperStatus_Types(common.OperStatus_DISCOVERED)
+const OperStatus_ACTIVATING = OperStatus_Types(common.OperStatus_ACTIVATING)
+const OperStatus_TESTING = OperStatus_Types(common.OperStatus_TESTING)
+const OperStatus_ACTIVE = OperStatus_Types(common.OperStatus_ACTIVE)
+const OperStatus_FAILED = OperStatus_Types(common.OperStatus_FAILED)
+
+// ConnectStatus_Types from public import voltha_protos/common.proto
+type ConnectStatus_Types = common.ConnectStatus_Types
+
+var ConnectStatus_Types_name = common.ConnectStatus_Types_name
+var ConnectStatus_Types_value = common.ConnectStatus_Types_value
+
+const ConnectStatus_UNKNOWN = ConnectStatus_Types(common.ConnectStatus_UNKNOWN)
+const ConnectStatus_UNREACHABLE = ConnectStatus_Types(common.ConnectStatus_UNREACHABLE)
+const ConnectStatus_REACHABLE = ConnectStatus_Types(common.ConnectStatus_REACHABLE)
+
+// OperationResp_OperationReturnCode from public import voltha_protos/common.proto
+type OperationResp_OperationReturnCode = common.OperationResp_OperationReturnCode
+
+var OperationResp_OperationReturnCode_name = common.OperationResp_OperationReturnCode_name
+var OperationResp_OperationReturnCode_value = common.OperationResp_OperationReturnCode_value
+
+const OperationResp_OPERATION_SUCCESS = OperationResp_OperationReturnCode(common.OperationResp_OPERATION_SUCCESS)
+const OperationResp_OPERATION_FAILURE = OperationResp_OperationReturnCode(common.OperationResp_OPERATION_FAILURE)
+const OperationResp_OPERATION_UNSUPPORTED = OperationResp_OperationReturnCode(common.OperationResp_OPERATION_UNSUPPORTED)
+
+// OfpHeader from public import voltha_protos/openflow_13.proto
+type OfpHeader = openflow_13.OfpHeader
+
+// OfpHelloElemHeader from public import voltha_protos/openflow_13.proto
+type OfpHelloElemHeader = openflow_13.OfpHelloElemHeader
+type OfpHelloElemHeader_Versionbitmap = openflow_13.OfpHelloElemHeader_Versionbitmap
+
+// OfpHelloElemVersionbitmap from public import voltha_protos/openflow_13.proto
+type OfpHelloElemVersionbitmap = openflow_13.OfpHelloElemVersionbitmap
+
+// OfpHello from public import voltha_protos/openflow_13.proto
+type OfpHello = openflow_13.OfpHello
+
+// OfpSwitchConfig from public import voltha_protos/openflow_13.proto
+type OfpSwitchConfig = openflow_13.OfpSwitchConfig
+
+// OfpTableMod from public import voltha_protos/openflow_13.proto
+type OfpTableMod = openflow_13.OfpTableMod
+
+// OfpPort from public import voltha_protos/openflow_13.proto
+type OfpPort = openflow_13.OfpPort
+
+// OfpSwitchFeatures from public import voltha_protos/openflow_13.proto
+type OfpSwitchFeatures = openflow_13.OfpSwitchFeatures
+
+// OfpPortStatus from public import voltha_protos/openflow_13.proto
+type OfpPortStatus = openflow_13.OfpPortStatus
+
+// OfpPortMod from public import voltha_protos/openflow_13.proto
+type OfpPortMod = openflow_13.OfpPortMod
+
+// OfpMatch from public import voltha_protos/openflow_13.proto
+type OfpMatch = openflow_13.OfpMatch
+
+// OfpOxmField from public import voltha_protos/openflow_13.proto
+type OfpOxmField = openflow_13.OfpOxmField
+type OfpOxmField_OfbField = openflow_13.OfpOxmField_OfbField
+type OfpOxmField_ExperimenterField = openflow_13.OfpOxmField_ExperimenterField
+
+// OfpOxmOfbField from public import voltha_protos/openflow_13.proto
+type OfpOxmOfbField = openflow_13.OfpOxmOfbField
+type OfpOxmOfbField_Port = openflow_13.OfpOxmOfbField_Port
+type OfpOxmOfbField_PhysicalPort = openflow_13.OfpOxmOfbField_PhysicalPort
+type OfpOxmOfbField_TableMetadata = openflow_13.OfpOxmOfbField_TableMetadata
+type OfpOxmOfbField_EthDst = openflow_13.OfpOxmOfbField_EthDst
+type OfpOxmOfbField_EthSrc = openflow_13.OfpOxmOfbField_EthSrc
+type OfpOxmOfbField_EthType = openflow_13.OfpOxmOfbField_EthType
+type OfpOxmOfbField_VlanVid = openflow_13.OfpOxmOfbField_VlanVid
+type OfpOxmOfbField_VlanPcp = openflow_13.OfpOxmOfbField_VlanPcp
+type OfpOxmOfbField_IpDscp = openflow_13.OfpOxmOfbField_IpDscp
+type OfpOxmOfbField_IpEcn = openflow_13.OfpOxmOfbField_IpEcn
+type OfpOxmOfbField_IpProto = openflow_13.OfpOxmOfbField_IpProto
+type OfpOxmOfbField_Ipv4Src = openflow_13.OfpOxmOfbField_Ipv4Src
+type OfpOxmOfbField_Ipv4Dst = openflow_13.OfpOxmOfbField_Ipv4Dst
+type OfpOxmOfbField_TcpSrc = openflow_13.OfpOxmOfbField_TcpSrc
+type OfpOxmOfbField_TcpDst = openflow_13.OfpOxmOfbField_TcpDst
+type OfpOxmOfbField_UdpSrc = openflow_13.OfpOxmOfbField_UdpSrc
+type OfpOxmOfbField_UdpDst = openflow_13.OfpOxmOfbField_UdpDst
+type OfpOxmOfbField_SctpSrc = openflow_13.OfpOxmOfbField_SctpSrc
+type OfpOxmOfbField_SctpDst = openflow_13.OfpOxmOfbField_SctpDst
+type OfpOxmOfbField_Icmpv4Type = openflow_13.OfpOxmOfbField_Icmpv4Type
+type OfpOxmOfbField_Icmpv4Code = openflow_13.OfpOxmOfbField_Icmpv4Code
+type OfpOxmOfbField_ArpOp = openflow_13.OfpOxmOfbField_ArpOp
+type OfpOxmOfbField_ArpSpa = openflow_13.OfpOxmOfbField_ArpSpa
+type OfpOxmOfbField_ArpTpa = openflow_13.OfpOxmOfbField_ArpTpa
+type OfpOxmOfbField_ArpSha = openflow_13.OfpOxmOfbField_ArpSha
+type OfpOxmOfbField_ArpTha = openflow_13.OfpOxmOfbField_ArpTha
+type OfpOxmOfbField_Ipv6Src = openflow_13.OfpOxmOfbField_Ipv6Src
+type OfpOxmOfbField_Ipv6Dst = openflow_13.OfpOxmOfbField_Ipv6Dst
+type OfpOxmOfbField_Ipv6Flabel = openflow_13.OfpOxmOfbField_Ipv6Flabel
+type OfpOxmOfbField_Icmpv6Type = openflow_13.OfpOxmOfbField_Icmpv6Type
+type OfpOxmOfbField_Icmpv6Code = openflow_13.OfpOxmOfbField_Icmpv6Code
+type OfpOxmOfbField_Ipv6NdTarget = openflow_13.OfpOxmOfbField_Ipv6NdTarget
+type OfpOxmOfbField_Ipv6NdSsl = openflow_13.OfpOxmOfbField_Ipv6NdSsl
+type OfpOxmOfbField_Ipv6NdTll = openflow_13.OfpOxmOfbField_Ipv6NdTll
+type OfpOxmOfbField_MplsLabel = openflow_13.OfpOxmOfbField_MplsLabel
+type OfpOxmOfbField_MplsTc = openflow_13.OfpOxmOfbField_MplsTc
+type OfpOxmOfbField_MplsBos = openflow_13.OfpOxmOfbField_MplsBos
+type OfpOxmOfbField_PbbIsid = openflow_13.OfpOxmOfbField_PbbIsid
+type OfpOxmOfbField_TunnelId = openflow_13.OfpOxmOfbField_TunnelId
+type OfpOxmOfbField_Ipv6Exthdr = openflow_13.OfpOxmOfbField_Ipv6Exthdr
+type OfpOxmOfbField_TableMetadataMask = openflow_13.OfpOxmOfbField_TableMetadataMask
+type OfpOxmOfbField_EthDstMask = openflow_13.OfpOxmOfbField_EthDstMask
+type OfpOxmOfbField_EthSrcMask = openflow_13.OfpOxmOfbField_EthSrcMask
+type OfpOxmOfbField_VlanVidMask = openflow_13.OfpOxmOfbField_VlanVidMask
+type OfpOxmOfbField_Ipv4SrcMask = openflow_13.OfpOxmOfbField_Ipv4SrcMask
+type OfpOxmOfbField_Ipv4DstMask = openflow_13.OfpOxmOfbField_Ipv4DstMask
+type OfpOxmOfbField_ArpSpaMask = openflow_13.OfpOxmOfbField_ArpSpaMask
+type OfpOxmOfbField_ArpTpaMask = openflow_13.OfpOxmOfbField_ArpTpaMask
+type OfpOxmOfbField_Ipv6SrcMask = openflow_13.OfpOxmOfbField_Ipv6SrcMask
+type OfpOxmOfbField_Ipv6DstMask = openflow_13.OfpOxmOfbField_Ipv6DstMask
+type OfpOxmOfbField_Ipv6FlabelMask = openflow_13.OfpOxmOfbField_Ipv6FlabelMask
+type OfpOxmOfbField_PbbIsidMask = openflow_13.OfpOxmOfbField_PbbIsidMask
+type OfpOxmOfbField_TunnelIdMask = openflow_13.OfpOxmOfbField_TunnelIdMask
+type OfpOxmOfbField_Ipv6ExthdrMask = openflow_13.OfpOxmOfbField_Ipv6ExthdrMask
+
+// OfpOxmExperimenterField from public import voltha_protos/openflow_13.proto
+type OfpOxmExperimenterField = openflow_13.OfpOxmExperimenterField
+
+// OfpAction from public import voltha_protos/openflow_13.proto
+type OfpAction = openflow_13.OfpAction
+type OfpAction_Output = openflow_13.OfpAction_Output
+type OfpAction_MplsTtl = openflow_13.OfpAction_MplsTtl
+type OfpAction_Push = openflow_13.OfpAction_Push
+type OfpAction_PopMpls = openflow_13.OfpAction_PopMpls
+type OfpAction_Group = openflow_13.OfpAction_Group
+type OfpAction_NwTtl = openflow_13.OfpAction_NwTtl
+type OfpAction_SetField = openflow_13.OfpAction_SetField
+type OfpAction_Experimenter = openflow_13.OfpAction_Experimenter
+
+// OfpActionOutput from public import voltha_protos/openflow_13.proto
+type OfpActionOutput = openflow_13.OfpActionOutput
+
+// OfpActionMplsTtl from public import voltha_protos/openflow_13.proto
+type OfpActionMplsTtl = openflow_13.OfpActionMplsTtl
+
+// OfpActionPush from public import voltha_protos/openflow_13.proto
+type OfpActionPush = openflow_13.OfpActionPush
+
+// OfpActionPopMpls from public import voltha_protos/openflow_13.proto
+type OfpActionPopMpls = openflow_13.OfpActionPopMpls
+
+// OfpActionGroup from public import voltha_protos/openflow_13.proto
+type OfpActionGroup = openflow_13.OfpActionGroup
+
+// OfpActionNwTtl from public import voltha_protos/openflow_13.proto
+type OfpActionNwTtl = openflow_13.OfpActionNwTtl
+
+// OfpActionSetField from public import voltha_protos/openflow_13.proto
+type OfpActionSetField = openflow_13.OfpActionSetField
+
+// OfpActionExperimenter from public import voltha_protos/openflow_13.proto
+type OfpActionExperimenter = openflow_13.OfpActionExperimenter
+
+// OfpInstruction from public import voltha_protos/openflow_13.proto
+type OfpInstruction = openflow_13.OfpInstruction
+type OfpInstruction_GotoTable = openflow_13.OfpInstruction_GotoTable
+type OfpInstruction_WriteMetadata = openflow_13.OfpInstruction_WriteMetadata
+type OfpInstruction_Actions = openflow_13.OfpInstruction_Actions
+type OfpInstruction_Meter = openflow_13.OfpInstruction_Meter
+type OfpInstruction_Experimenter = openflow_13.OfpInstruction_Experimenter
+
+// OfpInstructionGotoTable from public import voltha_protos/openflow_13.proto
+type OfpInstructionGotoTable = openflow_13.OfpInstructionGotoTable
+
+// OfpInstructionWriteMetadata from public import voltha_protos/openflow_13.proto
+type OfpInstructionWriteMetadata = openflow_13.OfpInstructionWriteMetadata
+
+// OfpInstructionActions from public import voltha_protos/openflow_13.proto
+type OfpInstructionActions = openflow_13.OfpInstructionActions
+
+// OfpInstructionMeter from public import voltha_protos/openflow_13.proto
+type OfpInstructionMeter = openflow_13.OfpInstructionMeter
+
+// OfpInstructionExperimenter from public import voltha_protos/openflow_13.proto
+type OfpInstructionExperimenter = openflow_13.OfpInstructionExperimenter
+
+// OfpFlowMod from public import voltha_protos/openflow_13.proto
+type OfpFlowMod = openflow_13.OfpFlowMod
+
+// OfpBucket from public import voltha_protos/openflow_13.proto
+type OfpBucket = openflow_13.OfpBucket
+
+// OfpGroupMod from public import voltha_protos/openflow_13.proto
+type OfpGroupMod = openflow_13.OfpGroupMod
+
+// OfpPacketOut from public import voltha_protos/openflow_13.proto
+type OfpPacketOut = openflow_13.OfpPacketOut
+
+// OfpPacketIn from public import voltha_protos/openflow_13.proto
+type OfpPacketIn = openflow_13.OfpPacketIn
+
+// OfpFlowRemoved from public import voltha_protos/openflow_13.proto
+type OfpFlowRemoved = openflow_13.OfpFlowRemoved
+
+// OfpMeterBandHeader from public import voltha_protos/openflow_13.proto
+type OfpMeterBandHeader = openflow_13.OfpMeterBandHeader
+type OfpMeterBandHeader_Drop = openflow_13.OfpMeterBandHeader_Drop
+type OfpMeterBandHeader_DscpRemark = openflow_13.OfpMeterBandHeader_DscpRemark
+type OfpMeterBandHeader_Experimenter = openflow_13.OfpMeterBandHeader_Experimenter
+
+// OfpMeterBandDrop from public import voltha_protos/openflow_13.proto
+type OfpMeterBandDrop = openflow_13.OfpMeterBandDrop
+
+// OfpMeterBandDscpRemark from public import voltha_protos/openflow_13.proto
+type OfpMeterBandDscpRemark = openflow_13.OfpMeterBandDscpRemark
+
+// OfpMeterBandExperimenter from public import voltha_protos/openflow_13.proto
+type OfpMeterBandExperimenter = openflow_13.OfpMeterBandExperimenter
+
+// OfpMeterMod from public import voltha_protos/openflow_13.proto
+type OfpMeterMod = openflow_13.OfpMeterMod
+
+// OfpErrorMsg from public import voltha_protos/openflow_13.proto
+type OfpErrorMsg = openflow_13.OfpErrorMsg
+
+// OfpErrorExperimenterMsg from public import voltha_protos/openflow_13.proto
+type OfpErrorExperimenterMsg = openflow_13.OfpErrorExperimenterMsg
+
+// OfpMultipartRequest from public import voltha_protos/openflow_13.proto
+type OfpMultipartRequest = openflow_13.OfpMultipartRequest
+
+// OfpMultipartReply from public import voltha_protos/openflow_13.proto
+type OfpMultipartReply = openflow_13.OfpMultipartReply
+
+// OfpDesc from public import voltha_protos/openflow_13.proto
+type OfpDesc = openflow_13.OfpDesc
+
+// OfpFlowStatsRequest from public import voltha_protos/openflow_13.proto
+type OfpFlowStatsRequest = openflow_13.OfpFlowStatsRequest
+
+// OfpFlowStats from public import voltha_protos/openflow_13.proto
+type OfpFlowStats = openflow_13.OfpFlowStats
+
+// OfpAggregateStatsRequest from public import voltha_protos/openflow_13.proto
+type OfpAggregateStatsRequest = openflow_13.OfpAggregateStatsRequest
+
+// OfpAggregateStatsReply from public import voltha_protos/openflow_13.proto
+type OfpAggregateStatsReply = openflow_13.OfpAggregateStatsReply
+
+// OfpTableFeatureProperty from public import voltha_protos/openflow_13.proto
+type OfpTableFeatureProperty = openflow_13.OfpTableFeatureProperty
+type OfpTableFeatureProperty_Instructions = openflow_13.OfpTableFeatureProperty_Instructions
+type OfpTableFeatureProperty_NextTables = openflow_13.OfpTableFeatureProperty_NextTables
+type OfpTableFeatureProperty_Actions = openflow_13.OfpTableFeatureProperty_Actions
+type OfpTableFeatureProperty_Oxm = openflow_13.OfpTableFeatureProperty_Oxm
+type OfpTableFeatureProperty_Experimenter = openflow_13.OfpTableFeatureProperty_Experimenter
+
+// OfpTableFeaturePropInstructions from public import voltha_protos/openflow_13.proto
+type OfpTableFeaturePropInstructions = openflow_13.OfpTableFeaturePropInstructions
+
+// OfpTableFeaturePropNextTables from public import voltha_protos/openflow_13.proto
+type OfpTableFeaturePropNextTables = openflow_13.OfpTableFeaturePropNextTables
+
+// OfpTableFeaturePropActions from public import voltha_protos/openflow_13.proto
+type OfpTableFeaturePropActions = openflow_13.OfpTableFeaturePropActions
+
+// OfpTableFeaturePropOxm from public import voltha_protos/openflow_13.proto
+type OfpTableFeaturePropOxm = openflow_13.OfpTableFeaturePropOxm
+
+// OfpTableFeaturePropExperimenter from public import voltha_protos/openflow_13.proto
+type OfpTableFeaturePropExperimenter = openflow_13.OfpTableFeaturePropExperimenter
+
+// OfpTableFeatures from public import voltha_protos/openflow_13.proto
+type OfpTableFeatures = openflow_13.OfpTableFeatures
+
+// OfpTableStats from public import voltha_protos/openflow_13.proto
+type OfpTableStats = openflow_13.OfpTableStats
+
+// OfpPortStatsRequest from public import voltha_protos/openflow_13.proto
+type OfpPortStatsRequest = openflow_13.OfpPortStatsRequest
+
+// OfpPortStats from public import voltha_protos/openflow_13.proto
+type OfpPortStats = openflow_13.OfpPortStats
+
+// OfpGroupStatsRequest from public import voltha_protos/openflow_13.proto
+type OfpGroupStatsRequest = openflow_13.OfpGroupStatsRequest
+
+// OfpBucketCounter from public import voltha_protos/openflow_13.proto
+type OfpBucketCounter = openflow_13.OfpBucketCounter
+
+// OfpGroupStats from public import voltha_protos/openflow_13.proto
+type OfpGroupStats = openflow_13.OfpGroupStats
+
+// OfpGroupDesc from public import voltha_protos/openflow_13.proto
+type OfpGroupDesc = openflow_13.OfpGroupDesc
+
+// OfpGroupEntry from public import voltha_protos/openflow_13.proto
+type OfpGroupEntry = openflow_13.OfpGroupEntry
+
+// OfpGroupFeatures from public import voltha_protos/openflow_13.proto
+type OfpGroupFeatures = openflow_13.OfpGroupFeatures
+
+// OfpMeterMultipartRequest from public import voltha_protos/openflow_13.proto
+type OfpMeterMultipartRequest = openflow_13.OfpMeterMultipartRequest
+
+// OfpMeterBandStats from public import voltha_protos/openflow_13.proto
+type OfpMeterBandStats = openflow_13.OfpMeterBandStats
+
+// OfpMeterStats from public import voltha_protos/openflow_13.proto
+type OfpMeterStats = openflow_13.OfpMeterStats
+
+// OfpMeterConfig from public import voltha_protos/openflow_13.proto
+type OfpMeterConfig = openflow_13.OfpMeterConfig
+
+// OfpMeterFeatures from public import voltha_protos/openflow_13.proto
+type OfpMeterFeatures = openflow_13.OfpMeterFeatures
+
+// OfpMeterEntry from public import voltha_protos/openflow_13.proto
+type OfpMeterEntry = openflow_13.OfpMeterEntry
+
+// OfpExperimenterMultipartHeader from public import voltha_protos/openflow_13.proto
+type OfpExperimenterMultipartHeader = openflow_13.OfpExperimenterMultipartHeader
+
+// OfpExperimenterHeader from public import voltha_protos/openflow_13.proto
+type OfpExperimenterHeader = openflow_13.OfpExperimenterHeader
+
+// OfpQueuePropHeader from public import voltha_protos/openflow_13.proto
+type OfpQueuePropHeader = openflow_13.OfpQueuePropHeader
+
+// OfpQueuePropMinRate from public import voltha_protos/openflow_13.proto
+type OfpQueuePropMinRate = openflow_13.OfpQueuePropMinRate
+
+// OfpQueuePropMaxRate from public import voltha_protos/openflow_13.proto
+type OfpQueuePropMaxRate = openflow_13.OfpQueuePropMaxRate
+
+// OfpQueuePropExperimenter from public import voltha_protos/openflow_13.proto
+type OfpQueuePropExperimenter = openflow_13.OfpQueuePropExperimenter
+
+// OfpPacketQueue from public import voltha_protos/openflow_13.proto
+type OfpPacketQueue = openflow_13.OfpPacketQueue
+
+// OfpQueueGetConfigRequest from public import voltha_protos/openflow_13.proto
+type OfpQueueGetConfigRequest = openflow_13.OfpQueueGetConfigRequest
+
+// OfpQueueGetConfigReply from public import voltha_protos/openflow_13.proto
+type OfpQueueGetConfigReply = openflow_13.OfpQueueGetConfigReply
+
+// OfpActionSetQueue from public import voltha_protos/openflow_13.proto
+type OfpActionSetQueue = openflow_13.OfpActionSetQueue
+
+// OfpQueueStatsRequest from public import voltha_protos/openflow_13.proto
+type OfpQueueStatsRequest = openflow_13.OfpQueueStatsRequest
+
+// OfpQueueStats from public import voltha_protos/openflow_13.proto
+type OfpQueueStats = openflow_13.OfpQueueStats
+
+// OfpRoleRequest from public import voltha_protos/openflow_13.proto
+type OfpRoleRequest = openflow_13.OfpRoleRequest
+
+// OfpAsyncConfig from public import voltha_protos/openflow_13.proto
+type OfpAsyncConfig = openflow_13.OfpAsyncConfig
+
+// MeterModUpdate from public import voltha_protos/openflow_13.proto
+type MeterModUpdate = openflow_13.MeterModUpdate
+
+// MeterStatsReply from public import voltha_protos/openflow_13.proto
+type MeterStatsReply = openflow_13.MeterStatsReply
+
+// FlowTableUpdate from public import voltha_protos/openflow_13.proto
+type FlowTableUpdate = openflow_13.FlowTableUpdate
+
+// FlowGroupTableUpdate from public import voltha_protos/openflow_13.proto
+type FlowGroupTableUpdate = openflow_13.FlowGroupTableUpdate
+
+// Flows from public import voltha_protos/openflow_13.proto
+type Flows = openflow_13.Flows
+
+// Meters from public import voltha_protos/openflow_13.proto
+type Meters = openflow_13.Meters
+
+// FlowGroups from public import voltha_protos/openflow_13.proto
+type FlowGroups = openflow_13.FlowGroups
+
+// FlowChanges from public import voltha_protos/openflow_13.proto
+type FlowChanges = openflow_13.FlowChanges
+
+// FlowGroupChanges from public import voltha_protos/openflow_13.proto
+type FlowGroupChanges = openflow_13.FlowGroupChanges
+
+// PacketIn from public import voltha_protos/openflow_13.proto
+type PacketIn = openflow_13.PacketIn
+
+// PacketOut from public import voltha_protos/openflow_13.proto
+type PacketOut = openflow_13.PacketOut
+
+// ChangeEvent from public import voltha_protos/openflow_13.proto
+type ChangeEvent = openflow_13.ChangeEvent
+type ChangeEvent_PortStatus = openflow_13.ChangeEvent_PortStatus
+
+// OfpPortNo from public import voltha_protos/openflow_13.proto
+type OfpPortNo = openflow_13.OfpPortNo
+
+var OfpPortNo_name = openflow_13.OfpPortNo_name
+var OfpPortNo_value = openflow_13.OfpPortNo_value
+
+const OfpPortNo_OFPP_INVALID = OfpPortNo(openflow_13.OfpPortNo_OFPP_INVALID)
+const OfpPortNo_OFPP_MAX = OfpPortNo(openflow_13.OfpPortNo_OFPP_MAX)
+const OfpPortNo_OFPP_IN_PORT = OfpPortNo(openflow_13.OfpPortNo_OFPP_IN_PORT)
+const OfpPortNo_OFPP_TABLE = OfpPortNo(openflow_13.OfpPortNo_OFPP_TABLE)
+const OfpPortNo_OFPP_NORMAL = OfpPortNo(openflow_13.OfpPortNo_OFPP_NORMAL)
+const OfpPortNo_OFPP_FLOOD = OfpPortNo(openflow_13.OfpPortNo_OFPP_FLOOD)
+const OfpPortNo_OFPP_ALL = OfpPortNo(openflow_13.OfpPortNo_OFPP_ALL)
+const OfpPortNo_OFPP_CONTROLLER = OfpPortNo(openflow_13.OfpPortNo_OFPP_CONTROLLER)
+const OfpPortNo_OFPP_LOCAL = OfpPortNo(openflow_13.OfpPortNo_OFPP_LOCAL)
+const OfpPortNo_OFPP_ANY = OfpPortNo(openflow_13.OfpPortNo_OFPP_ANY)
+
+// OfpType from public import voltha_protos/openflow_13.proto
+type OfpType = openflow_13.OfpType
+
+var OfpType_name = openflow_13.OfpType_name
+var OfpType_value = openflow_13.OfpType_value
+
+const OfpType_OFPT_HELLO = OfpType(openflow_13.OfpType_OFPT_HELLO)
+const OfpType_OFPT_ERROR = OfpType(openflow_13.OfpType_OFPT_ERROR)
+const OfpType_OFPT_ECHO_REQUEST = OfpType(openflow_13.OfpType_OFPT_ECHO_REQUEST)
+const OfpType_OFPT_ECHO_REPLY = OfpType(openflow_13.OfpType_OFPT_ECHO_REPLY)
+const OfpType_OFPT_EXPERIMENTER = OfpType(openflow_13.OfpType_OFPT_EXPERIMENTER)
+const OfpType_OFPT_FEATURES_REQUEST = OfpType(openflow_13.OfpType_OFPT_FEATURES_REQUEST)
+const OfpType_OFPT_FEATURES_REPLY = OfpType(openflow_13.OfpType_OFPT_FEATURES_REPLY)
+const OfpType_OFPT_GET_CONFIG_REQUEST = OfpType(openflow_13.OfpType_OFPT_GET_CONFIG_REQUEST)
+const OfpType_OFPT_GET_CONFIG_REPLY = OfpType(openflow_13.OfpType_OFPT_GET_CONFIG_REPLY)
+const OfpType_OFPT_SET_CONFIG = OfpType(openflow_13.OfpType_OFPT_SET_CONFIG)
+const OfpType_OFPT_PACKET_IN = OfpType(openflow_13.OfpType_OFPT_PACKET_IN)
+const OfpType_OFPT_FLOW_REMOVED = OfpType(openflow_13.OfpType_OFPT_FLOW_REMOVED)
+const OfpType_OFPT_PORT_STATUS = OfpType(openflow_13.OfpType_OFPT_PORT_STATUS)
+const OfpType_OFPT_PACKET_OUT = OfpType(openflow_13.OfpType_OFPT_PACKET_OUT)
+const OfpType_OFPT_FLOW_MOD = OfpType(openflow_13.OfpType_OFPT_FLOW_MOD)
+const OfpType_OFPT_GROUP_MOD = OfpType(openflow_13.OfpType_OFPT_GROUP_MOD)
+const OfpType_OFPT_PORT_MOD = OfpType(openflow_13.OfpType_OFPT_PORT_MOD)
+const OfpType_OFPT_TABLE_MOD = OfpType(openflow_13.OfpType_OFPT_TABLE_MOD)
+const OfpType_OFPT_MULTIPART_REQUEST = OfpType(openflow_13.OfpType_OFPT_MULTIPART_REQUEST)
+const OfpType_OFPT_MULTIPART_REPLY = OfpType(openflow_13.OfpType_OFPT_MULTIPART_REPLY)
+const OfpType_OFPT_BARRIER_REQUEST = OfpType(openflow_13.OfpType_OFPT_BARRIER_REQUEST)
+const OfpType_OFPT_BARRIER_REPLY = OfpType(openflow_13.OfpType_OFPT_BARRIER_REPLY)
+const OfpType_OFPT_QUEUE_GET_CONFIG_REQUEST = OfpType(openflow_13.OfpType_OFPT_QUEUE_GET_CONFIG_REQUEST)
+const OfpType_OFPT_QUEUE_GET_CONFIG_REPLY = OfpType(openflow_13.OfpType_OFPT_QUEUE_GET_CONFIG_REPLY)
+const OfpType_OFPT_ROLE_REQUEST = OfpType(openflow_13.OfpType_OFPT_ROLE_REQUEST)
+const OfpType_OFPT_ROLE_REPLY = OfpType(openflow_13.OfpType_OFPT_ROLE_REPLY)
+const OfpType_OFPT_GET_ASYNC_REQUEST = OfpType(openflow_13.OfpType_OFPT_GET_ASYNC_REQUEST)
+const OfpType_OFPT_GET_ASYNC_REPLY = OfpType(openflow_13.OfpType_OFPT_GET_ASYNC_REPLY)
+const OfpType_OFPT_SET_ASYNC = OfpType(openflow_13.OfpType_OFPT_SET_ASYNC)
+const OfpType_OFPT_METER_MOD = OfpType(openflow_13.OfpType_OFPT_METER_MOD)
+
+// OfpHelloElemType from public import voltha_protos/openflow_13.proto
+type OfpHelloElemType = openflow_13.OfpHelloElemType
+
+var OfpHelloElemType_name = openflow_13.OfpHelloElemType_name
+var OfpHelloElemType_value = openflow_13.OfpHelloElemType_value
+
+const OfpHelloElemType_OFPHET_INVALID = OfpHelloElemType(openflow_13.OfpHelloElemType_OFPHET_INVALID)
+const OfpHelloElemType_OFPHET_VERSIONBITMAP = OfpHelloElemType(openflow_13.OfpHelloElemType_OFPHET_VERSIONBITMAP)
+
+// OfpConfigFlags from public import voltha_protos/openflow_13.proto
+type OfpConfigFlags = openflow_13.OfpConfigFlags
+
+var OfpConfigFlags_name = openflow_13.OfpConfigFlags_name
+var OfpConfigFlags_value = openflow_13.OfpConfigFlags_value
+
+const OfpConfigFlags_OFPC_FRAG_NORMAL = OfpConfigFlags(openflow_13.OfpConfigFlags_OFPC_FRAG_NORMAL)
+const OfpConfigFlags_OFPC_FRAG_DROP = OfpConfigFlags(openflow_13.OfpConfigFlags_OFPC_FRAG_DROP)
+const OfpConfigFlags_OFPC_FRAG_REASM = OfpConfigFlags(openflow_13.OfpConfigFlags_OFPC_FRAG_REASM)
+const OfpConfigFlags_OFPC_FRAG_MASK = OfpConfigFlags(openflow_13.OfpConfigFlags_OFPC_FRAG_MASK)
+
+// OfpTableConfig from public import voltha_protos/openflow_13.proto
+type OfpTableConfig = openflow_13.OfpTableConfig
+
+var OfpTableConfig_name = openflow_13.OfpTableConfig_name
+var OfpTableConfig_value = openflow_13.OfpTableConfig_value
+
+const OfpTableConfig_OFPTC_INVALID = OfpTableConfig(openflow_13.OfpTableConfig_OFPTC_INVALID)
+const OfpTableConfig_OFPTC_DEPRECATED_MASK = OfpTableConfig(openflow_13.OfpTableConfig_OFPTC_DEPRECATED_MASK)
+
+// OfpTable from public import voltha_protos/openflow_13.proto
+type OfpTable = openflow_13.OfpTable
+
+var OfpTable_name = openflow_13.OfpTable_name
+var OfpTable_value = openflow_13.OfpTable_value
+
+const OfpTable_OFPTT_INVALID = OfpTable(openflow_13.OfpTable_OFPTT_INVALID)
+const OfpTable_OFPTT_MAX = OfpTable(openflow_13.OfpTable_OFPTT_MAX)
+const OfpTable_OFPTT_ALL = OfpTable(openflow_13.OfpTable_OFPTT_ALL)
+
+// OfpCapabilities from public import voltha_protos/openflow_13.proto
+type OfpCapabilities = openflow_13.OfpCapabilities
+
+var OfpCapabilities_name = openflow_13.OfpCapabilities_name
+var OfpCapabilities_value = openflow_13.OfpCapabilities_value
+
+const OfpCapabilities_OFPC_INVALID = OfpCapabilities(openflow_13.OfpCapabilities_OFPC_INVALID)
+const OfpCapabilities_OFPC_FLOW_STATS = OfpCapabilities(openflow_13.OfpCapabilities_OFPC_FLOW_STATS)
+const OfpCapabilities_OFPC_TABLE_STATS = OfpCapabilities(openflow_13.OfpCapabilities_OFPC_TABLE_STATS)
+const OfpCapabilities_OFPC_PORT_STATS = OfpCapabilities(openflow_13.OfpCapabilities_OFPC_PORT_STATS)
+const OfpCapabilities_OFPC_GROUP_STATS = OfpCapabilities(openflow_13.OfpCapabilities_OFPC_GROUP_STATS)
+const OfpCapabilities_OFPC_IP_REASM = OfpCapabilities(openflow_13.OfpCapabilities_OFPC_IP_REASM)
+const OfpCapabilities_OFPC_QUEUE_STATS = OfpCapabilities(openflow_13.OfpCapabilities_OFPC_QUEUE_STATS)
+const OfpCapabilities_OFPC_PORT_BLOCKED = OfpCapabilities(openflow_13.OfpCapabilities_OFPC_PORT_BLOCKED)
+
+// OfpPortConfig from public import voltha_protos/openflow_13.proto
+type OfpPortConfig = openflow_13.OfpPortConfig
+
+var OfpPortConfig_name = openflow_13.OfpPortConfig_name
+var OfpPortConfig_value = openflow_13.OfpPortConfig_value
+
+const OfpPortConfig_OFPPC_INVALID = OfpPortConfig(openflow_13.OfpPortConfig_OFPPC_INVALID)
+const OfpPortConfig_OFPPC_PORT_DOWN = OfpPortConfig(openflow_13.OfpPortConfig_OFPPC_PORT_DOWN)
+const OfpPortConfig_OFPPC_NO_RECV = OfpPortConfig(openflow_13.OfpPortConfig_OFPPC_NO_RECV)
+const OfpPortConfig_OFPPC_NO_FWD = OfpPortConfig(openflow_13.OfpPortConfig_OFPPC_NO_FWD)
+const OfpPortConfig_OFPPC_NO_PACKET_IN = OfpPortConfig(openflow_13.OfpPortConfig_OFPPC_NO_PACKET_IN)
+
+// OfpPortState from public import voltha_protos/openflow_13.proto
+type OfpPortState = openflow_13.OfpPortState
+
+var OfpPortState_name = openflow_13.OfpPortState_name
+var OfpPortState_value = openflow_13.OfpPortState_value
+
+const OfpPortState_OFPPS_INVALID = OfpPortState(openflow_13.OfpPortState_OFPPS_INVALID)
+const OfpPortState_OFPPS_LINK_DOWN = OfpPortState(openflow_13.OfpPortState_OFPPS_LINK_DOWN)
+const OfpPortState_OFPPS_BLOCKED = OfpPortState(openflow_13.OfpPortState_OFPPS_BLOCKED)
+const OfpPortState_OFPPS_LIVE = OfpPortState(openflow_13.OfpPortState_OFPPS_LIVE)
+
+// OfpPortFeatures from public import voltha_protos/openflow_13.proto
+type OfpPortFeatures = openflow_13.OfpPortFeatures
+
+var OfpPortFeatures_name = openflow_13.OfpPortFeatures_name
+var OfpPortFeatures_value = openflow_13.OfpPortFeatures_value
+
+const OfpPortFeatures_OFPPF_INVALID = OfpPortFeatures(openflow_13.OfpPortFeatures_OFPPF_INVALID)
+const OfpPortFeatures_OFPPF_10MB_HD = OfpPortFeatures(openflow_13.OfpPortFeatures_OFPPF_10MB_HD)
+const OfpPortFeatures_OFPPF_10MB_FD = OfpPortFeatures(openflow_13.OfpPortFeatures_OFPPF_10MB_FD)
+const OfpPortFeatures_OFPPF_100MB_HD = OfpPortFeatures(openflow_13.OfpPortFeatures_OFPPF_100MB_HD)
+const OfpPortFeatures_OFPPF_100MB_FD = OfpPortFeatures(openflow_13.OfpPortFeatures_OFPPF_100MB_FD)
+const OfpPortFeatures_OFPPF_1GB_HD = OfpPortFeatures(openflow_13.OfpPortFeatures_OFPPF_1GB_HD)
+const OfpPortFeatures_OFPPF_1GB_FD = OfpPortFeatures(openflow_13.OfpPortFeatures_OFPPF_1GB_FD)
+const OfpPortFeatures_OFPPF_10GB_FD = OfpPortFeatures(openflow_13.OfpPortFeatures_OFPPF_10GB_FD)
+const OfpPortFeatures_OFPPF_40GB_FD = OfpPortFeatures(openflow_13.OfpPortFeatures_OFPPF_40GB_FD)
+const OfpPortFeatures_OFPPF_100GB_FD = OfpPortFeatures(openflow_13.OfpPortFeatures_OFPPF_100GB_FD)
+const OfpPortFeatures_OFPPF_1TB_FD = OfpPortFeatures(openflow_13.OfpPortFeatures_OFPPF_1TB_FD)
+const OfpPortFeatures_OFPPF_OTHER = OfpPortFeatures(openflow_13.OfpPortFeatures_OFPPF_OTHER)
+const OfpPortFeatures_OFPPF_COPPER = OfpPortFeatures(openflow_13.OfpPortFeatures_OFPPF_COPPER)
+const OfpPortFeatures_OFPPF_FIBER = OfpPortFeatures(openflow_13.OfpPortFeatures_OFPPF_FIBER)
+const OfpPortFeatures_OFPPF_AUTONEG = OfpPortFeatures(openflow_13.OfpPortFeatures_OFPPF_AUTONEG)
+const OfpPortFeatures_OFPPF_PAUSE = OfpPortFeatures(openflow_13.OfpPortFeatures_OFPPF_PAUSE)
+const OfpPortFeatures_OFPPF_PAUSE_ASYM = OfpPortFeatures(openflow_13.OfpPortFeatures_OFPPF_PAUSE_ASYM)
+
+// OfpPortReason from public import voltha_protos/openflow_13.proto
+type OfpPortReason = openflow_13.OfpPortReason
+
+var OfpPortReason_name = openflow_13.OfpPortReason_name
+var OfpPortReason_value = openflow_13.OfpPortReason_value
+
+const OfpPortReason_OFPPR_ADD = OfpPortReason(openflow_13.OfpPortReason_OFPPR_ADD)
+const OfpPortReason_OFPPR_DELETE = OfpPortReason(openflow_13.OfpPortReason_OFPPR_DELETE)
+const OfpPortReason_OFPPR_MODIFY = OfpPortReason(openflow_13.OfpPortReason_OFPPR_MODIFY)
+
+// OfpMatchType from public import voltha_protos/openflow_13.proto
+type OfpMatchType = openflow_13.OfpMatchType
+
+var OfpMatchType_name = openflow_13.OfpMatchType_name
+var OfpMatchType_value = openflow_13.OfpMatchType_value
+
+const OfpMatchType_OFPMT_STANDARD = OfpMatchType(openflow_13.OfpMatchType_OFPMT_STANDARD)
+const OfpMatchType_OFPMT_OXM = OfpMatchType(openflow_13.OfpMatchType_OFPMT_OXM)
+
+// OfpOxmClass from public import voltha_protos/openflow_13.proto
+type OfpOxmClass = openflow_13.OfpOxmClass
+
+var OfpOxmClass_name = openflow_13.OfpOxmClass_name
+var OfpOxmClass_value = openflow_13.OfpOxmClass_value
+
+const OfpOxmClass_OFPXMC_NXM_0 = OfpOxmClass(openflow_13.OfpOxmClass_OFPXMC_NXM_0)
+const OfpOxmClass_OFPXMC_NXM_1 = OfpOxmClass(openflow_13.OfpOxmClass_OFPXMC_NXM_1)
+const OfpOxmClass_OFPXMC_OPENFLOW_BASIC = OfpOxmClass(openflow_13.OfpOxmClass_OFPXMC_OPENFLOW_BASIC)
+const OfpOxmClass_OFPXMC_EXPERIMENTER = OfpOxmClass(openflow_13.OfpOxmClass_OFPXMC_EXPERIMENTER)
+
+// OxmOfbFieldTypes from public import voltha_protos/openflow_13.proto
+type OxmOfbFieldTypes = openflow_13.OxmOfbFieldTypes
+
+var OxmOfbFieldTypes_name = openflow_13.OxmOfbFieldTypes_name
+var OxmOfbFieldTypes_value = openflow_13.OxmOfbFieldTypes_value
+
+const OxmOfbFieldTypes_OFPXMT_OFB_IN_PORT = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_IN_PORT)
+const OxmOfbFieldTypes_OFPXMT_OFB_IN_PHY_PORT = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_IN_PHY_PORT)
+const OxmOfbFieldTypes_OFPXMT_OFB_METADATA = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_METADATA)
+const OxmOfbFieldTypes_OFPXMT_OFB_ETH_DST = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_ETH_DST)
+const OxmOfbFieldTypes_OFPXMT_OFB_ETH_SRC = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_ETH_SRC)
+const OxmOfbFieldTypes_OFPXMT_OFB_ETH_TYPE = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_ETH_TYPE)
+const OxmOfbFieldTypes_OFPXMT_OFB_VLAN_VID = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_VLAN_VID)
+const OxmOfbFieldTypes_OFPXMT_OFB_VLAN_PCP = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_VLAN_PCP)
+const OxmOfbFieldTypes_OFPXMT_OFB_IP_DSCP = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_IP_DSCP)
+const OxmOfbFieldTypes_OFPXMT_OFB_IP_ECN = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_IP_ECN)
+const OxmOfbFieldTypes_OFPXMT_OFB_IP_PROTO = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_IP_PROTO)
+const OxmOfbFieldTypes_OFPXMT_OFB_IPV4_SRC = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_IPV4_SRC)
+const OxmOfbFieldTypes_OFPXMT_OFB_IPV4_DST = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_IPV4_DST)
+const OxmOfbFieldTypes_OFPXMT_OFB_TCP_SRC = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_TCP_SRC)
+const OxmOfbFieldTypes_OFPXMT_OFB_TCP_DST = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_TCP_DST)
+const OxmOfbFieldTypes_OFPXMT_OFB_UDP_SRC = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_UDP_SRC)
+const OxmOfbFieldTypes_OFPXMT_OFB_UDP_DST = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_UDP_DST)
+const OxmOfbFieldTypes_OFPXMT_OFB_SCTP_SRC = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_SCTP_SRC)
+const OxmOfbFieldTypes_OFPXMT_OFB_SCTP_DST = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_SCTP_DST)
+const OxmOfbFieldTypes_OFPXMT_OFB_ICMPV4_TYPE = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_ICMPV4_TYPE)
+const OxmOfbFieldTypes_OFPXMT_OFB_ICMPV4_CODE = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_ICMPV4_CODE)
+const OxmOfbFieldTypes_OFPXMT_OFB_ARP_OP = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_ARP_OP)
+const OxmOfbFieldTypes_OFPXMT_OFB_ARP_SPA = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_ARP_SPA)
+const OxmOfbFieldTypes_OFPXMT_OFB_ARP_TPA = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_ARP_TPA)
+const OxmOfbFieldTypes_OFPXMT_OFB_ARP_SHA = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_ARP_SHA)
+const OxmOfbFieldTypes_OFPXMT_OFB_ARP_THA = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_ARP_THA)
+const OxmOfbFieldTypes_OFPXMT_OFB_IPV6_SRC = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_IPV6_SRC)
+const OxmOfbFieldTypes_OFPXMT_OFB_IPV6_DST = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_IPV6_DST)
+const OxmOfbFieldTypes_OFPXMT_OFB_IPV6_FLABEL = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_IPV6_FLABEL)
+const OxmOfbFieldTypes_OFPXMT_OFB_ICMPV6_TYPE = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_ICMPV6_TYPE)
+const OxmOfbFieldTypes_OFPXMT_OFB_ICMPV6_CODE = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_ICMPV6_CODE)
+const OxmOfbFieldTypes_OFPXMT_OFB_IPV6_ND_TARGET = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_IPV6_ND_TARGET)
+const OxmOfbFieldTypes_OFPXMT_OFB_IPV6_ND_SLL = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_IPV6_ND_SLL)
+const OxmOfbFieldTypes_OFPXMT_OFB_IPV6_ND_TLL = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_IPV6_ND_TLL)
+const OxmOfbFieldTypes_OFPXMT_OFB_MPLS_LABEL = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_MPLS_LABEL)
+const OxmOfbFieldTypes_OFPXMT_OFB_MPLS_TC = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_MPLS_TC)
+const OxmOfbFieldTypes_OFPXMT_OFB_MPLS_BOS = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_MPLS_BOS)
+const OxmOfbFieldTypes_OFPXMT_OFB_PBB_ISID = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_PBB_ISID)
+const OxmOfbFieldTypes_OFPXMT_OFB_TUNNEL_ID = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_TUNNEL_ID)
+const OxmOfbFieldTypes_OFPXMT_OFB_IPV6_EXTHDR = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_IPV6_EXTHDR)
+
+// OfpVlanId from public import voltha_protos/openflow_13.proto
+type OfpVlanId = openflow_13.OfpVlanId
+
+var OfpVlanId_name = openflow_13.OfpVlanId_name
+var OfpVlanId_value = openflow_13.OfpVlanId_value
+
+const OfpVlanId_OFPVID_NONE = OfpVlanId(openflow_13.OfpVlanId_OFPVID_NONE)
+const OfpVlanId_OFPVID_PRESENT = OfpVlanId(openflow_13.OfpVlanId_OFPVID_PRESENT)
+
+// OfpIpv6ExthdrFlags from public import voltha_protos/openflow_13.proto
+type OfpIpv6ExthdrFlags = openflow_13.OfpIpv6ExthdrFlags
+
+var OfpIpv6ExthdrFlags_name = openflow_13.OfpIpv6ExthdrFlags_name
+var OfpIpv6ExthdrFlags_value = openflow_13.OfpIpv6ExthdrFlags_value
+
+const OfpIpv6ExthdrFlags_OFPIEH_INVALID = OfpIpv6ExthdrFlags(openflow_13.OfpIpv6ExthdrFlags_OFPIEH_INVALID)
+const OfpIpv6ExthdrFlags_OFPIEH_NONEXT = OfpIpv6ExthdrFlags(openflow_13.OfpIpv6ExthdrFlags_OFPIEH_NONEXT)
+const OfpIpv6ExthdrFlags_OFPIEH_ESP = OfpIpv6ExthdrFlags(openflow_13.OfpIpv6ExthdrFlags_OFPIEH_ESP)
+const OfpIpv6ExthdrFlags_OFPIEH_AUTH = OfpIpv6ExthdrFlags(openflow_13.OfpIpv6ExthdrFlags_OFPIEH_AUTH)
+const OfpIpv6ExthdrFlags_OFPIEH_DEST = OfpIpv6ExthdrFlags(openflow_13.OfpIpv6ExthdrFlags_OFPIEH_DEST)
+const OfpIpv6ExthdrFlags_OFPIEH_FRAG = OfpIpv6ExthdrFlags(openflow_13.OfpIpv6ExthdrFlags_OFPIEH_FRAG)
+const OfpIpv6ExthdrFlags_OFPIEH_ROUTER = OfpIpv6ExthdrFlags(openflow_13.OfpIpv6ExthdrFlags_OFPIEH_ROUTER)
+const OfpIpv6ExthdrFlags_OFPIEH_HOP = OfpIpv6ExthdrFlags(openflow_13.OfpIpv6ExthdrFlags_OFPIEH_HOP)
+const OfpIpv6ExthdrFlags_OFPIEH_UNREP = OfpIpv6ExthdrFlags(openflow_13.OfpIpv6ExthdrFlags_OFPIEH_UNREP)
+const OfpIpv6ExthdrFlags_OFPIEH_UNSEQ = OfpIpv6ExthdrFlags(openflow_13.OfpIpv6ExthdrFlags_OFPIEH_UNSEQ)
+
+// OfpActionType from public import voltha_protos/openflow_13.proto
+type OfpActionType = openflow_13.OfpActionType
+
+var OfpActionType_name = openflow_13.OfpActionType_name
+var OfpActionType_value = openflow_13.OfpActionType_value
+
+const OfpActionType_OFPAT_OUTPUT = OfpActionType(openflow_13.OfpActionType_OFPAT_OUTPUT)
+const OfpActionType_OFPAT_COPY_TTL_OUT = OfpActionType(openflow_13.OfpActionType_OFPAT_COPY_TTL_OUT)
+const OfpActionType_OFPAT_COPY_TTL_IN = OfpActionType(openflow_13.OfpActionType_OFPAT_COPY_TTL_IN)
+const OfpActionType_OFPAT_SET_MPLS_TTL = OfpActionType(openflow_13.OfpActionType_OFPAT_SET_MPLS_TTL)
+const OfpActionType_OFPAT_DEC_MPLS_TTL = OfpActionType(openflow_13.OfpActionType_OFPAT_DEC_MPLS_TTL)
+const OfpActionType_OFPAT_PUSH_VLAN = OfpActionType(openflow_13.OfpActionType_OFPAT_PUSH_VLAN)
+const OfpActionType_OFPAT_POP_VLAN = OfpActionType(openflow_13.OfpActionType_OFPAT_POP_VLAN)
+const OfpActionType_OFPAT_PUSH_MPLS = OfpActionType(openflow_13.OfpActionType_OFPAT_PUSH_MPLS)
+const OfpActionType_OFPAT_POP_MPLS = OfpActionType(openflow_13.OfpActionType_OFPAT_POP_MPLS)
+const OfpActionType_OFPAT_SET_QUEUE = OfpActionType(openflow_13.OfpActionType_OFPAT_SET_QUEUE)
+const OfpActionType_OFPAT_GROUP = OfpActionType(openflow_13.OfpActionType_OFPAT_GROUP)
+const OfpActionType_OFPAT_SET_NW_TTL = OfpActionType(openflow_13.OfpActionType_OFPAT_SET_NW_TTL)
+const OfpActionType_OFPAT_DEC_NW_TTL = OfpActionType(openflow_13.OfpActionType_OFPAT_DEC_NW_TTL)
+const OfpActionType_OFPAT_SET_FIELD = OfpActionType(openflow_13.OfpActionType_OFPAT_SET_FIELD)
+const OfpActionType_OFPAT_PUSH_PBB = OfpActionType(openflow_13.OfpActionType_OFPAT_PUSH_PBB)
+const OfpActionType_OFPAT_POP_PBB = OfpActionType(openflow_13.OfpActionType_OFPAT_POP_PBB)
+const OfpActionType_OFPAT_EXPERIMENTER = OfpActionType(openflow_13.OfpActionType_OFPAT_EXPERIMENTER)
+
+// OfpControllerMaxLen from public import voltha_protos/openflow_13.proto
+type OfpControllerMaxLen = openflow_13.OfpControllerMaxLen
+
+var OfpControllerMaxLen_name = openflow_13.OfpControllerMaxLen_name
+var OfpControllerMaxLen_value = openflow_13.OfpControllerMaxLen_value
+
+const OfpControllerMaxLen_OFPCML_INVALID = OfpControllerMaxLen(openflow_13.OfpControllerMaxLen_OFPCML_INVALID)
+const OfpControllerMaxLen_OFPCML_MAX = OfpControllerMaxLen(openflow_13.OfpControllerMaxLen_OFPCML_MAX)
+const OfpControllerMaxLen_OFPCML_NO_BUFFER = OfpControllerMaxLen(openflow_13.OfpControllerMaxLen_OFPCML_NO_BUFFER)
+
+// OfpInstructionType from public import voltha_protos/openflow_13.proto
+type OfpInstructionType = openflow_13.OfpInstructionType
+
+var OfpInstructionType_name = openflow_13.OfpInstructionType_name
+var OfpInstructionType_value = openflow_13.OfpInstructionType_value
+
+const OfpInstructionType_OFPIT_INVALID = OfpInstructionType(openflow_13.OfpInstructionType_OFPIT_INVALID)
+const OfpInstructionType_OFPIT_GOTO_TABLE = OfpInstructionType(openflow_13.OfpInstructionType_OFPIT_GOTO_TABLE)
+const OfpInstructionType_OFPIT_WRITE_METADATA = OfpInstructionType(openflow_13.OfpInstructionType_OFPIT_WRITE_METADATA)
+const OfpInstructionType_OFPIT_WRITE_ACTIONS = OfpInstructionType(openflow_13.OfpInstructionType_OFPIT_WRITE_ACTIONS)
+const OfpInstructionType_OFPIT_APPLY_ACTIONS = OfpInstructionType(openflow_13.OfpInstructionType_OFPIT_APPLY_ACTIONS)
+const OfpInstructionType_OFPIT_CLEAR_ACTIONS = OfpInstructionType(openflow_13.OfpInstructionType_OFPIT_CLEAR_ACTIONS)
+const OfpInstructionType_OFPIT_METER = OfpInstructionType(openflow_13.OfpInstructionType_OFPIT_METER)
+const OfpInstructionType_OFPIT_EXPERIMENTER = OfpInstructionType(openflow_13.OfpInstructionType_OFPIT_EXPERIMENTER)
+
+// OfpFlowModCommand from public import voltha_protos/openflow_13.proto
+type OfpFlowModCommand = openflow_13.OfpFlowModCommand
+
+var OfpFlowModCommand_name = openflow_13.OfpFlowModCommand_name
+var OfpFlowModCommand_value = openflow_13.OfpFlowModCommand_value
+
+const OfpFlowModCommand_OFPFC_ADD = OfpFlowModCommand(openflow_13.OfpFlowModCommand_OFPFC_ADD)
+const OfpFlowModCommand_OFPFC_MODIFY = OfpFlowModCommand(openflow_13.OfpFlowModCommand_OFPFC_MODIFY)
+const OfpFlowModCommand_OFPFC_MODIFY_STRICT = OfpFlowModCommand(openflow_13.OfpFlowModCommand_OFPFC_MODIFY_STRICT)
+const OfpFlowModCommand_OFPFC_DELETE = OfpFlowModCommand(openflow_13.OfpFlowModCommand_OFPFC_DELETE)
+const OfpFlowModCommand_OFPFC_DELETE_STRICT = OfpFlowModCommand(openflow_13.OfpFlowModCommand_OFPFC_DELETE_STRICT)
+
+// OfpFlowModFlags from public import voltha_protos/openflow_13.proto
+type OfpFlowModFlags = openflow_13.OfpFlowModFlags
+
+var OfpFlowModFlags_name = openflow_13.OfpFlowModFlags_name
+var OfpFlowModFlags_value = openflow_13.OfpFlowModFlags_value
+
+const OfpFlowModFlags_OFPFF_INVALID = OfpFlowModFlags(openflow_13.OfpFlowModFlags_OFPFF_INVALID)
+const OfpFlowModFlags_OFPFF_SEND_FLOW_REM = OfpFlowModFlags(openflow_13.OfpFlowModFlags_OFPFF_SEND_FLOW_REM)
+const OfpFlowModFlags_OFPFF_CHECK_OVERLAP = OfpFlowModFlags(openflow_13.OfpFlowModFlags_OFPFF_CHECK_OVERLAP)
+const OfpFlowModFlags_OFPFF_RESET_COUNTS = OfpFlowModFlags(openflow_13.OfpFlowModFlags_OFPFF_RESET_COUNTS)
+const OfpFlowModFlags_OFPFF_NO_PKT_COUNTS = OfpFlowModFlags(openflow_13.OfpFlowModFlags_OFPFF_NO_PKT_COUNTS)
+const OfpFlowModFlags_OFPFF_NO_BYT_COUNTS = OfpFlowModFlags(openflow_13.OfpFlowModFlags_OFPFF_NO_BYT_COUNTS)
+
+// OfpGroup from public import voltha_protos/openflow_13.proto
+type OfpGroup = openflow_13.OfpGroup
+
+var OfpGroup_name = openflow_13.OfpGroup_name
+var OfpGroup_value = openflow_13.OfpGroup_value
+
+const OfpGroup_OFPG_INVALID = OfpGroup(openflow_13.OfpGroup_OFPG_INVALID)
+const OfpGroup_OFPG_MAX = OfpGroup(openflow_13.OfpGroup_OFPG_MAX)
+const OfpGroup_OFPG_ALL = OfpGroup(openflow_13.OfpGroup_OFPG_ALL)
+const OfpGroup_OFPG_ANY = OfpGroup(openflow_13.OfpGroup_OFPG_ANY)
+
+// OfpGroupModCommand from public import voltha_protos/openflow_13.proto
+type OfpGroupModCommand = openflow_13.OfpGroupModCommand
+
+var OfpGroupModCommand_name = openflow_13.OfpGroupModCommand_name
+var OfpGroupModCommand_value = openflow_13.OfpGroupModCommand_value
+
+const OfpGroupModCommand_OFPGC_ADD = OfpGroupModCommand(openflow_13.OfpGroupModCommand_OFPGC_ADD)
+const OfpGroupModCommand_OFPGC_MODIFY = OfpGroupModCommand(openflow_13.OfpGroupModCommand_OFPGC_MODIFY)
+const OfpGroupModCommand_OFPGC_DELETE = OfpGroupModCommand(openflow_13.OfpGroupModCommand_OFPGC_DELETE)
+
+// OfpGroupType from public import voltha_protos/openflow_13.proto
+type OfpGroupType = openflow_13.OfpGroupType
+
+var OfpGroupType_name = openflow_13.OfpGroupType_name
+var OfpGroupType_value = openflow_13.OfpGroupType_value
+
+const OfpGroupType_OFPGT_ALL = OfpGroupType(openflow_13.OfpGroupType_OFPGT_ALL)
+const OfpGroupType_OFPGT_SELECT = OfpGroupType(openflow_13.OfpGroupType_OFPGT_SELECT)
+const OfpGroupType_OFPGT_INDIRECT = OfpGroupType(openflow_13.OfpGroupType_OFPGT_INDIRECT)
+const OfpGroupType_OFPGT_FF = OfpGroupType(openflow_13.OfpGroupType_OFPGT_FF)
+
+// OfpPacketInReason from public import voltha_protos/openflow_13.proto
+type OfpPacketInReason = openflow_13.OfpPacketInReason
+
+var OfpPacketInReason_name = openflow_13.OfpPacketInReason_name
+var OfpPacketInReason_value = openflow_13.OfpPacketInReason_value
+
+const OfpPacketInReason_OFPR_NO_MATCH = OfpPacketInReason(openflow_13.OfpPacketInReason_OFPR_NO_MATCH)
+const OfpPacketInReason_OFPR_ACTION = OfpPacketInReason(openflow_13.OfpPacketInReason_OFPR_ACTION)
+const OfpPacketInReason_OFPR_INVALID_TTL = OfpPacketInReason(openflow_13.OfpPacketInReason_OFPR_INVALID_TTL)
+
+// OfpFlowRemovedReason from public import voltha_protos/openflow_13.proto
+type OfpFlowRemovedReason = openflow_13.OfpFlowRemovedReason
+
+var OfpFlowRemovedReason_name = openflow_13.OfpFlowRemovedReason_name
+var OfpFlowRemovedReason_value = openflow_13.OfpFlowRemovedReason_value
+
+const OfpFlowRemovedReason_OFPRR_IDLE_TIMEOUT = OfpFlowRemovedReason(openflow_13.OfpFlowRemovedReason_OFPRR_IDLE_TIMEOUT)
+const OfpFlowRemovedReason_OFPRR_HARD_TIMEOUT = OfpFlowRemovedReason(openflow_13.OfpFlowRemovedReason_OFPRR_HARD_TIMEOUT)
+const OfpFlowRemovedReason_OFPRR_DELETE = OfpFlowRemovedReason(openflow_13.OfpFlowRemovedReason_OFPRR_DELETE)
+const OfpFlowRemovedReason_OFPRR_GROUP_DELETE = OfpFlowRemovedReason(openflow_13.OfpFlowRemovedReason_OFPRR_GROUP_DELETE)
+const OfpFlowRemovedReason_OFPRR_METER_DELETE = OfpFlowRemovedReason(openflow_13.OfpFlowRemovedReason_OFPRR_METER_DELETE)
+
+// OfpMeter from public import voltha_protos/openflow_13.proto
+type OfpMeter = openflow_13.OfpMeter
+
+var OfpMeter_name = openflow_13.OfpMeter_name
+var OfpMeter_value = openflow_13.OfpMeter_value
+
+const OfpMeter_OFPM_ZERO = OfpMeter(openflow_13.OfpMeter_OFPM_ZERO)
+const OfpMeter_OFPM_MAX = OfpMeter(openflow_13.OfpMeter_OFPM_MAX)
+const OfpMeter_OFPM_SLOWPATH = OfpMeter(openflow_13.OfpMeter_OFPM_SLOWPATH)
+const OfpMeter_OFPM_CONTROLLER = OfpMeter(openflow_13.OfpMeter_OFPM_CONTROLLER)
+const OfpMeter_OFPM_ALL = OfpMeter(openflow_13.OfpMeter_OFPM_ALL)
+
+// OfpMeterBandType from public import voltha_protos/openflow_13.proto
+type OfpMeterBandType = openflow_13.OfpMeterBandType
+
+var OfpMeterBandType_name = openflow_13.OfpMeterBandType_name
+var OfpMeterBandType_value = openflow_13.OfpMeterBandType_value
+
+const OfpMeterBandType_OFPMBT_INVALID = OfpMeterBandType(openflow_13.OfpMeterBandType_OFPMBT_INVALID)
+const OfpMeterBandType_OFPMBT_DROP = OfpMeterBandType(openflow_13.OfpMeterBandType_OFPMBT_DROP)
+const OfpMeterBandType_OFPMBT_DSCP_REMARK = OfpMeterBandType(openflow_13.OfpMeterBandType_OFPMBT_DSCP_REMARK)
+const OfpMeterBandType_OFPMBT_EXPERIMENTER = OfpMeterBandType(openflow_13.OfpMeterBandType_OFPMBT_EXPERIMENTER)
+
+// OfpMeterModCommand from public import voltha_protos/openflow_13.proto
+type OfpMeterModCommand = openflow_13.OfpMeterModCommand
+
+var OfpMeterModCommand_name = openflow_13.OfpMeterModCommand_name
+var OfpMeterModCommand_value = openflow_13.OfpMeterModCommand_value
+
+const OfpMeterModCommand_OFPMC_ADD = OfpMeterModCommand(openflow_13.OfpMeterModCommand_OFPMC_ADD)
+const OfpMeterModCommand_OFPMC_MODIFY = OfpMeterModCommand(openflow_13.OfpMeterModCommand_OFPMC_MODIFY)
+const OfpMeterModCommand_OFPMC_DELETE = OfpMeterModCommand(openflow_13.OfpMeterModCommand_OFPMC_DELETE)
+
+// OfpMeterFlags from public import voltha_protos/openflow_13.proto
+type OfpMeterFlags = openflow_13.OfpMeterFlags
+
+var OfpMeterFlags_name = openflow_13.OfpMeterFlags_name
+var OfpMeterFlags_value = openflow_13.OfpMeterFlags_value
+
+const OfpMeterFlags_OFPMF_INVALID = OfpMeterFlags(openflow_13.OfpMeterFlags_OFPMF_INVALID)
+const OfpMeterFlags_OFPMF_KBPS = OfpMeterFlags(openflow_13.OfpMeterFlags_OFPMF_KBPS)
+const OfpMeterFlags_OFPMF_PKTPS = OfpMeterFlags(openflow_13.OfpMeterFlags_OFPMF_PKTPS)
+const OfpMeterFlags_OFPMF_BURST = OfpMeterFlags(openflow_13.OfpMeterFlags_OFPMF_BURST)
+const OfpMeterFlags_OFPMF_STATS = OfpMeterFlags(openflow_13.OfpMeterFlags_OFPMF_STATS)
+
+// OfpErrorType from public import voltha_protos/openflow_13.proto
+type OfpErrorType = openflow_13.OfpErrorType
+
+var OfpErrorType_name = openflow_13.OfpErrorType_name
+var OfpErrorType_value = openflow_13.OfpErrorType_value
+
+const OfpErrorType_OFPET_HELLO_FAILED = OfpErrorType(openflow_13.OfpErrorType_OFPET_HELLO_FAILED)
+const OfpErrorType_OFPET_BAD_REQUEST = OfpErrorType(openflow_13.OfpErrorType_OFPET_BAD_REQUEST)
+const OfpErrorType_OFPET_BAD_ACTION = OfpErrorType(openflow_13.OfpErrorType_OFPET_BAD_ACTION)
+const OfpErrorType_OFPET_BAD_INSTRUCTION = OfpErrorType(openflow_13.OfpErrorType_OFPET_BAD_INSTRUCTION)
+const OfpErrorType_OFPET_BAD_MATCH = OfpErrorType(openflow_13.OfpErrorType_OFPET_BAD_MATCH)
+const OfpErrorType_OFPET_FLOW_MOD_FAILED = OfpErrorType(openflow_13.OfpErrorType_OFPET_FLOW_MOD_FAILED)
+const OfpErrorType_OFPET_GROUP_MOD_FAILED = OfpErrorType(openflow_13.OfpErrorType_OFPET_GROUP_MOD_FAILED)
+const OfpErrorType_OFPET_PORT_MOD_FAILED = OfpErrorType(openflow_13.OfpErrorType_OFPET_PORT_MOD_FAILED)
+const OfpErrorType_OFPET_TABLE_MOD_FAILED = OfpErrorType(openflow_13.OfpErrorType_OFPET_TABLE_MOD_FAILED)
+const OfpErrorType_OFPET_QUEUE_OP_FAILED = OfpErrorType(openflow_13.OfpErrorType_OFPET_QUEUE_OP_FAILED)
+const OfpErrorType_OFPET_SWITCH_CONFIG_FAILED = OfpErrorType(openflow_13.OfpErrorType_OFPET_SWITCH_CONFIG_FAILED)
+const OfpErrorType_OFPET_ROLE_REQUEST_FAILED = OfpErrorType(openflow_13.OfpErrorType_OFPET_ROLE_REQUEST_FAILED)
+const OfpErrorType_OFPET_METER_MOD_FAILED = OfpErrorType(openflow_13.OfpErrorType_OFPET_METER_MOD_FAILED)
+const OfpErrorType_OFPET_TABLE_FEATURES_FAILED = OfpErrorType(openflow_13.OfpErrorType_OFPET_TABLE_FEATURES_FAILED)
+const OfpErrorType_OFPET_EXPERIMENTER = OfpErrorType(openflow_13.OfpErrorType_OFPET_EXPERIMENTER)
+
+// OfpHelloFailedCode from public import voltha_protos/openflow_13.proto
+type OfpHelloFailedCode = openflow_13.OfpHelloFailedCode
+
+var OfpHelloFailedCode_name = openflow_13.OfpHelloFailedCode_name
+var OfpHelloFailedCode_value = openflow_13.OfpHelloFailedCode_value
+
+const OfpHelloFailedCode_OFPHFC_INCOMPATIBLE = OfpHelloFailedCode(openflow_13.OfpHelloFailedCode_OFPHFC_INCOMPATIBLE)
+const OfpHelloFailedCode_OFPHFC_EPERM = OfpHelloFailedCode(openflow_13.OfpHelloFailedCode_OFPHFC_EPERM)
+
+// OfpBadRequestCode from public import voltha_protos/openflow_13.proto
+type OfpBadRequestCode = openflow_13.OfpBadRequestCode
+
+var OfpBadRequestCode_name = openflow_13.OfpBadRequestCode_name
+var OfpBadRequestCode_value = openflow_13.OfpBadRequestCode_value
+
+const OfpBadRequestCode_OFPBRC_BAD_VERSION = OfpBadRequestCode(openflow_13.OfpBadRequestCode_OFPBRC_BAD_VERSION)
+const OfpBadRequestCode_OFPBRC_BAD_TYPE = OfpBadRequestCode(openflow_13.OfpBadRequestCode_OFPBRC_BAD_TYPE)
+const OfpBadRequestCode_OFPBRC_BAD_MULTIPART = OfpBadRequestCode(openflow_13.OfpBadRequestCode_OFPBRC_BAD_MULTIPART)
+const OfpBadRequestCode_OFPBRC_BAD_EXPERIMENTER = OfpBadRequestCode(openflow_13.OfpBadRequestCode_OFPBRC_BAD_EXPERIMENTER)
+const OfpBadRequestCode_OFPBRC_BAD_EXP_TYPE = OfpBadRequestCode(openflow_13.OfpBadRequestCode_OFPBRC_BAD_EXP_TYPE)
+const OfpBadRequestCode_OFPBRC_EPERM = OfpBadRequestCode(openflow_13.OfpBadRequestCode_OFPBRC_EPERM)
+const OfpBadRequestCode_OFPBRC_BAD_LEN = OfpBadRequestCode(openflow_13.OfpBadRequestCode_OFPBRC_BAD_LEN)
+const OfpBadRequestCode_OFPBRC_BUFFER_EMPTY = OfpBadRequestCode(openflow_13.OfpBadRequestCode_OFPBRC_BUFFER_EMPTY)
+const OfpBadRequestCode_OFPBRC_BUFFER_UNKNOWN = OfpBadRequestCode(openflow_13.OfpBadRequestCode_OFPBRC_BUFFER_UNKNOWN)
+const OfpBadRequestCode_OFPBRC_BAD_TABLE_ID = OfpBadRequestCode(openflow_13.OfpBadRequestCode_OFPBRC_BAD_TABLE_ID)
+const OfpBadRequestCode_OFPBRC_IS_SLAVE = OfpBadRequestCode(openflow_13.OfpBadRequestCode_OFPBRC_IS_SLAVE)
+const OfpBadRequestCode_OFPBRC_BAD_PORT = OfpBadRequestCode(openflow_13.OfpBadRequestCode_OFPBRC_BAD_PORT)
+const OfpBadRequestCode_OFPBRC_BAD_PACKET = OfpBadRequestCode(openflow_13.OfpBadRequestCode_OFPBRC_BAD_PACKET)
+const OfpBadRequestCode_OFPBRC_MULTIPART_BUFFER_OVERFLOW = OfpBadRequestCode(openflow_13.OfpBadRequestCode_OFPBRC_MULTIPART_BUFFER_OVERFLOW)
+
+// OfpBadActionCode from public import voltha_protos/openflow_13.proto
+type OfpBadActionCode = openflow_13.OfpBadActionCode
+
+var OfpBadActionCode_name = openflow_13.OfpBadActionCode_name
+var OfpBadActionCode_value = openflow_13.OfpBadActionCode_value
+
+const OfpBadActionCode_OFPBAC_BAD_TYPE = OfpBadActionCode(openflow_13.OfpBadActionCode_OFPBAC_BAD_TYPE)
+const OfpBadActionCode_OFPBAC_BAD_LEN = OfpBadActionCode(openflow_13.OfpBadActionCode_OFPBAC_BAD_LEN)
+const OfpBadActionCode_OFPBAC_BAD_EXPERIMENTER = OfpBadActionCode(openflow_13.OfpBadActionCode_OFPBAC_BAD_EXPERIMENTER)
+const OfpBadActionCode_OFPBAC_BAD_EXP_TYPE = OfpBadActionCode(openflow_13.OfpBadActionCode_OFPBAC_BAD_EXP_TYPE)
+const OfpBadActionCode_OFPBAC_BAD_OUT_PORT = OfpBadActionCode(openflow_13.OfpBadActionCode_OFPBAC_BAD_OUT_PORT)
+const OfpBadActionCode_OFPBAC_BAD_ARGUMENT = OfpBadActionCode(openflow_13.OfpBadActionCode_OFPBAC_BAD_ARGUMENT)
+const OfpBadActionCode_OFPBAC_EPERM = OfpBadActionCode(openflow_13.OfpBadActionCode_OFPBAC_EPERM)
+const OfpBadActionCode_OFPBAC_TOO_MANY = OfpBadActionCode(openflow_13.OfpBadActionCode_OFPBAC_TOO_MANY)
+const OfpBadActionCode_OFPBAC_BAD_QUEUE = OfpBadActionCode(openflow_13.OfpBadActionCode_OFPBAC_BAD_QUEUE)
+const OfpBadActionCode_OFPBAC_BAD_OUT_GROUP = OfpBadActionCode(openflow_13.OfpBadActionCode_OFPBAC_BAD_OUT_GROUP)
+const OfpBadActionCode_OFPBAC_MATCH_INCONSISTENT = OfpBadActionCode(openflow_13.OfpBadActionCode_OFPBAC_MATCH_INCONSISTENT)
+const OfpBadActionCode_OFPBAC_UNSUPPORTED_ORDER = OfpBadActionCode(openflow_13.OfpBadActionCode_OFPBAC_UNSUPPORTED_ORDER)
+const OfpBadActionCode_OFPBAC_BAD_TAG = OfpBadActionCode(openflow_13.OfpBadActionCode_OFPBAC_BAD_TAG)
+const OfpBadActionCode_OFPBAC_BAD_SET_TYPE = OfpBadActionCode(openflow_13.OfpBadActionCode_OFPBAC_BAD_SET_TYPE)
+const OfpBadActionCode_OFPBAC_BAD_SET_LEN = OfpBadActionCode(openflow_13.OfpBadActionCode_OFPBAC_BAD_SET_LEN)
+const OfpBadActionCode_OFPBAC_BAD_SET_ARGUMENT = OfpBadActionCode(openflow_13.OfpBadActionCode_OFPBAC_BAD_SET_ARGUMENT)
+
+// OfpBadInstructionCode from public import voltha_protos/openflow_13.proto
+type OfpBadInstructionCode = openflow_13.OfpBadInstructionCode
+
+var OfpBadInstructionCode_name = openflow_13.OfpBadInstructionCode_name
+var OfpBadInstructionCode_value = openflow_13.OfpBadInstructionCode_value
+
+const OfpBadInstructionCode_OFPBIC_UNKNOWN_INST = OfpBadInstructionCode(openflow_13.OfpBadInstructionCode_OFPBIC_UNKNOWN_INST)
+const OfpBadInstructionCode_OFPBIC_UNSUP_INST = OfpBadInstructionCode(openflow_13.OfpBadInstructionCode_OFPBIC_UNSUP_INST)
+const OfpBadInstructionCode_OFPBIC_BAD_TABLE_ID = OfpBadInstructionCode(openflow_13.OfpBadInstructionCode_OFPBIC_BAD_TABLE_ID)
+const OfpBadInstructionCode_OFPBIC_UNSUP_METADATA = OfpBadInstructionCode(openflow_13.OfpBadInstructionCode_OFPBIC_UNSUP_METADATA)
+const OfpBadInstructionCode_OFPBIC_UNSUP_METADATA_MASK = OfpBadInstructionCode(openflow_13.OfpBadInstructionCode_OFPBIC_UNSUP_METADATA_MASK)
+const OfpBadInstructionCode_OFPBIC_BAD_EXPERIMENTER = OfpBadInstructionCode(openflow_13.OfpBadInstructionCode_OFPBIC_BAD_EXPERIMENTER)
+const OfpBadInstructionCode_OFPBIC_BAD_EXP_TYPE = OfpBadInstructionCode(openflow_13.OfpBadInstructionCode_OFPBIC_BAD_EXP_TYPE)
+const OfpBadInstructionCode_OFPBIC_BAD_LEN = OfpBadInstructionCode(openflow_13.OfpBadInstructionCode_OFPBIC_BAD_LEN)
+const OfpBadInstructionCode_OFPBIC_EPERM = OfpBadInstructionCode(openflow_13.OfpBadInstructionCode_OFPBIC_EPERM)
+
+// OfpBadMatchCode from public import voltha_protos/openflow_13.proto
+type OfpBadMatchCode = openflow_13.OfpBadMatchCode
+
+var OfpBadMatchCode_name = openflow_13.OfpBadMatchCode_name
+var OfpBadMatchCode_value = openflow_13.OfpBadMatchCode_value
+
+const OfpBadMatchCode_OFPBMC_BAD_TYPE = OfpBadMatchCode(openflow_13.OfpBadMatchCode_OFPBMC_BAD_TYPE)
+const OfpBadMatchCode_OFPBMC_BAD_LEN = OfpBadMatchCode(openflow_13.OfpBadMatchCode_OFPBMC_BAD_LEN)
+const OfpBadMatchCode_OFPBMC_BAD_TAG = OfpBadMatchCode(openflow_13.OfpBadMatchCode_OFPBMC_BAD_TAG)
+const OfpBadMatchCode_OFPBMC_BAD_DL_ADDR_MASK = OfpBadMatchCode(openflow_13.OfpBadMatchCode_OFPBMC_BAD_DL_ADDR_MASK)
+const OfpBadMatchCode_OFPBMC_BAD_NW_ADDR_MASK = OfpBadMatchCode(openflow_13.OfpBadMatchCode_OFPBMC_BAD_NW_ADDR_MASK)
+const OfpBadMatchCode_OFPBMC_BAD_WILDCARDS = OfpBadMatchCode(openflow_13.OfpBadMatchCode_OFPBMC_BAD_WILDCARDS)
+const OfpBadMatchCode_OFPBMC_BAD_FIELD = OfpBadMatchCode(openflow_13.OfpBadMatchCode_OFPBMC_BAD_FIELD)
+const OfpBadMatchCode_OFPBMC_BAD_VALUE = OfpBadMatchCode(openflow_13.OfpBadMatchCode_OFPBMC_BAD_VALUE)
+const OfpBadMatchCode_OFPBMC_BAD_MASK = OfpBadMatchCode(openflow_13.OfpBadMatchCode_OFPBMC_BAD_MASK)
+const OfpBadMatchCode_OFPBMC_BAD_PREREQ = OfpBadMatchCode(openflow_13.OfpBadMatchCode_OFPBMC_BAD_PREREQ)
+const OfpBadMatchCode_OFPBMC_DUP_FIELD = OfpBadMatchCode(openflow_13.OfpBadMatchCode_OFPBMC_DUP_FIELD)
+const OfpBadMatchCode_OFPBMC_EPERM = OfpBadMatchCode(openflow_13.OfpBadMatchCode_OFPBMC_EPERM)
+
+// OfpFlowModFailedCode from public import voltha_protos/openflow_13.proto
+type OfpFlowModFailedCode = openflow_13.OfpFlowModFailedCode
+
+var OfpFlowModFailedCode_name = openflow_13.OfpFlowModFailedCode_name
+var OfpFlowModFailedCode_value = openflow_13.OfpFlowModFailedCode_value
+
+const OfpFlowModFailedCode_OFPFMFC_UNKNOWN = OfpFlowModFailedCode(openflow_13.OfpFlowModFailedCode_OFPFMFC_UNKNOWN)
+const OfpFlowModFailedCode_OFPFMFC_TABLE_FULL = OfpFlowModFailedCode(openflow_13.OfpFlowModFailedCode_OFPFMFC_TABLE_FULL)
+const OfpFlowModFailedCode_OFPFMFC_BAD_TABLE_ID = OfpFlowModFailedCode(openflow_13.OfpFlowModFailedCode_OFPFMFC_BAD_TABLE_ID)
+const OfpFlowModFailedCode_OFPFMFC_OVERLAP = OfpFlowModFailedCode(openflow_13.OfpFlowModFailedCode_OFPFMFC_OVERLAP)
+const OfpFlowModFailedCode_OFPFMFC_EPERM = OfpFlowModFailedCode(openflow_13.OfpFlowModFailedCode_OFPFMFC_EPERM)
+const OfpFlowModFailedCode_OFPFMFC_BAD_TIMEOUT = OfpFlowModFailedCode(openflow_13.OfpFlowModFailedCode_OFPFMFC_BAD_TIMEOUT)
+const OfpFlowModFailedCode_OFPFMFC_BAD_COMMAND = OfpFlowModFailedCode(openflow_13.OfpFlowModFailedCode_OFPFMFC_BAD_COMMAND)
+const OfpFlowModFailedCode_OFPFMFC_BAD_FLAGS = OfpFlowModFailedCode(openflow_13.OfpFlowModFailedCode_OFPFMFC_BAD_FLAGS)
+
+// OfpGroupModFailedCode from public import voltha_protos/openflow_13.proto
+type OfpGroupModFailedCode = openflow_13.OfpGroupModFailedCode
+
+var OfpGroupModFailedCode_name = openflow_13.OfpGroupModFailedCode_name
+var OfpGroupModFailedCode_value = openflow_13.OfpGroupModFailedCode_value
+
+const OfpGroupModFailedCode_OFPGMFC_GROUP_EXISTS = OfpGroupModFailedCode(openflow_13.OfpGroupModFailedCode_OFPGMFC_GROUP_EXISTS)
+const OfpGroupModFailedCode_OFPGMFC_INVALID_GROUP = OfpGroupModFailedCode(openflow_13.OfpGroupModFailedCode_OFPGMFC_INVALID_GROUP)
+const OfpGroupModFailedCode_OFPGMFC_WEIGHT_UNSUPPORTED = OfpGroupModFailedCode(openflow_13.OfpGroupModFailedCode_OFPGMFC_WEIGHT_UNSUPPORTED)
+const OfpGroupModFailedCode_OFPGMFC_OUT_OF_GROUPS = OfpGroupModFailedCode(openflow_13.OfpGroupModFailedCode_OFPGMFC_OUT_OF_GROUPS)
+const OfpGroupModFailedCode_OFPGMFC_OUT_OF_BUCKETS = OfpGroupModFailedCode(openflow_13.OfpGroupModFailedCode_OFPGMFC_OUT_OF_BUCKETS)
+const OfpGroupModFailedCode_OFPGMFC_CHAINING_UNSUPPORTED = OfpGroupModFailedCode(openflow_13.OfpGroupModFailedCode_OFPGMFC_CHAINING_UNSUPPORTED)
+const OfpGroupModFailedCode_OFPGMFC_WATCH_UNSUPPORTED = OfpGroupModFailedCode(openflow_13.OfpGroupModFailedCode_OFPGMFC_WATCH_UNSUPPORTED)
+const OfpGroupModFailedCode_OFPGMFC_LOOP = OfpGroupModFailedCode(openflow_13.OfpGroupModFailedCode_OFPGMFC_LOOP)
+const OfpGroupModFailedCode_OFPGMFC_UNKNOWN_GROUP = OfpGroupModFailedCode(openflow_13.OfpGroupModFailedCode_OFPGMFC_UNKNOWN_GROUP)
+const OfpGroupModFailedCode_OFPGMFC_CHAINED_GROUP = OfpGroupModFailedCode(openflow_13.OfpGroupModFailedCode_OFPGMFC_CHAINED_GROUP)
+const OfpGroupModFailedCode_OFPGMFC_BAD_TYPE = OfpGroupModFailedCode(openflow_13.OfpGroupModFailedCode_OFPGMFC_BAD_TYPE)
+const OfpGroupModFailedCode_OFPGMFC_BAD_COMMAND = OfpGroupModFailedCode(openflow_13.OfpGroupModFailedCode_OFPGMFC_BAD_COMMAND)
+const OfpGroupModFailedCode_OFPGMFC_BAD_BUCKET = OfpGroupModFailedCode(openflow_13.OfpGroupModFailedCode_OFPGMFC_BAD_BUCKET)
+const OfpGroupModFailedCode_OFPGMFC_BAD_WATCH = OfpGroupModFailedCode(openflow_13.OfpGroupModFailedCode_OFPGMFC_BAD_WATCH)
+const OfpGroupModFailedCode_OFPGMFC_EPERM = OfpGroupModFailedCode(openflow_13.OfpGroupModFailedCode_OFPGMFC_EPERM)
+
+// OfpPortModFailedCode from public import voltha_protos/openflow_13.proto
+type OfpPortModFailedCode = openflow_13.OfpPortModFailedCode
+
+var OfpPortModFailedCode_name = openflow_13.OfpPortModFailedCode_name
+var OfpPortModFailedCode_value = openflow_13.OfpPortModFailedCode_value
+
+const OfpPortModFailedCode_OFPPMFC_BAD_PORT = OfpPortModFailedCode(openflow_13.OfpPortModFailedCode_OFPPMFC_BAD_PORT)
+const OfpPortModFailedCode_OFPPMFC_BAD_HW_ADDR = OfpPortModFailedCode(openflow_13.OfpPortModFailedCode_OFPPMFC_BAD_HW_ADDR)
+const OfpPortModFailedCode_OFPPMFC_BAD_CONFIG = OfpPortModFailedCode(openflow_13.OfpPortModFailedCode_OFPPMFC_BAD_CONFIG)
+const OfpPortModFailedCode_OFPPMFC_BAD_ADVERTISE = OfpPortModFailedCode(openflow_13.OfpPortModFailedCode_OFPPMFC_BAD_ADVERTISE)
+const OfpPortModFailedCode_OFPPMFC_EPERM = OfpPortModFailedCode(openflow_13.OfpPortModFailedCode_OFPPMFC_EPERM)
+
+// OfpTableModFailedCode from public import voltha_protos/openflow_13.proto
+type OfpTableModFailedCode = openflow_13.OfpTableModFailedCode
+
+var OfpTableModFailedCode_name = openflow_13.OfpTableModFailedCode_name
+var OfpTableModFailedCode_value = openflow_13.OfpTableModFailedCode_value
+
+const OfpTableModFailedCode_OFPTMFC_BAD_TABLE = OfpTableModFailedCode(openflow_13.OfpTableModFailedCode_OFPTMFC_BAD_TABLE)
+const OfpTableModFailedCode_OFPTMFC_BAD_CONFIG = OfpTableModFailedCode(openflow_13.OfpTableModFailedCode_OFPTMFC_BAD_CONFIG)
+const OfpTableModFailedCode_OFPTMFC_EPERM = OfpTableModFailedCode(openflow_13.OfpTableModFailedCode_OFPTMFC_EPERM)
+
+// OfpQueueOpFailedCode from public import voltha_protos/openflow_13.proto
+type OfpQueueOpFailedCode = openflow_13.OfpQueueOpFailedCode
+
+var OfpQueueOpFailedCode_name = openflow_13.OfpQueueOpFailedCode_name
+var OfpQueueOpFailedCode_value = openflow_13.OfpQueueOpFailedCode_value
+
+const OfpQueueOpFailedCode_OFPQOFC_BAD_PORT = OfpQueueOpFailedCode(openflow_13.OfpQueueOpFailedCode_OFPQOFC_BAD_PORT)
+const OfpQueueOpFailedCode_OFPQOFC_BAD_QUEUE = OfpQueueOpFailedCode(openflow_13.OfpQueueOpFailedCode_OFPQOFC_BAD_QUEUE)
+const OfpQueueOpFailedCode_OFPQOFC_EPERM = OfpQueueOpFailedCode(openflow_13.OfpQueueOpFailedCode_OFPQOFC_EPERM)
+
+// OfpSwitchConfigFailedCode from public import voltha_protos/openflow_13.proto
+type OfpSwitchConfigFailedCode = openflow_13.OfpSwitchConfigFailedCode
+
+var OfpSwitchConfigFailedCode_name = openflow_13.OfpSwitchConfigFailedCode_name
+var OfpSwitchConfigFailedCode_value = openflow_13.OfpSwitchConfigFailedCode_value
+
+const OfpSwitchConfigFailedCode_OFPSCFC_BAD_FLAGS = OfpSwitchConfigFailedCode(openflow_13.OfpSwitchConfigFailedCode_OFPSCFC_BAD_FLAGS)
+const OfpSwitchConfigFailedCode_OFPSCFC_BAD_LEN = OfpSwitchConfigFailedCode(openflow_13.OfpSwitchConfigFailedCode_OFPSCFC_BAD_LEN)
+const OfpSwitchConfigFailedCode_OFPSCFC_EPERM = OfpSwitchConfigFailedCode(openflow_13.OfpSwitchConfigFailedCode_OFPSCFC_EPERM)
+
+// OfpRoleRequestFailedCode from public import voltha_protos/openflow_13.proto
+type OfpRoleRequestFailedCode = openflow_13.OfpRoleRequestFailedCode
+
+var OfpRoleRequestFailedCode_name = openflow_13.OfpRoleRequestFailedCode_name
+var OfpRoleRequestFailedCode_value = openflow_13.OfpRoleRequestFailedCode_value
+
+const OfpRoleRequestFailedCode_OFPRRFC_STALE = OfpRoleRequestFailedCode(openflow_13.OfpRoleRequestFailedCode_OFPRRFC_STALE)
+const OfpRoleRequestFailedCode_OFPRRFC_UNSUP = OfpRoleRequestFailedCode(openflow_13.OfpRoleRequestFailedCode_OFPRRFC_UNSUP)
+const OfpRoleRequestFailedCode_OFPRRFC_BAD_ROLE = OfpRoleRequestFailedCode(openflow_13.OfpRoleRequestFailedCode_OFPRRFC_BAD_ROLE)
+
+// OfpMeterModFailedCode from public import voltha_protos/openflow_13.proto
+type OfpMeterModFailedCode = openflow_13.OfpMeterModFailedCode
+
+var OfpMeterModFailedCode_name = openflow_13.OfpMeterModFailedCode_name
+var OfpMeterModFailedCode_value = openflow_13.OfpMeterModFailedCode_value
+
+const OfpMeterModFailedCode_OFPMMFC_UNKNOWN = OfpMeterModFailedCode(openflow_13.OfpMeterModFailedCode_OFPMMFC_UNKNOWN)
+const OfpMeterModFailedCode_OFPMMFC_METER_EXISTS = OfpMeterModFailedCode(openflow_13.OfpMeterModFailedCode_OFPMMFC_METER_EXISTS)
+const OfpMeterModFailedCode_OFPMMFC_INVALID_METER = OfpMeterModFailedCode(openflow_13.OfpMeterModFailedCode_OFPMMFC_INVALID_METER)
+const OfpMeterModFailedCode_OFPMMFC_UNKNOWN_METER = OfpMeterModFailedCode(openflow_13.OfpMeterModFailedCode_OFPMMFC_UNKNOWN_METER)
+const OfpMeterModFailedCode_OFPMMFC_BAD_COMMAND = OfpMeterModFailedCode(openflow_13.OfpMeterModFailedCode_OFPMMFC_BAD_COMMAND)
+const OfpMeterModFailedCode_OFPMMFC_BAD_FLAGS = OfpMeterModFailedCode(openflow_13.OfpMeterModFailedCode_OFPMMFC_BAD_FLAGS)
+const OfpMeterModFailedCode_OFPMMFC_BAD_RATE = OfpMeterModFailedCode(openflow_13.OfpMeterModFailedCode_OFPMMFC_BAD_RATE)
+const OfpMeterModFailedCode_OFPMMFC_BAD_BURST = OfpMeterModFailedCode(openflow_13.OfpMeterModFailedCode_OFPMMFC_BAD_BURST)
+const OfpMeterModFailedCode_OFPMMFC_BAD_BAND = OfpMeterModFailedCode(openflow_13.OfpMeterModFailedCode_OFPMMFC_BAD_BAND)
+const OfpMeterModFailedCode_OFPMMFC_BAD_BAND_DETAIL = OfpMeterModFailedCode(openflow_13.OfpMeterModFailedCode_OFPMMFC_BAD_BAND_DETAIL)
+const OfpMeterModFailedCode_OFPMMFC_OUT_OF_METERS = OfpMeterModFailedCode(openflow_13.OfpMeterModFailedCode_OFPMMFC_OUT_OF_METERS)
+const OfpMeterModFailedCode_OFPMMFC_OUT_OF_BANDS = OfpMeterModFailedCode(openflow_13.OfpMeterModFailedCode_OFPMMFC_OUT_OF_BANDS)
+
+// OfpTableFeaturesFailedCode from public import voltha_protos/openflow_13.proto
+type OfpTableFeaturesFailedCode = openflow_13.OfpTableFeaturesFailedCode
+
+var OfpTableFeaturesFailedCode_name = openflow_13.OfpTableFeaturesFailedCode_name
+var OfpTableFeaturesFailedCode_value = openflow_13.OfpTableFeaturesFailedCode_value
+
+const OfpTableFeaturesFailedCode_OFPTFFC_BAD_TABLE = OfpTableFeaturesFailedCode(openflow_13.OfpTableFeaturesFailedCode_OFPTFFC_BAD_TABLE)
+const OfpTableFeaturesFailedCode_OFPTFFC_BAD_METADATA = OfpTableFeaturesFailedCode(openflow_13.OfpTableFeaturesFailedCode_OFPTFFC_BAD_METADATA)
+const OfpTableFeaturesFailedCode_OFPTFFC_BAD_TYPE = OfpTableFeaturesFailedCode(openflow_13.OfpTableFeaturesFailedCode_OFPTFFC_BAD_TYPE)
+const OfpTableFeaturesFailedCode_OFPTFFC_BAD_LEN = OfpTableFeaturesFailedCode(openflow_13.OfpTableFeaturesFailedCode_OFPTFFC_BAD_LEN)
+const OfpTableFeaturesFailedCode_OFPTFFC_BAD_ARGUMENT = OfpTableFeaturesFailedCode(openflow_13.OfpTableFeaturesFailedCode_OFPTFFC_BAD_ARGUMENT)
+const OfpTableFeaturesFailedCode_OFPTFFC_EPERM = OfpTableFeaturesFailedCode(openflow_13.OfpTableFeaturesFailedCode_OFPTFFC_EPERM)
+
+// OfpMultipartType from public import voltha_protos/openflow_13.proto
+type OfpMultipartType = openflow_13.OfpMultipartType
+
+var OfpMultipartType_name = openflow_13.OfpMultipartType_name
+var OfpMultipartType_value = openflow_13.OfpMultipartType_value
+
+const OfpMultipartType_OFPMP_DESC = OfpMultipartType(openflow_13.OfpMultipartType_OFPMP_DESC)
+const OfpMultipartType_OFPMP_FLOW = OfpMultipartType(openflow_13.OfpMultipartType_OFPMP_FLOW)
+const OfpMultipartType_OFPMP_AGGREGATE = OfpMultipartType(openflow_13.OfpMultipartType_OFPMP_AGGREGATE)
+const OfpMultipartType_OFPMP_TABLE = OfpMultipartType(openflow_13.OfpMultipartType_OFPMP_TABLE)
+const OfpMultipartType_OFPMP_PORT_STATS = OfpMultipartType(openflow_13.OfpMultipartType_OFPMP_PORT_STATS)
+const OfpMultipartType_OFPMP_QUEUE = OfpMultipartType(openflow_13.OfpMultipartType_OFPMP_QUEUE)
+const OfpMultipartType_OFPMP_GROUP = OfpMultipartType(openflow_13.OfpMultipartType_OFPMP_GROUP)
+const OfpMultipartType_OFPMP_GROUP_DESC = OfpMultipartType(openflow_13.OfpMultipartType_OFPMP_GROUP_DESC)
+const OfpMultipartType_OFPMP_GROUP_FEATURES = OfpMultipartType(openflow_13.OfpMultipartType_OFPMP_GROUP_FEATURES)
+const OfpMultipartType_OFPMP_METER = OfpMultipartType(openflow_13.OfpMultipartType_OFPMP_METER)
+const OfpMultipartType_OFPMP_METER_CONFIG = OfpMultipartType(openflow_13.OfpMultipartType_OFPMP_METER_CONFIG)
+const OfpMultipartType_OFPMP_METER_FEATURES = OfpMultipartType(openflow_13.OfpMultipartType_OFPMP_METER_FEATURES)
+const OfpMultipartType_OFPMP_TABLE_FEATURES = OfpMultipartType(openflow_13.OfpMultipartType_OFPMP_TABLE_FEATURES)
+const OfpMultipartType_OFPMP_PORT_DESC = OfpMultipartType(openflow_13.OfpMultipartType_OFPMP_PORT_DESC)
+const OfpMultipartType_OFPMP_EXPERIMENTER = OfpMultipartType(openflow_13.OfpMultipartType_OFPMP_EXPERIMENTER)
+
+// OfpMultipartRequestFlags from public import voltha_protos/openflow_13.proto
+type OfpMultipartRequestFlags = openflow_13.OfpMultipartRequestFlags
+
+var OfpMultipartRequestFlags_name = openflow_13.OfpMultipartRequestFlags_name
+var OfpMultipartRequestFlags_value = openflow_13.OfpMultipartRequestFlags_value
+
+const OfpMultipartRequestFlags_OFPMPF_REQ_INVALID = OfpMultipartRequestFlags(openflow_13.OfpMultipartRequestFlags_OFPMPF_REQ_INVALID)
+const OfpMultipartRequestFlags_OFPMPF_REQ_MORE = OfpMultipartRequestFlags(openflow_13.OfpMultipartRequestFlags_OFPMPF_REQ_MORE)
+
+// OfpMultipartReplyFlags from public import voltha_protos/openflow_13.proto
+type OfpMultipartReplyFlags = openflow_13.OfpMultipartReplyFlags
+
+var OfpMultipartReplyFlags_name = openflow_13.OfpMultipartReplyFlags_name
+var OfpMultipartReplyFlags_value = openflow_13.OfpMultipartReplyFlags_value
+
+const OfpMultipartReplyFlags_OFPMPF_REPLY_INVALID = OfpMultipartReplyFlags(openflow_13.OfpMultipartReplyFlags_OFPMPF_REPLY_INVALID)
+const OfpMultipartReplyFlags_OFPMPF_REPLY_MORE = OfpMultipartReplyFlags(openflow_13.OfpMultipartReplyFlags_OFPMPF_REPLY_MORE)
+
+// OfpTableFeaturePropType from public import voltha_protos/openflow_13.proto
+type OfpTableFeaturePropType = openflow_13.OfpTableFeaturePropType
+
+var OfpTableFeaturePropType_name = openflow_13.OfpTableFeaturePropType_name
+var OfpTableFeaturePropType_value = openflow_13.OfpTableFeaturePropType_value
+
+const OfpTableFeaturePropType_OFPTFPT_INSTRUCTIONS = OfpTableFeaturePropType(openflow_13.OfpTableFeaturePropType_OFPTFPT_INSTRUCTIONS)
+const OfpTableFeaturePropType_OFPTFPT_INSTRUCTIONS_MISS = OfpTableFeaturePropType(openflow_13.OfpTableFeaturePropType_OFPTFPT_INSTRUCTIONS_MISS)
+const OfpTableFeaturePropType_OFPTFPT_NEXT_TABLES = OfpTableFeaturePropType(openflow_13.OfpTableFeaturePropType_OFPTFPT_NEXT_TABLES)
+const OfpTableFeaturePropType_OFPTFPT_NEXT_TABLES_MISS = OfpTableFeaturePropType(openflow_13.OfpTableFeaturePropType_OFPTFPT_NEXT_TABLES_MISS)
+const OfpTableFeaturePropType_OFPTFPT_WRITE_ACTIONS = OfpTableFeaturePropType(openflow_13.OfpTableFeaturePropType_OFPTFPT_WRITE_ACTIONS)
+const OfpTableFeaturePropType_OFPTFPT_WRITE_ACTIONS_MISS = OfpTableFeaturePropType(openflow_13.OfpTableFeaturePropType_OFPTFPT_WRITE_ACTIONS_MISS)
+const OfpTableFeaturePropType_OFPTFPT_APPLY_ACTIONS = OfpTableFeaturePropType(openflow_13.OfpTableFeaturePropType_OFPTFPT_APPLY_ACTIONS)
+const OfpTableFeaturePropType_OFPTFPT_APPLY_ACTIONS_MISS = OfpTableFeaturePropType(openflow_13.OfpTableFeaturePropType_OFPTFPT_APPLY_ACTIONS_MISS)
+const OfpTableFeaturePropType_OFPTFPT_MATCH = OfpTableFeaturePropType(openflow_13.OfpTableFeaturePropType_OFPTFPT_MATCH)
+const OfpTableFeaturePropType_OFPTFPT_WILDCARDS = OfpTableFeaturePropType(openflow_13.OfpTableFeaturePropType_OFPTFPT_WILDCARDS)
+const OfpTableFeaturePropType_OFPTFPT_WRITE_SETFIELD = OfpTableFeaturePropType(openflow_13.OfpTableFeaturePropType_OFPTFPT_WRITE_SETFIELD)
+const OfpTableFeaturePropType_OFPTFPT_WRITE_SETFIELD_MISS = OfpTableFeaturePropType(openflow_13.OfpTableFeaturePropType_OFPTFPT_WRITE_SETFIELD_MISS)
+const OfpTableFeaturePropType_OFPTFPT_APPLY_SETFIELD = OfpTableFeaturePropType(openflow_13.OfpTableFeaturePropType_OFPTFPT_APPLY_SETFIELD)
+const OfpTableFeaturePropType_OFPTFPT_APPLY_SETFIELD_MISS = OfpTableFeaturePropType(openflow_13.OfpTableFeaturePropType_OFPTFPT_APPLY_SETFIELD_MISS)
+const OfpTableFeaturePropType_OFPTFPT_EXPERIMENTER = OfpTableFeaturePropType(openflow_13.OfpTableFeaturePropType_OFPTFPT_EXPERIMENTER)
+const OfpTableFeaturePropType_OFPTFPT_EXPERIMENTER_MISS = OfpTableFeaturePropType(openflow_13.OfpTableFeaturePropType_OFPTFPT_EXPERIMENTER_MISS)
+
+// OfpGroupCapabilities from public import voltha_protos/openflow_13.proto
+type OfpGroupCapabilities = openflow_13.OfpGroupCapabilities
+
+var OfpGroupCapabilities_name = openflow_13.OfpGroupCapabilities_name
+var OfpGroupCapabilities_value = openflow_13.OfpGroupCapabilities_value
+
+const OfpGroupCapabilities_OFPGFC_INVALID = OfpGroupCapabilities(openflow_13.OfpGroupCapabilities_OFPGFC_INVALID)
+const OfpGroupCapabilities_OFPGFC_SELECT_WEIGHT = OfpGroupCapabilities(openflow_13.OfpGroupCapabilities_OFPGFC_SELECT_WEIGHT)
+const OfpGroupCapabilities_OFPGFC_SELECT_LIVENESS = OfpGroupCapabilities(openflow_13.OfpGroupCapabilities_OFPGFC_SELECT_LIVENESS)
+const OfpGroupCapabilities_OFPGFC_CHAINING = OfpGroupCapabilities(openflow_13.OfpGroupCapabilities_OFPGFC_CHAINING)
+const OfpGroupCapabilities_OFPGFC_CHAINING_CHECKS = OfpGroupCapabilities(openflow_13.OfpGroupCapabilities_OFPGFC_CHAINING_CHECKS)
+
+// OfpQueueProperties from public import voltha_protos/openflow_13.proto
+type OfpQueueProperties = openflow_13.OfpQueueProperties
+
+var OfpQueueProperties_name = openflow_13.OfpQueueProperties_name
+var OfpQueueProperties_value = openflow_13.OfpQueueProperties_value
+
+const OfpQueueProperties_OFPQT_INVALID = OfpQueueProperties(openflow_13.OfpQueueProperties_OFPQT_INVALID)
+const OfpQueueProperties_OFPQT_MIN_RATE = OfpQueueProperties(openflow_13.OfpQueueProperties_OFPQT_MIN_RATE)
+const OfpQueueProperties_OFPQT_MAX_RATE = OfpQueueProperties(openflow_13.OfpQueueProperties_OFPQT_MAX_RATE)
+const OfpQueueProperties_OFPQT_EXPERIMENTER = OfpQueueProperties(openflow_13.OfpQueueProperties_OFPQT_EXPERIMENTER)
+
+// OfpControllerRole from public import voltha_protos/openflow_13.proto
+type OfpControllerRole = openflow_13.OfpControllerRole
+
+var OfpControllerRole_name = openflow_13.OfpControllerRole_name
+var OfpControllerRole_value = openflow_13.OfpControllerRole_value
+
+const OfpControllerRole_OFPCR_ROLE_NOCHANGE = OfpControllerRole(openflow_13.OfpControllerRole_OFPCR_ROLE_NOCHANGE)
+const OfpControllerRole_OFPCR_ROLE_EQUAL = OfpControllerRole(openflow_13.OfpControllerRole_OFPCR_ROLE_EQUAL)
+const OfpControllerRole_OFPCR_ROLE_MASTER = OfpControllerRole(openflow_13.OfpControllerRole_OFPCR_ROLE_MASTER)
+const OfpControllerRole_OFPCR_ROLE_SLAVE = OfpControllerRole(openflow_13.OfpControllerRole_OFPCR_ROLE_SLAVE)
+
+type EventFilterRuleKey_EventFilterRuleType int32
+
+const (
+ EventFilterRuleKey_filter_all EventFilterRuleKey_EventFilterRuleType = 0
+ EventFilterRuleKey_category EventFilterRuleKey_EventFilterRuleType = 1
+ EventFilterRuleKey_sub_category EventFilterRuleKey_EventFilterRuleType = 2
+ EventFilterRuleKey_kpi_event_type EventFilterRuleKey_EventFilterRuleType = 3
+ EventFilterRuleKey_config_event_type EventFilterRuleKey_EventFilterRuleType = 4
+ EventFilterRuleKey_device_event_type EventFilterRuleKey_EventFilterRuleType = 5
+)
+
+var EventFilterRuleKey_EventFilterRuleType_name = map[int32]string{
+ 0: "filter_all",
+ 1: "category",
+ 2: "sub_category",
+ 3: "kpi_event_type",
+ 4: "config_event_type",
+ 5: "device_event_type",
+}
+
+var EventFilterRuleKey_EventFilterRuleType_value = map[string]int32{
+ "filter_all": 0,
+ "category": 1,
+ "sub_category": 2,
+ "kpi_event_type": 3,
+ "config_event_type": 4,
+ "device_event_type": 5,
+}
+
+func (x EventFilterRuleKey_EventFilterRuleType) String() string {
+ return proto.EnumName(EventFilterRuleKey_EventFilterRuleType_name, int32(x))
+}
+
+func (EventFilterRuleKey_EventFilterRuleType) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_e084f1a60ce7016c, []int{2, 0}
+}
+
+type SelfTestResponse_SelfTestResult int32
+
+const (
+ SelfTestResponse_SUCCESS SelfTestResponse_SelfTestResult = 0
+ SelfTestResponse_FAILURE SelfTestResponse_SelfTestResult = 1
+ SelfTestResponse_NOT_SUPPORTED SelfTestResponse_SelfTestResult = 2
+ SelfTestResponse_UNKNOWN_ERROR SelfTestResponse_SelfTestResult = 3
+)
+
+var SelfTestResponse_SelfTestResult_name = map[int32]string{
+ 0: "SUCCESS",
+ 1: "FAILURE",
+ 2: "NOT_SUPPORTED",
+ 3: "UNKNOWN_ERROR",
+}
+
+var SelfTestResponse_SelfTestResult_value = map[string]int32{
+ "SUCCESS": 0,
+ "FAILURE": 1,
+ "NOT_SUPPORTED": 2,
+ "UNKNOWN_ERROR": 3,
+}
+
+func (x SelfTestResponse_SelfTestResult) String() string {
+ return proto.EnumName(SelfTestResponse_SelfTestResult_name, int32(x))
+}
+
+func (SelfTestResponse_SelfTestResult) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_e084f1a60ce7016c, []int{9, 0}
+}
+
+type DeviceGroup struct {
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ LogicalDevices []*LogicalDevice `protobuf:"bytes,2,rep,name=logical_devices,json=logicalDevices,proto3" json:"logical_devices,omitempty"`
+ Devices []*Device `protobuf:"bytes,3,rep,name=devices,proto3" json:"devices,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *DeviceGroup) Reset() { *m = DeviceGroup{} }
+func (m *DeviceGroup) String() string { return proto.CompactTextString(m) }
+func (*DeviceGroup) ProtoMessage() {}
+func (*DeviceGroup) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e084f1a60ce7016c, []int{0}
+}
+
+func (m *DeviceGroup) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_DeviceGroup.Unmarshal(m, b)
+}
+func (m *DeviceGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_DeviceGroup.Marshal(b, m, deterministic)
+}
+func (m *DeviceGroup) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_DeviceGroup.Merge(m, src)
+}
+func (m *DeviceGroup) XXX_Size() int {
+ return xxx_messageInfo_DeviceGroup.Size(m)
+}
+func (m *DeviceGroup) XXX_DiscardUnknown() {
+ xxx_messageInfo_DeviceGroup.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeviceGroup proto.InternalMessageInfo
+
+func (m *DeviceGroup) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *DeviceGroup) GetLogicalDevices() []*LogicalDevice {
+ if m != nil {
+ return m.LogicalDevices
+ }
+ return nil
+}
+
+func (m *DeviceGroup) GetDevices() []*Device {
+ if m != nil {
+ return m.Devices
+ }
+ return nil
+}
+
+type DeviceGroups struct {
+ Items []*DeviceGroup `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *DeviceGroups) Reset() { *m = DeviceGroups{} }
+func (m *DeviceGroups) String() string { return proto.CompactTextString(m) }
+func (*DeviceGroups) ProtoMessage() {}
+func (*DeviceGroups) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e084f1a60ce7016c, []int{1}
+}
+
+func (m *DeviceGroups) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_DeviceGroups.Unmarshal(m, b)
+}
+func (m *DeviceGroups) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_DeviceGroups.Marshal(b, m, deterministic)
+}
+func (m *DeviceGroups) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_DeviceGroups.Merge(m, src)
+}
+func (m *DeviceGroups) XXX_Size() int {
+ return xxx_messageInfo_DeviceGroups.Size(m)
+}
+func (m *DeviceGroups) XXX_DiscardUnknown() {
+ xxx_messageInfo_DeviceGroups.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeviceGroups proto.InternalMessageInfo
+
+func (m *DeviceGroups) GetItems() []*DeviceGroup {
+ if m != nil {
+ return m.Items
+ }
+ return nil
+}
+
+type EventFilterRuleKey struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *EventFilterRuleKey) Reset() { *m = EventFilterRuleKey{} }
+func (m *EventFilterRuleKey) String() string { return proto.CompactTextString(m) }
+func (*EventFilterRuleKey) ProtoMessage() {}
+func (*EventFilterRuleKey) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e084f1a60ce7016c, []int{2}
+}
+
+func (m *EventFilterRuleKey) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_EventFilterRuleKey.Unmarshal(m, b)
+}
+func (m *EventFilterRuleKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_EventFilterRuleKey.Marshal(b, m, deterministic)
+}
+func (m *EventFilterRuleKey) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_EventFilterRuleKey.Merge(m, src)
+}
+func (m *EventFilterRuleKey) XXX_Size() int {
+ return xxx_messageInfo_EventFilterRuleKey.Size(m)
+}
+func (m *EventFilterRuleKey) XXX_DiscardUnknown() {
+ xxx_messageInfo_EventFilterRuleKey.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_EventFilterRuleKey proto.InternalMessageInfo
+
+type EventFilterRule struct {
+ Key EventFilterRuleKey_EventFilterRuleType `protobuf:"varint,1,opt,name=key,proto3,enum=voltha.EventFilterRuleKey_EventFilterRuleType" json:"key,omitempty"`
+ Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *EventFilterRule) Reset() { *m = EventFilterRule{} }
+func (m *EventFilterRule) String() string { return proto.CompactTextString(m) }
+func (*EventFilterRule) ProtoMessage() {}
+func (*EventFilterRule) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e084f1a60ce7016c, []int{3}
+}
+
+func (m *EventFilterRule) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_EventFilterRule.Unmarshal(m, b)
+}
+func (m *EventFilterRule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_EventFilterRule.Marshal(b, m, deterministic)
+}
+func (m *EventFilterRule) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_EventFilterRule.Merge(m, src)
+}
+func (m *EventFilterRule) XXX_Size() int {
+ return xxx_messageInfo_EventFilterRule.Size(m)
+}
+func (m *EventFilterRule) XXX_DiscardUnknown() {
+ xxx_messageInfo_EventFilterRule.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_EventFilterRule proto.InternalMessageInfo
+
+func (m *EventFilterRule) GetKey() EventFilterRuleKey_EventFilterRuleType {
+ if m != nil {
+ return m.Key
+ }
+ return EventFilterRuleKey_filter_all
+}
+
+func (m *EventFilterRule) GetValue() string {
+ if m != nil {
+ return m.Value
+ }
+ return ""
+}
+
+type EventFilter struct {
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Enable bool `protobuf:"varint,2,opt,name=enable,proto3" json:"enable,omitempty"`
+ DeviceId string `protobuf:"bytes,3,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+ EventType string `protobuf:"bytes,4,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"`
+ Rules []*EventFilterRule `protobuf:"bytes,5,rep,name=rules,proto3" json:"rules,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *EventFilter) Reset() { *m = EventFilter{} }
+func (m *EventFilter) String() string { return proto.CompactTextString(m) }
+func (*EventFilter) ProtoMessage() {}
+func (*EventFilter) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e084f1a60ce7016c, []int{4}
+}
+
+func (m *EventFilter) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_EventFilter.Unmarshal(m, b)
+}
+func (m *EventFilter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_EventFilter.Marshal(b, m, deterministic)
+}
+func (m *EventFilter) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_EventFilter.Merge(m, src)
+}
+func (m *EventFilter) XXX_Size() int {
+ return xxx_messageInfo_EventFilter.Size(m)
+}
+func (m *EventFilter) XXX_DiscardUnknown() {
+ xxx_messageInfo_EventFilter.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_EventFilter proto.InternalMessageInfo
+
+func (m *EventFilter) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *EventFilter) GetEnable() bool {
+ if m != nil {
+ return m.Enable
+ }
+ return false
+}
+
+func (m *EventFilter) GetDeviceId() string {
+ if m != nil {
+ return m.DeviceId
+ }
+ return ""
+}
+
+func (m *EventFilter) GetEventType() string {
+ if m != nil {
+ return m.EventType
+ }
+ return ""
+}
+
+func (m *EventFilter) GetRules() []*EventFilterRule {
+ if m != nil {
+ return m.Rules
+ }
+ return nil
+}
+
+type EventFilters struct {
+ Filters []*EventFilter `protobuf:"bytes,1,rep,name=filters,proto3" json:"filters,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *EventFilters) Reset() { *m = EventFilters{} }
+func (m *EventFilters) String() string { return proto.CompactTextString(m) }
+func (*EventFilters) ProtoMessage() {}
+func (*EventFilters) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e084f1a60ce7016c, []int{5}
+}
+
+func (m *EventFilters) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_EventFilters.Unmarshal(m, b)
+}
+func (m *EventFilters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_EventFilters.Marshal(b, m, deterministic)
+}
+func (m *EventFilters) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_EventFilters.Merge(m, src)
+}
+func (m *EventFilters) XXX_Size() int {
+ return xxx_messageInfo_EventFilters.Size(m)
+}
+func (m *EventFilters) XXX_DiscardUnknown() {
+ xxx_messageInfo_EventFilters.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_EventFilters proto.InternalMessageInfo
+
+func (m *EventFilters) GetFilters() []*EventFilter {
+ if m != nil {
+ return m.Filters
+ }
+ return nil
+}
+
+// CoreInstance represents a core instance. It is data held in memory when a core
+// is running. This data is not persistent.
+type CoreInstance struct {
+ InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
+ Health *HealthStatus `protobuf:"bytes,2,opt,name=health,proto3" json:"health,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *CoreInstance) Reset() { *m = CoreInstance{} }
+func (m *CoreInstance) String() string { return proto.CompactTextString(m) }
+func (*CoreInstance) ProtoMessage() {}
+func (*CoreInstance) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e084f1a60ce7016c, []int{6}
+}
+
+func (m *CoreInstance) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_CoreInstance.Unmarshal(m, b)
+}
+func (m *CoreInstance) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_CoreInstance.Marshal(b, m, deterministic)
+}
+func (m *CoreInstance) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_CoreInstance.Merge(m, src)
+}
+func (m *CoreInstance) XXX_Size() int {
+ return xxx_messageInfo_CoreInstance.Size(m)
+}
+func (m *CoreInstance) XXX_DiscardUnknown() {
+ xxx_messageInfo_CoreInstance.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CoreInstance proto.InternalMessageInfo
+
+func (m *CoreInstance) GetInstanceId() string {
+ if m != nil {
+ return m.InstanceId
+ }
+ return ""
+}
+
+func (m *CoreInstance) GetHealth() *HealthStatus {
+ if m != nil {
+ return m.Health
+ }
+ return nil
+}
+
+type CoreInstances struct {
+ Items []*CoreInstance `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *CoreInstances) Reset() { *m = CoreInstances{} }
+func (m *CoreInstances) String() string { return proto.CompactTextString(m) }
+func (*CoreInstances) ProtoMessage() {}
+func (*CoreInstances) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e084f1a60ce7016c, []int{7}
+}
+
+func (m *CoreInstances) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_CoreInstances.Unmarshal(m, b)
+}
+func (m *CoreInstances) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_CoreInstances.Marshal(b, m, deterministic)
+}
+func (m *CoreInstances) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_CoreInstances.Merge(m, src)
+}
+func (m *CoreInstances) XXX_Size() int {
+ return xxx_messageInfo_CoreInstances.Size(m)
+}
+func (m *CoreInstances) XXX_DiscardUnknown() {
+ xxx_messageInfo_CoreInstances.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CoreInstances proto.InternalMessageInfo
+
+func (m *CoreInstances) GetItems() []*CoreInstance {
+ if m != nil {
+ return m.Items
+ }
+ return nil
+}
+
+// Voltha represents the Voltha cluster data. Each Core instance will hold a subset of
+// the entire cluster. However, some items (e.g. adapters) will be held by all cores
+// for better performance
+type Voltha struct {
+ Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
+ Adapters []*Adapter `protobuf:"bytes,2,rep,name=adapters,proto3" json:"adapters,omitempty"`
+ LogicalDevices []*LogicalDevice `protobuf:"bytes,3,rep,name=logical_devices,json=logicalDevices,proto3" json:"logical_devices,omitempty"`
+ Devices []*Device `protobuf:"bytes,4,rep,name=devices,proto3" json:"devices,omitempty"`
+ DeviceTypes []*DeviceType `protobuf:"bytes,5,rep,name=device_types,json=deviceTypes,proto3" json:"device_types,omitempty"`
+ DeviceGroups []*DeviceGroup `protobuf:"bytes,6,rep,name=device_groups,json=deviceGroups,proto3" json:"device_groups,omitempty"`
+ EventFilters []*EventFilter `protobuf:"bytes,7,rep,name=event_filters,json=eventFilters,proto3" json:"event_filters,omitempty"`
+ OmciMibDatabase []*omci.MibDeviceData `protobuf:"bytes,28,rep,name=omci_mib_database,json=omciMibDatabase,proto3" json:"omci_mib_database,omitempty"`
+ OmciAlarmDatabase []*omci.AlarmDeviceData `protobuf:"bytes,29,rep,name=omci_alarm_database,json=omciAlarmDatabase,proto3" json:"omci_alarm_database,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Voltha) Reset() { *m = Voltha{} }
+func (m *Voltha) String() string { return proto.CompactTextString(m) }
+func (*Voltha) ProtoMessage() {}
+func (*Voltha) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e084f1a60ce7016c, []int{8}
+}
+
+func (m *Voltha) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Voltha.Unmarshal(m, b)
+}
+func (m *Voltha) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Voltha.Marshal(b, m, deterministic)
+}
+func (m *Voltha) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Voltha.Merge(m, src)
+}
+func (m *Voltha) XXX_Size() int {
+ return xxx_messageInfo_Voltha.Size(m)
+}
+func (m *Voltha) XXX_DiscardUnknown() {
+ xxx_messageInfo_Voltha.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Voltha proto.InternalMessageInfo
+
+func (m *Voltha) GetVersion() string {
+ if m != nil {
+ return m.Version
+ }
+ return ""
+}
+
+func (m *Voltha) GetAdapters() []*Adapter {
+ if m != nil {
+ return m.Adapters
+ }
+ return nil
+}
+
+func (m *Voltha) GetLogicalDevices() []*LogicalDevice {
+ if m != nil {
+ return m.LogicalDevices
+ }
+ return nil
+}
+
+func (m *Voltha) GetDevices() []*Device {
+ if m != nil {
+ return m.Devices
+ }
+ return nil
+}
+
+func (m *Voltha) GetDeviceTypes() []*DeviceType {
+ if m != nil {
+ return m.DeviceTypes
+ }
+ return nil
+}
+
+func (m *Voltha) GetDeviceGroups() []*DeviceGroup {
+ if m != nil {
+ return m.DeviceGroups
+ }
+ return nil
+}
+
+func (m *Voltha) GetEventFilters() []*EventFilter {
+ if m != nil {
+ return m.EventFilters
+ }
+ return nil
+}
+
+func (m *Voltha) GetOmciMibDatabase() []*omci.MibDeviceData {
+ if m != nil {
+ return m.OmciMibDatabase
+ }
+ return nil
+}
+
+func (m *Voltha) GetOmciAlarmDatabase() []*omci.AlarmDeviceData {
+ if m != nil {
+ return m.OmciAlarmDatabase
+ }
+ return nil
+}
+
+// Device Self Test Response
+type SelfTestResponse struct {
+ Result SelfTestResponse_SelfTestResult `protobuf:"varint,1,opt,name=result,proto3,enum=voltha.SelfTestResponse_SelfTestResult" json:"result,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *SelfTestResponse) Reset() { *m = SelfTestResponse{} }
+func (m *SelfTestResponse) String() string { return proto.CompactTextString(m) }
+func (*SelfTestResponse) ProtoMessage() {}
+func (*SelfTestResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e084f1a60ce7016c, []int{9}
+}
+
+func (m *SelfTestResponse) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_SelfTestResponse.Unmarshal(m, b)
+}
+func (m *SelfTestResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_SelfTestResponse.Marshal(b, m, deterministic)
+}
+func (m *SelfTestResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_SelfTestResponse.Merge(m, src)
+}
+func (m *SelfTestResponse) XXX_Size() int {
+ return xxx_messageInfo_SelfTestResponse.Size(m)
+}
+func (m *SelfTestResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_SelfTestResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SelfTestResponse proto.InternalMessageInfo
+
+func (m *SelfTestResponse) GetResult() SelfTestResponse_SelfTestResult {
+ if m != nil {
+ return m.Result
+ }
+ return SelfTestResponse_SUCCESS
+}
+
+type OfAgentSubscriber struct {
+ // ID of ofagent instance
+ OfagentId string `protobuf:"bytes,1,opt,name=ofagent_id,json=ofagentId,proto3" json:"ofagent_id,omitempty"`
+ // ID of voltha instance to which the ofagent is subscribed
+ VolthaId string `protobuf:"bytes,2,opt,name=voltha_id,json=volthaId,proto3" json:"voltha_id,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OfAgentSubscriber) Reset() { *m = OfAgentSubscriber{} }
+func (m *OfAgentSubscriber) String() string { return proto.CompactTextString(m) }
+func (*OfAgentSubscriber) ProtoMessage() {}
+func (*OfAgentSubscriber) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e084f1a60ce7016c, []int{10}
+}
+
+func (m *OfAgentSubscriber) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OfAgentSubscriber.Unmarshal(m, b)
+}
+func (m *OfAgentSubscriber) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OfAgentSubscriber.Marshal(b, m, deterministic)
+}
+func (m *OfAgentSubscriber) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OfAgentSubscriber.Merge(m, src)
+}
+func (m *OfAgentSubscriber) XXX_Size() int {
+ return xxx_messageInfo_OfAgentSubscriber.Size(m)
+}
+func (m *OfAgentSubscriber) XXX_DiscardUnknown() {
+ xxx_messageInfo_OfAgentSubscriber.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OfAgentSubscriber proto.InternalMessageInfo
+
+func (m *OfAgentSubscriber) GetOfagentId() string {
+ if m != nil {
+ return m.OfagentId
+ }
+ return ""
+}
+
+func (m *OfAgentSubscriber) GetVolthaId() string {
+ if m != nil {
+ return m.VolthaId
+ }
+ return ""
+}
+
+// Identifies a membership group a Core belongs to
+type Membership struct {
+ // Group name
+ GroupName string `protobuf:"bytes,1,opt,name=group_name,json=groupName,proto3" json:"group_name,omitempty"`
+ // Unique ID of a container within that group
+ Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Membership) Reset() { *m = Membership{} }
+func (m *Membership) String() string { return proto.CompactTextString(m) }
+func (*Membership) ProtoMessage() {}
+func (*Membership) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e084f1a60ce7016c, []int{11}
+}
+
+func (m *Membership) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Membership.Unmarshal(m, b)
+}
+func (m *Membership) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Membership.Marshal(b, m, deterministic)
+}
+func (m *Membership) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Membership.Merge(m, src)
+}
+func (m *Membership) XXX_Size() int {
+ return xxx_messageInfo_Membership.Size(m)
+}
+func (m *Membership) XXX_DiscardUnknown() {
+ xxx_messageInfo_Membership.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Membership proto.InternalMessageInfo
+
+func (m *Membership) GetGroupName() string {
+ if m != nil {
+ return m.GroupName
+ }
+ return ""
+}
+
+func (m *Membership) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+// Additional information required to process flow at device adapters
+type FlowMetadata struct {
+ // Meters associated with flow-update to adapter
+ Meters []*openflow_13.OfpMeterConfig `protobuf:"bytes,1,rep,name=meters,proto3" json:"meters,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *FlowMetadata) Reset() { *m = FlowMetadata{} }
+func (m *FlowMetadata) String() string { return proto.CompactTextString(m) }
+func (*FlowMetadata) ProtoMessage() {}
+func (*FlowMetadata) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e084f1a60ce7016c, []int{12}
+}
+
+func (m *FlowMetadata) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_FlowMetadata.Unmarshal(m, b)
+}
+func (m *FlowMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_FlowMetadata.Marshal(b, m, deterministic)
+}
+func (m *FlowMetadata) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_FlowMetadata.Merge(m, src)
+}
+func (m *FlowMetadata) XXX_Size() int {
+ return xxx_messageInfo_FlowMetadata.Size(m)
+}
+func (m *FlowMetadata) XXX_DiscardUnknown() {
+ xxx_messageInfo_FlowMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FlowMetadata proto.InternalMessageInfo
+
+func (m *FlowMetadata) GetMeters() []*openflow_13.OfpMeterConfig {
+ if m != nil {
+ return m.Meters
+ }
+ return nil
+}
+
+func init() {
+ proto.RegisterEnum("voltha.EventFilterRuleKey_EventFilterRuleType", EventFilterRuleKey_EventFilterRuleType_name, EventFilterRuleKey_EventFilterRuleType_value)
+ proto.RegisterEnum("voltha.SelfTestResponse_SelfTestResult", SelfTestResponse_SelfTestResult_name, SelfTestResponse_SelfTestResult_value)
+ proto.RegisterType((*DeviceGroup)(nil), "voltha.DeviceGroup")
+ proto.RegisterType((*DeviceGroups)(nil), "voltha.DeviceGroups")
+ proto.RegisterType((*EventFilterRuleKey)(nil), "voltha.EventFilterRuleKey")
+ proto.RegisterType((*EventFilterRule)(nil), "voltha.EventFilterRule")
+ proto.RegisterType((*EventFilter)(nil), "voltha.EventFilter")
+ proto.RegisterType((*EventFilters)(nil), "voltha.EventFilters")
+ proto.RegisterType((*CoreInstance)(nil), "voltha.CoreInstance")
+ proto.RegisterType((*CoreInstances)(nil), "voltha.CoreInstances")
+ proto.RegisterType((*Voltha)(nil), "voltha.Voltha")
+ proto.RegisterType((*SelfTestResponse)(nil), "voltha.SelfTestResponse")
+ proto.RegisterType((*OfAgentSubscriber)(nil), "voltha.OfAgentSubscriber")
+ proto.RegisterType((*Membership)(nil), "voltha.Membership")
+ proto.RegisterType((*FlowMetadata)(nil), "voltha.FlowMetadata")
+}
+
+func init() { proto.RegisterFile("voltha_protos/voltha.proto", fileDescriptor_e084f1a60ce7016c) }
+
+var fileDescriptor_e084f1a60ce7016c = []byte{
+ // 2467 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x9a, 0xcd, 0x73, 0xdb, 0xc6,
+ 0x15, 0xc0, 0x05, 0x7d, 0xeb, 0x89, 0x92, 0xc8, 0xa5, 0x3e, 0x68, 0x4a, 0x8a, 0xed, 0x8d, 0x63,
+ 0xab, 0x4a, 0x4c, 0xda, 0x96, 0xe3, 0x69, 0xed, 0x66, 0x1a, 0x89, 0x92, 0x55, 0xd6, 0x92, 0xc9,
+ 0x42, 0x96, 0xdd, 0x8f, 0x78, 0x38, 0x20, 0xb1, 0xa4, 0x30, 0x06, 0x01, 0x16, 0xbb, 0xa4, 0xa3,
+ 0xf1, 0xe4, 0x92, 0x7e, 0xa4, 0xf7, 0xdc, 0x7b, 0x6a, 0xa7, 0x33, 0xfd, 0x5f, 0x72, 0xea, 0xa9,
+ 0xd7, 0x4e, 0x0f, 0xfd, 0x0b, 0x32, 0xd3, 0x5b, 0x67, 0x3f, 0x40, 0x02, 0x04, 0x20, 0x89, 0x69,
+ 0x66, 0x7a, 0xb2, 0xb1, 0x6f, 0xf7, 0xf7, 0xde, 0xbe, 0xdd, 0x7d, 0xfb, 0xf6, 0x51, 0x90, 0xef,
+ 0xb9, 0x36, 0x3b, 0x33, 0x6a, 0x1d, 0xcf, 0x65, 0x2e, 0x2d, 0xca, 0xaf, 0x82, 0xf8, 0x42, 0xd3,
+ 0xf2, 0x2b, 0xbf, 0xd1, 0x72, 0xdd, 0x96, 0x4d, 0x8a, 0x46, 0xc7, 0x2a, 0x1a, 0x8e, 0xe3, 0x32,
+ 0x83, 0x59, 0xae, 0x43, 0x65, 0xaf, 0xfc, 0xba, 0x92, 0x8a, 0xaf, 0x7a, 0xb7, 0x59, 0x24, 0xed,
+ 0x0e, 0x3b, 0x57, 0xc2, 0x5c, 0x18, 0xdf, 0x26, 0x4c, 0xc1, 0xf3, 0x43, 0x8a, 0x1b, 0x6e, 0xbb,
+ 0xed, 0x3a, 0xf1, 0xb2, 0x33, 0x62, 0xd8, 0xec, 0x4c, 0xc9, 0x70, 0x58, 0x66, 0xbb, 0x2d, 0xab,
+ 0x61, 0xd8, 0x35, 0x93, 0xf4, 0xac, 0x06, 0x89, 0x1f, 0x1f, 0x92, 0xad, 0x87, 0x65, 0x86, 0x69,
+ 0x74, 0x18, 0xf1, 0x94, 0xf0, 0x7a, 0x58, 0xe8, 0x76, 0x88, 0xd3, 0xb4, 0xdd, 0xb7, 0xb5, 0xfb,
+ 0x3b, 0x09, 0x1d, 0xda, 0x0d, 0xab, 0xd6, 0xb6, 0xea, 0x35, 0xb3, 0xae, 0x3a, 0xdc, 0x8c, 0xe9,
+ 0x60, 0xd8, 0x86, 0xd7, 0xee, 0x77, 0xc1, 0x7f, 0xd6, 0x60, 0x7e, 0x5f, 0x98, 0x74, 0xe8, 0xb9,
+ 0xdd, 0x0e, 0x5a, 0x81, 0x71, 0xcb, 0xcc, 0x69, 0x37, 0xb4, 0xad, 0xb9, 0xbd, 0xa9, 0x7f, 0x7f,
+ 0xfb, 0xcd, 0xa6, 0xa6, 0x8f, 0x5b, 0x26, 0x2a, 0xc3, 0x52, 0x78, 0x72, 0x34, 0x37, 0x7e, 0x63,
+ 0x62, 0x6b, 0xfe, 0xc1, 0x4a, 0x41, 0xad, 0xd2, 0x91, 0x14, 0x4b, 0xd6, 0xde, 0xdc, 0x3f, 0xbf,
+ 0xfd, 0x66, 0x73, 0x92, 0xb3, 0xf4, 0x45, 0x3b, 0x28, 0xa1, 0x68, 0x07, 0x66, 0x7c, 0xc4, 0x84,
+ 0x40, 0x2c, 0xfa, 0x88, 0xe8, 0x58, 0xbf, 0x27, 0xfe, 0x11, 0xa4, 0x02, 0x56, 0x52, 0xf4, 0x03,
+ 0x98, 0xb2, 0x18, 0x69, 0xd3, 0x9c, 0x26, 0x10, 0xd9, 0x30, 0x42, 0x74, 0xd2, 0x65, 0x0f, 0xfc,
+ 0x27, 0x0d, 0xd0, 0x41, 0x8f, 0x38, 0xec, 0xa9, 0x65, 0x33, 0xe2, 0xe9, 0x5d, 0x9b, 0x3c, 0x23,
+ 0xe7, 0xf8, 0x2b, 0x0d, 0xb2, 0x43, 0xcd, 0x2f, 0xce, 0x3b, 0x04, 0x2d, 0x02, 0x34, 0x45, 0x4b,
+ 0xcd, 0xb0, 0xed, 0xf4, 0x18, 0x4a, 0xc1, 0x6c, 0xc3, 0x60, 0xa4, 0xe5, 0x7a, 0xe7, 0x69, 0x0d,
+ 0xa5, 0x21, 0x45, 0xbb, 0xf5, 0x5a, 0xbf, 0x65, 0x1c, 0x21, 0x58, 0x7c, 0xd3, 0xb1, 0x6a, 0x84,
+ 0xa3, 0x6a, 0xec, 0xbc, 0x43, 0xd2, 0x13, 0x68, 0x05, 0x32, 0x0d, 0xd7, 0x69, 0x5a, 0xad, 0x60,
+ 0xf3, 0x24, 0x6f, 0x96, 0xf3, 0x09, 0x36, 0x4f, 0x61, 0x0b, 0x96, 0x86, 0x0c, 0x41, 0x9f, 0xc2,
+ 0xc4, 0x1b, 0x72, 0x2e, 0x96, 0x61, 0xf1, 0x41, 0xc1, 0x9f, 0x5c, 0x74, 0x16, 0x85, 0x98, 0x19,
+ 0xe8, 0x7c, 0x28, 0x5a, 0x86, 0xa9, 0x9e, 0x61, 0x77, 0x49, 0x6e, 0x9c, 0x2f, 0xa5, 0x2e, 0x3f,
+ 0xf0, 0x5f, 0x35, 0x98, 0x0f, 0x0c, 0x49, 0x5a, 0xed, 0x55, 0x98, 0x26, 0x8e, 0x51, 0xb7, 0xe5,
+ 0xe8, 0x59, 0x5d, 0x7d, 0xa1, 0x75, 0x98, 0x53, 0x13, 0xb0, 0xcc, 0xdc, 0x84, 0x00, 0xcf, 0xca,
+ 0x86, 0xb2, 0x89, 0x36, 0x01, 0x06, 0xd3, 0xca, 0x4d, 0x0a, 0xe9, 0x9c, 0x68, 0x11, 0x7e, 0xbd,
+ 0x0b, 0x53, 0x5e, 0xd7, 0x26, 0x34, 0x37, 0x25, 0x56, 0x6c, 0x2d, 0x61, 0x52, 0xba, 0xec, 0x85,
+ 0x3f, 0x81, 0x54, 0x40, 0x42, 0xd1, 0x5d, 0x98, 0x91, 0xcb, 0x12, 0x59, 0xf2, 0x20, 0xc0, 0xef,
+ 0x83, 0xdf, 0x40, 0xaa, 0xe4, 0x7a, 0xa4, 0xec, 0x50, 0x66, 0x38, 0x0d, 0x82, 0x6e, 0xc3, 0xbc,
+ 0xa5, 0xfe, 0x5f, 0x1b, 0x9e, 0x31, 0xf8, 0x92, 0xb2, 0x89, 0x76, 0x60, 0x5a, 0x1e, 0x70, 0x31,
+ 0xf3, 0xf9, 0x07, 0xcb, 0xbe, 0x96, 0x9f, 0x8a, 0xd6, 0x13, 0x66, 0xb0, 0x2e, 0xdd, 0x9b, 0xe2,
+ 0x3b, 0x74, 0x4c, 0x57, 0x5d, 0xf1, 0x13, 0x58, 0x08, 0x2a, 0xa3, 0x68, 0x3b, 0xbc, 0x3b, 0xfb,
+ 0x90, 0x60, 0x2f, 0x7f, 0x7b, 0xfe, 0x63, 0x12, 0xa6, 0x5f, 0x0a, 0x31, 0xba, 0x0e, 0x33, 0x3d,
+ 0xe2, 0x51, 0xcb, 0x75, 0xc2, 0x06, 0xfa, 0xad, 0xe8, 0x11, 0xcc, 0xaa, 0x10, 0xe1, 0x1f, 0xbf,
+ 0x25, 0x1f, 0xbd, 0x2b, 0xdb, 0x83, 0x87, 0xa7, 0xdf, 0x37, 0xee, 0xf4, 0x4e, 0xfc, 0xef, 0xa7,
+ 0x77, 0xf2, 0xaa, 0xa7, 0x17, 0x7d, 0x0a, 0x29, 0xb5, 0x6f, 0xf8, 0xde, 0xf0, 0xb7, 0x00, 0x0a,
+ 0x8f, 0xe4, 0xbb, 0x24, 0x38, 0x7a, 0xde, 0xec, 0x37, 0x53, 0x54, 0x82, 0x05, 0x45, 0x68, 0x89,
+ 0x00, 0x90, 0x9b, 0x4e, 0x3c, 0xf7, 0x41, 0x86, 0x52, 0xab, 0x82, 0x46, 0x09, 0x16, 0xe4, 0x0e,
+ 0xf5, 0x77, 0xd2, 0x4c, 0xe2, 0x4e, 0x0a, 0x41, 0x48, 0x70, 0x23, 0xfe, 0x1c, 0x32, 0x83, 0x40,
+ 0x6b, 0x30, 0xa3, 0x6e, 0x50, 0x92, 0xdb, 0x50, 0x20, 0x2e, 0x29, 0x1c, 0x5b, 0x75, 0x69, 0xce,
+ 0xbe, 0xc1, 0x8c, 0xbd, 0x34, 0x07, 0xcd, 0x07, 0x0e, 0x8e, 0xbe, 0xc4, 0x7b, 0xf1, 0x4e, 0x6a,
+ 0x34, 0x7a, 0x05, 0xd9, 0x60, 0x68, 0xf6, 0xa1, 0x9b, 0x6a, 0x89, 0x04, 0x74, 0x97, 0xcb, 0x2e,
+ 0xc4, 0x0a, 0xb3, 0x64, 0x37, 0x45, 0xc0, 0x7f, 0xd1, 0x20, 0x7d, 0x42, 0xec, 0xe6, 0x0b, 0x42,
+ 0x99, 0x4e, 0x68, 0xc7, 0x75, 0x28, 0x41, 0x3f, 0x81, 0x69, 0x8f, 0xd0, 0xae, 0xcd, 0x54, 0x78,
+ 0xb9, 0xe3, 0x4f, 0x7f, 0xb8, 0x67, 0xb0, 0xa1, 0x6b, 0x33, 0x5d, 0x0d, 0xc3, 0x55, 0x58, 0x0c,
+ 0x4b, 0xd0, 0x3c, 0xcc, 0x9c, 0x9c, 0x96, 0x4a, 0x07, 0x27, 0x27, 0xe9, 0x31, 0xfe, 0xf1, 0x74,
+ 0xb7, 0x7c, 0x74, 0xaa, 0x1f, 0xa4, 0x35, 0x94, 0x81, 0x85, 0xe7, 0x95, 0x17, 0xb5, 0x93, 0xd3,
+ 0x6a, 0xb5, 0xa2, 0xbf, 0x38, 0xd8, 0x4f, 0x8f, 0xf3, 0xa6, 0xd3, 0xe7, 0xcf, 0x9e, 0x57, 0x5e,
+ 0x3d, 0xaf, 0x1d, 0xe8, 0x7a, 0x45, 0x4f, 0x4f, 0xe0, 0x0a, 0x64, 0x2a, 0xcd, 0xdd, 0x16, 0x71,
+ 0xd8, 0x49, 0xb7, 0x4e, 0x1b, 0x9e, 0x55, 0x27, 0x1e, 0x8f, 0x27, 0x6e, 0xd3, 0xe0, 0x8d, 0xfd,
+ 0x13, 0xab, 0xcf, 0xa9, 0x96, 0xb2, 0xc9, 0x63, 0x91, 0xba, 0xdd, 0x2c, 0x53, 0x05, 0xb9, 0x59,
+ 0xd9, 0x50, 0x36, 0xf1, 0x13, 0x80, 0x63, 0xd2, 0xae, 0x13, 0x8f, 0x9e, 0x59, 0x1d, 0x4e, 0x12,
+ 0xbb, 0xa6, 0xe6, 0x18, 0x6d, 0xe2, 0x93, 0x44, 0xcb, 0x73, 0xa3, 0xcd, 0x23, 0xfe, 0x78, 0x1f,
+ 0x31, 0x6e, 0x99, 0xf8, 0x00, 0x52, 0x4f, 0x6d, 0xf7, 0xed, 0x31, 0x61, 0x06, 0x5f, 0x0b, 0xf4,
+ 0x31, 0x4c, 0xb7, 0x49, 0x20, 0xf2, 0x6c, 0x16, 0x82, 0x57, 0xb1, 0xdb, 0xec, 0xd4, 0x84, 0xb8,
+ 0x26, 0x43, 0xbe, 0xae, 0x3a, 0x3f, 0xf8, 0x4f, 0x01, 0x16, 0xe4, 0xc1, 0x3e, 0x21, 0x1e, 0x5f,
+ 0x24, 0xa4, 0xc3, 0xe2, 0x69, 0xc7, 0x34, 0x18, 0x39, 0x72, 0x5b, 0x47, 0xa4, 0x47, 0x6c, 0xb4,
+ 0x54, 0x50, 0xa9, 0xc6, 0x91, 0xdb, 0x6a, 0x59, 0x4e, 0x2b, 0xbf, 0x5a, 0x90, 0x09, 0x4c, 0xc1,
+ 0x4f, 0x60, 0x0a, 0x07, 0x3c, 0x81, 0xc1, 0x6b, 0x5f, 0xfe, 0xfd, 0x5f, 0x5f, 0x8f, 0x67, 0x70,
+ 0x4a, 0xe4, 0x3d, 0xbd, 0xfb, 0x3c, 0xd5, 0xa0, 0x8f, 0xb5, 0x6d, 0x54, 0x85, 0xd4, 0x21, 0x61,
+ 0x3e, 0x90, 0xa2, 0xdc, 0x10, 0xb1, 0xe4, 0xb6, 0x3b, 0xae, 0x43, 0x1c, 0x96, 0x4f, 0x0f, 0x49,
+ 0x28, 0x5e, 0x16, 0xd0, 0x45, 0x14, 0x82, 0xa2, 0x57, 0xb0, 0x70, 0x48, 0x58, 0xc0, 0x7d, 0x09,
+ 0x36, 0xe5, 0xfb, 0xe7, 0x77, 0xd0, 0x17, 0xe7, 0x05, 0x72, 0x19, 0x21, 0x1f, 0xd9, 0x1e, 0x70,
+ 0x5e, 0x43, 0x5a, 0x4e, 0x3f, 0xc0, 0x8e, 0x61, 0x24, 0xfa, 0x60, 0x53, 0xb0, 0xd7, 0x70, 0x0c,
+ 0x9b, 0x7b, 0x62, 0x1f, 0xe6, 0x0e, 0x09, 0x53, 0xa1, 0x34, 0xc9, 0xe6, 0x7e, 0xb4, 0x92, 0xfd,
+ 0xf0, 0x92, 0x60, 0xce, 0xa1, 0x19, 0xc5, 0x44, 0xaf, 0x21, 0x73, 0x64, 0x51, 0x16, 0x8e, 0xe7,
+ 0x49, 0xb4, 0x95, 0xb8, 0xc0, 0x4e, 0xf1, 0x35, 0x01, 0xcd, 0xa2, 0x8c, 0x6f, 0xa8, 0xd5, 0x27,
+ 0x9d, 0xc0, 0xd2, 0x21, 0x09, 0xd1, 0x11, 0xf8, 0xeb, 0x52, 0xde, 0xcf, 0xc7, 0xde, 0x14, 0xf8,
+ 0x3d, 0xc1, 0xcb, 0xa1, 0xd5, 0x08, 0xaf, 0xf8, 0xce, 0x32, 0xbf, 0x40, 0x3a, 0xa4, 0xb8, 0xcd,
+ 0xbb, 0x7e, 0xb8, 0x4f, 0x32, 0x37, 0x3d, 0x74, 0x59, 0x50, 0x9c, 0x13, 0x64, 0x84, 0xd2, 0x3e,
+ 0xb9, 0x7f, 0x65, 0x10, 0x40, 0x9c, 0x79, 0x14, 0x8e, 0xfe, 0x49, 0xe4, 0xd5, 0xd8, 0x7b, 0x84,
+ 0xe2, 0xeb, 0x82, 0x7f, 0x0d, 0xad, 0x05, 0x76, 0x58, 0xf0, 0x1a, 0x42, 0xbf, 0x86, 0xb4, 0xdc,
+ 0xbe, 0x83, 0x51, 0x21, 0x87, 0xc4, 0x5f, 0x50, 0xf8, 0x96, 0xe0, 0xbe, 0x87, 0x36, 0x12, 0xb8,
+ 0xd2, 0x2f, 0x4d, 0x58, 0x8d, 0xcc, 0xa1, 0xea, 0x7a, 0x8c, 0xc6, 0xfb, 0x5c, 0xf5, 0x13, 0x3d,
+ 0xf0, 0xb6, 0xd0, 0x70, 0x0b, 0xe1, 0x8b, 0x34, 0x14, 0x3b, 0x82, 0xf6, 0x39, 0x2c, 0x0f, 0x4f,
+ 0x82, 0x43, 0xd0, 0x4a, 0x0c, 0xb9, 0x6c, 0xe6, 0xb3, 0x31, 0xcd, 0xf8, 0xa1, 0xd0, 0x57, 0x40,
+ 0x1f, 0x5d, 0xae, 0xaf, 0xf8, 0x8e, 0xff, 0x53, 0xe3, 0x33, 0xfc, 0xbd, 0x06, 0x6b, 0x07, 0x22,
+ 0x37, 0xbb, 0xb2, 0xf6, 0xa4, 0xd3, 0xf5, 0x44, 0x18, 0xf0, 0x31, 0xde, 0x19, 0xc5, 0x80, 0xa2,
+ 0x4a, 0x0c, 0xbf, 0xd2, 0x20, 0xb7, 0x6f, 0xd1, 0xef, 0xc5, 0x90, 0x1f, 0x0b, 0x43, 0x1e, 0xe1,
+ 0x87, 0x23, 0x19, 0x62, 0x4a, 0xed, 0xc8, 0x8c, 0x59, 0x73, 0x1e, 0xcd, 0xc3, 0x6b, 0x8e, 0x42,
+ 0x21, 0x5c, 0xc8, 0xaf, 0xb8, 0xe2, 0x4d, 0xc1, 0xfa, 0xad, 0x06, 0x1b, 0xfd, 0x50, 0x1e, 0x56,
+ 0xf4, 0x42, 0x98, 0xb1, 0x11, 0x51, 0x20, 0xda, 0xe5, 0x98, 0xc4, 0xa9, 0xdf, 0x15, 0x26, 0xdc,
+ 0xc1, 0x57, 0x30, 0x81, 0x47, 0xbc, 0xdf, 0x69, 0xb0, 0x19, 0x63, 0xc5, 0x31, 0xbf, 0x7f, 0xa4,
+ 0x19, 0xeb, 0x21, 0x33, 0x84, 0xe0, 0xd8, 0x35, 0x2f, 0xb1, 0xa2, 0x20, 0xac, 0xd8, 0xc2, 0xef,
+ 0x5f, 0x68, 0x85, 0xbc, 0xe5, 0xb8, 0x19, 0x2d, 0x58, 0x8b, 0xb8, 0x5c, 0xa8, 0x0a, 0xfb, 0x3c,
+ 0x1b, 0xb5, 0x85, 0xe2, 0x0f, 0x85, 0xae, 0x0f, 0xd0, 0x55, 0x74, 0x21, 0x06, 0xeb, 0xb1, 0x6b,
+ 0xab, 0xd2, 0xbb, 0xa0, 0xb2, 0xb5, 0x88, 0xff, 0x65, 0x27, 0x7c, 0x4f, 0x28, 0xdc, 0x46, 0x5b,
+ 0x97, 0xba, 0x58, 0x65, 0x9a, 0xe8, 0x6b, 0x0d, 0x6e, 0x26, 0xac, 0xb5, 0x60, 0x4a, 0x4f, 0xdf,
+ 0x8c, 0x57, 0x78, 0x95, 0x55, 0xdf, 0x11, 0x26, 0xdd, 0xc5, 0x57, 0x36, 0x89, 0x3b, 0xbd, 0x02,
+ 0xf3, 0xdc, 0x17, 0x97, 0x05, 0xe6, 0xa5, 0x70, 0x82, 0x4c, 0xfd, 0x44, 0x02, 0x2d, 0xf9, 0xca,
+ 0xfc, 0x48, 0x5c, 0x81, 0x85, 0x01, 0xb0, 0x6c, 0x26, 0x23, 0xe7, 0x07, 0x6e, 0x8e, 0xb9, 0xea,
+ 0x24, 0xce, 0x32, 0x29, 0x3a, 0x85, 0xb4, 0x4e, 0x1a, 0xae, 0xd3, 0xb0, 0x6c, 0xe2, 0x9b, 0x19,
+ 0x1c, 0x9b, 0xe8, 0x8f, 0x0d, 0xc1, 0x5c, 0xc5, 0x51, 0x26, 0x9f, 0xf8, 0x81, 0xb8, 0xe6, 0x63,
+ 0xae, 0x8a, 0xa1, 0x87, 0x88, 0x8f, 0x41, 0xcb, 0x43, 0x33, 0x95, 0x77, 0xc3, 0xcf, 0x20, 0x55,
+ 0xf2, 0x88, 0xc1, 0x94, 0x69, 0x68, 0x68, 0x74, 0x84, 0xa6, 0x12, 0x1b, 0x3c, 0xec, 0x37, 0x6e,
+ 0xd2, 0x2b, 0x48, 0xc9, 0x20, 0x1c, 0x63, 0x55, 0xd2, 0x24, 0xdf, 0x17, 0xbc, 0x4d, 0xbc, 0x1e,
+ 0x67, 0x9d, 0x1f, 0x56, 0x7f, 0x09, 0x0b, 0x2a, 0xaa, 0x8e, 0x40, 0x56, 0x77, 0x23, 0xde, 0x88,
+ 0x25, 0xfb, 0x71, 0xf2, 0x15, 0xa4, 0x74, 0x52, 0x77, 0x5d, 0xf6, 0xbd, 0xd9, 0xec, 0x09, 0x1c,
+ 0x07, 0xef, 0x13, 0x9b, 0xb0, 0xef, 0xe0, 0x8c, 0xed, 0x78, 0xb0, 0x29, 0x70, 0xa8, 0x0b, 0x0b,
+ 0xfb, 0xee, 0x5b, 0xc7, 0x76, 0x0d, 0xb3, 0xdc, 0x36, 0x5a, 0x64, 0x70, 0xaf, 0x88, 0x4f, 0x5f,
+ 0x96, 0x5f, 0xf1, 0x15, 0x56, 0x3a, 0xc4, 0x13, 0xc5, 0x41, 0xfe, 0xa0, 0xc1, 0x8f, 0x84, 0x8e,
+ 0x7b, 0xf8, 0xc3, 0x58, 0x1d, 0x16, 0x47, 0xd4, 0x4c, 0xc5, 0xa0, 0xc5, 0x77, 0xfc, 0xa9, 0xf0,
+ 0x05, 0x5f, 0xdc, 0x2f, 0x35, 0x58, 0x3d, 0x24, 0x2c, 0xa4, 0x43, 0x96, 0x01, 0x92, 0x0d, 0x88,
+ 0x6b, 0xc6, 0x8f, 0x85, 0x01, 0x0f, 0xd1, 0x83, 0x11, 0x0c, 0x28, 0x52, 0xa9, 0xa9, 0x2b, 0xd2,
+ 0xa4, 0x10, 0x6f, 0x44, 0xed, 0x2a, 0xc8, 0xa0, 0x51, 0xa6, 0x8f, 0x9a, 0x32, 0x09, 0x0c, 0x91,
+ 0xe8, 0xd0, 0x8a, 0xc6, 0x69, 0xa3, 0xf8, 0x23, 0xa1, 0xee, 0x36, 0xba, 0x75, 0x15, 0x75, 0xe8,
+ 0x73, 0xc8, 0x96, 0x78, 0x3e, 0x6b, 0x5f, 0x71, 0x86, 0xb1, 0x0b, 0xac, 0x66, 0xb8, 0x3d, 0xd2,
+ 0x0c, 0xff, 0xa8, 0x41, 0x76, 0xb7, 0xc1, 0xac, 0x9e, 0xc1, 0x88, 0xd0, 0x22, 0x63, 0xf5, 0x88,
+ 0xaa, 0x4b, 0x42, 0xf5, 0x27, 0xf8, 0x87, 0xa3, 0x2c, 0xad, 0x6c, 0xee, 0x0a, 0x7d, 0x7c, 0xa3,
+ 0xfd, 0x41, 0x83, 0x8c, 0x4e, 0x7a, 0xc4, 0x63, 0xff, 0x17, 0x43, 0x3c, 0xa1, 0x5a, 0x3e, 0x29,
+ 0x97, 0x06, 0x37, 0x41, 0x34, 0x5f, 0x5e, 0xf0, 0x2d, 0x92, 0x89, 0x32, 0x16, 0x2a, 0x37, 0x50,
+ 0x3e, 0x56, 0xa5, 0x4c, 0x90, 0x5f, 0x43, 0x36, 0x40, 0x6c, 0x97, 0xc4, 0x43, 0x39, 0x4c, 0xcd,
+ 0xf4, 0xa9, 0xbe, 0x18, 0xdf, 0x11, 0xe4, 0x9b, 0xe8, 0x7a, 0x3c, 0xb9, 0xad, 0x1e, 0xdc, 0x14,
+ 0x39, 0xb0, 0x22, 0xbd, 0x35, 0xac, 0x20, 0x0a, 0x4d, 0x0c, 0x41, 0x2a, 0xfb, 0xc3, 0x97, 0x29,
+ 0xe3, 0x0e, 0x3a, 0x0d, 0x3a, 0xe8, 0x6a, 0xc9, 0xe5, 0xc5, 0x5e, 0x92, 0x49, 0x25, 0x81, 0xe5,
+ 0x30, 0x76, 0x94, 0xbc, 0x66, 0x4b, 0x28, 0xc0, 0xe8, 0x46, 0xa2, 0x02, 0x3f, 0x9f, 0xf9, 0x2c,
+ 0x68, 0xbd, 0xac, 0xae, 0x25, 0x5d, 0xf5, 0xd9, 0x68, 0x85, 0x8e, 0x26, 0xdd, 0xab, 0xb2, 0xb4,
+ 0x87, 0x74, 0x51, 0x3d, 0x18, 0xf4, 0x1f, 0xf2, 0x4c, 0x84, 0x87, 0x6f, 0x0a, 0xdc, 0x3a, 0xba,
+ 0x16, 0x87, 0x93, 0x77, 0x75, 0x0d, 0xd2, 0x03, 0x8b, 0x95, 0x53, 0x92, 0x4c, 0x5e, 0x8e, 0xa9,
+ 0x08, 0x52, 0xbf, 0x74, 0x80, 0x56, 0x86, 0x94, 0x28, 0x97, 0x3c, 0x85, 0xf4, 0x09, 0xf3, 0x88,
+ 0xd1, 0xae, 0x1a, 0x8d, 0x37, 0x84, 0xd1, 0x4a, 0x97, 0xa1, 0xd5, 0x90, 0xa7, 0xa5, 0xa0, 0xd2,
+ 0x65, 0x89, 0x1b, 0x68, 0x6c, 0x4b, 0x43, 0x07, 0x22, 0xe5, 0x21, 0x56, 0x8f, 0x28, 0x50, 0xd9,
+ 0xb9, 0xa0, 0x76, 0x10, 0xe5, 0x97, 0x1d, 0x3c, 0x76, 0x4f, 0x43, 0xcf, 0x20, 0xab, 0x30, 0xa5,
+ 0x33, 0xc3, 0x69, 0x11, 0x51, 0x97, 0x4c, 0x9e, 0x72, 0x2e, 0x44, 0x0a, 0x0c, 0x11, 0xb0, 0x53,
+ 0x58, 0xec, 0x2f, 0x88, 0xfc, 0x89, 0x27, 0x9c, 0x94, 0x47, 0xdd, 0x95, 0xb4, 0x59, 0x95, 0xb7,
+ 0xfc, 0x35, 0xc9, 0xc8, 0xfc, 0x29, 0xf8, 0x73, 0x42, 0x5c, 0x25, 0x35, 0x1f, 0xd7, 0x88, 0x6f,
+ 0x08, 0x15, 0x79, 0xdc, 0x5f, 0x90, 0x50, 0x61, 0x96, 0x1f, 0xb2, 0x97, 0xc2, 0xee, 0x20, 0x3d,
+ 0xf6, 0xd1, 0x1e, 0xfc, 0x91, 0x20, 0x6a, 0x78, 0x88, 0x2a, 0x0d, 0x37, 0x21, 0x23, 0x83, 0xc5,
+ 0x77, 0x33, 0xfc, 0x03, 0xa1, 0xe2, 0x7a, 0xfe, 0x02, 0x15, 0xdc, 0x7a, 0x13, 0x32, 0x32, 0x0b,
+ 0xba, 0x54, 0x4b, 0xd2, 0x7e, 0x52, 0x73, 0xd9, 0xbe, 0x68, 0x2e, 0xea, 0x60, 0x84, 0x7e, 0x28,
+ 0xb9, 0xf4, 0x60, 0x84, 0x3c, 0x16, 0x39, 0x18, 0x21, 0x2d, 0xe8, 0x48, 0x24, 0xdb, 0xe2, 0xea,
+ 0xa1, 0xf1, 0xc9, 0xb6, 0x94, 0xf9, 0x19, 0x1c, 0x5a, 0x4f, 0xbe, 0x78, 0x28, 0xfa, 0x05, 0xcc,
+ 0xfa, 0x85, 0xe3, 0x10, 0x2c, 0x97, 0x54, 0x81, 0xc6, 0xb7, 0x05, 0xf6, 0x06, 0x7e, 0x2f, 0x16,
+ 0x4b, 0x89, 0xdd, 0xac, 0x31, 0x4e, 0x7b, 0x29, 0xf2, 0xa3, 0x50, 0xe1, 0x7d, 0xf8, 0xed, 0x19,
+ 0xa9, 0xcc, 0x47, 0x23, 0x0f, 0x3f, 0x46, 0xbc, 0x9f, 0x7a, 0x74, 0x5a, 0x75, 0xf4, 0x19, 0xa0,
+ 0x43, 0xc2, 0x86, 0x6a, 0xef, 0x43, 0x05, 0xaa, 0xb8, 0xf2, 0x7c, 0xd4, 0x1f, 0x61, 0xb6, 0xa8,
+ 0xf4, 0x23, 0x0a, 0x0b, 0x27, 0x56, 0xbb, 0x6b, 0x1b, 0x8c, 0x88, 0xf1, 0x68, 0xa3, 0xef, 0x88,
+ 0x60, 0xb3, 0x4e, 0x7e, 0xd3, 0x25, 0x94, 0x25, 0xdd, 0xf9, 0x91, 0xa2, 0x41, 0xd8, 0x47, 0x8a,
+ 0x54, 0xe3, 0x24, 0xbe, 0x33, 0x4b, 0x30, 0xd7, 0x2f, 0xb2, 0xa3, 0x6b, 0xbe, 0xc2, 0x48, 0xf9,
+ 0x3d, 0x9f, 0x2c, 0xc2, 0x63, 0xe8, 0x18, 0x40, 0xbe, 0x78, 0x44, 0x81, 0x27, 0x15, 0xcc, 0x08,
+ 0x12, 0x37, 0xb4, 0x7a, 0x2a, 0xe2, 0x45, 0x6e, 0xe3, 0x60, 0xb4, 0x7a, 0xcc, 0xaa, 0x77, 0xce,
+ 0x08, 0xbc, 0xc1, 0x8b, 0xac, 0x77, 0xbf, 0x18, 0x18, 0xfe, 0x58, 0xdb, 0xde, 0xb3, 0x21, 0xeb,
+ 0x7a, 0x2d, 0x11, 0x17, 0x1b, 0xae, 0x67, 0x2a, 0xde, 0x5e, 0x4a, 0x56, 0x7d, 0xab, 0xe2, 0xe7,
+ 0xf0, 0x5f, 0x15, 0x5a, 0x16, 0x3b, 0xeb, 0xd6, 0xb9, 0x57, 0x8b, 0x7e, 0x4f, 0xf5, 0x37, 0x07,
+ 0x77, 0xfd, 0xbf, 0x40, 0xd8, 0x29, 0xb6, 0x5c, 0xd5, 0xf6, 0xb7, 0xf1, 0xd5, 0x8a, 0xcf, 0x7b,
+ 0x19, 0x2c, 0x22, 0x57, 0xc7, 0xab, 0x13, 0xd5, 0xc9, 0xea, 0x54, 0x75, 0xba, 0x3a, 0x53, 0x9d,
+ 0xad, 0x4f, 0x8b, 0xb1, 0x3b, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x70, 0x28, 0xbe, 0x4c, 0xcd,
+ 0x20, 0x00, 0x00,
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConn
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+const _ = grpc.SupportPackageIsVersion4
+
+// VolthaServiceClient is the client API for VolthaService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
+type VolthaServiceClient interface {
+ // Get more information on a given physical device
+ UpdateLogLevel(ctx context.Context, in *common.Logging, opts ...grpc.CallOption) (*empty.Empty, error)
+ GetLogLevels(ctx context.Context, in *common.LoggingComponent, opts ...grpc.CallOption) (*common.Loggings, error)
+ // Get the membership group of a Voltha Core
+ GetMembership(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Membership, error)
+ // Set the membership group of a Voltha Core
+ UpdateMembership(ctx context.Context, in *Membership, opts ...grpc.CallOption) (*empty.Empty, error)
+ // Get high level information on the Voltha cluster
+ GetVoltha(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Voltha, error)
+ // List all Voltha cluster core instances
+ ListCoreInstances(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*CoreInstances, error)
+ // Get details on a Voltha cluster instance
+ GetCoreInstance(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*CoreInstance, error)
+ // List all active adapters (plugins) in the Voltha cluster
+ ListAdapters(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Adapters, error)
+ // List all logical devices managed by the Voltha cluster
+ ListLogicalDevices(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*LogicalDevices, error)
+ // Get additional information on a given logical device
+ GetLogicalDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalDevice, error)
+ // List ports of a logical device
+ ListLogicalDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalPorts, error)
+ // Gets a logical device port
+ GetLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*LogicalPort, error)
+ // Enables a logical device port
+ EnableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*empty.Empty, error)
+ // Disables a logical device port
+ DisableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*empty.Empty, error)
+ // List all flows of a logical device
+ ListLogicalDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error)
+ // Update flow table for logical device
+ UpdateLogicalDeviceFlowTable(ctx context.Context, in *openflow_13.FlowTableUpdate, opts ...grpc.CallOption) (*empty.Empty, error)
+ // Update meter table for logical device
+ UpdateLogicalDeviceMeterTable(ctx context.Context, in *openflow_13.MeterModUpdate, opts ...grpc.CallOption) (*empty.Empty, error)
+ // List all meters of a logical device
+ ListLogicalDeviceMeters(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Meters, error)
+ // List all flow groups of a logical device
+ ListLogicalDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error)
+ // Update group table for device
+ UpdateLogicalDeviceFlowGroupTable(ctx context.Context, in *openflow_13.FlowGroupTableUpdate, opts ...grpc.CallOption) (*empty.Empty, error)
+ // List all physical devices controlled by the Voltha cluster
+ ListDevices(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Devices, error)
+ // List all physical devices IDs controlled by the Voltha cluster
+ ListDeviceIds(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*common.IDs, error)
+ // Request to a voltha Core to reconcile a set of devices based on their IDs
+ ReconcileDevices(ctx context.Context, in *common.IDs, opts ...grpc.CallOption) (*empty.Empty, error)
+ // Get more information on a given physical device
+ GetDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Device, error)
+ // Pre-provision a new physical device
+ CreateDevice(ctx context.Context, in *Device, opts ...grpc.CallOption) (*Device, error)
+ // Enable a device. If the device was in pre-provisioned state then it
+ // will transition to ENABLED state. If it was is DISABLED state then it
+ // will transition to ENABLED state as well.
+ EnableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
+ // Disable a device
+ DisableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
+ // Reboot a device
+ RebootDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
+ // Delete a device
+ DeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
+ // Request an image download to the standby partition
+ // of a device.
+ // Note that the call is expected to be non-blocking.
+ DownloadImage(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
+ // Get image download status on a device
+ // The request retrieves progress on device and updates db record
+ GetImageDownloadStatus(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error)
+ // Get image download db record
+ GetImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error)
+ // List image download db records for a given device
+ ListImageDownloads(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*ImageDownloads, error)
+ // Cancel an existing image download process on a device
+ CancelImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
+ // Activate the specified image at a standby partition
+ // to active partition.
+ // Depending on the device implementation, this call
+ // may or may not cause device reboot.
+ // If no reboot, then a reboot is required to make the
+ // activated image running on device
+ // Note that the call is expected to be non-blocking.
+ ActivateImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
+ // Revert the specified image at standby partition
+ // to active partition, and revert to previous image
+ // Depending on the device implementation, this call
+ // may or may not cause device reboot.
+ // If no reboot, then a reboot is required to make the
+ // previous image running on device
+ // Note that the call is expected to be non-blocking.
+ RevertImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
+ // List ports of a device
+ ListDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Ports, error)
+ // List pm config of a device
+ ListDevicePmConfigs(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*PmConfigs, error)
+ // Update the pm config of a device
+ UpdateDevicePmConfigs(ctx context.Context, in *PmConfigs, opts ...grpc.CallOption) (*empty.Empty, error)
+ // List all flows of a device
+ ListDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error)
+ // List all flow groups of a device
+ ListDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error)
+ // List device types known to Voltha
+ ListDeviceTypes(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*DeviceTypes, error)
+ // Get additional information on a device type
+ GetDeviceType(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*DeviceType, error)
+ // List all device sharding groups
+ ListDeviceGroups(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*DeviceGroups, error)
+ // Stream control packets to the dataplane
+ StreamPacketsOut(ctx context.Context, opts ...grpc.CallOption) (VolthaService_StreamPacketsOutClient, error)
+ // Receive control packet stream
+ ReceivePacketsIn(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (VolthaService_ReceivePacketsInClient, error)
+ ReceiveChangeEvents(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (VolthaService_ReceiveChangeEventsClient, error)
+ // Get additional information on a device group
+ GetDeviceGroup(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*DeviceGroup, error)
+ CreateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error)
+ // Get all filters present for a device
+ GetEventFilter(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*EventFilters, error)
+ UpdateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error)
+ DeleteEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*empty.Empty, error)
+ // Get all the filters present
+ ListEventFilters(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*EventFilters, error)
+ GetImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Images, error)
+ SelfTest(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*SelfTestResponse, error)
+ // OpenOMCI MIB information
+ GetMibDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.MibDeviceData, error)
+ // OpenOMCI ALARM information
+ GetAlarmDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.AlarmDeviceData, error)
+ // Simulate an Alarm
+ SimulateAlarm(ctx context.Context, in *SimulateAlarmRequest, opts ...grpc.CallOption) (*common.OperationResp, error)
+ Subscribe(ctx context.Context, in *OfAgentSubscriber, opts ...grpc.CallOption) (*OfAgentSubscriber, error)
+ EnablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*empty.Empty, error)
+ DisablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*empty.Empty, error)
+}
+
+type volthaServiceClient struct {
+ cc *grpc.ClientConn
+}
+
+func NewVolthaServiceClient(cc *grpc.ClientConn) VolthaServiceClient {
+ return &volthaServiceClient{cc}
+}
+
+func (c *volthaServiceClient) UpdateLogLevel(ctx context.Context, in *common.Logging, opts ...grpc.CallOption) (*empty.Empty, error) {
+ out := new(empty.Empty)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/UpdateLogLevel", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) GetLogLevels(ctx context.Context, in *common.LoggingComponent, opts ...grpc.CallOption) (*common.Loggings, error) {
+ out := new(common.Loggings)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetLogLevels", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) GetMembership(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Membership, error) {
+ out := new(Membership)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetMembership", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) UpdateMembership(ctx context.Context, in *Membership, opts ...grpc.CallOption) (*empty.Empty, error) {
+ out := new(empty.Empty)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/UpdateMembership", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) GetVoltha(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Voltha, error) {
+ out := new(Voltha)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetVoltha", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) ListCoreInstances(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*CoreInstances, error) {
+ out := new(CoreInstances)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListCoreInstances", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) GetCoreInstance(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*CoreInstance, error) {
+ out := new(CoreInstance)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetCoreInstance", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) ListAdapters(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Adapters, error) {
+ out := new(Adapters)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListAdapters", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) ListLogicalDevices(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*LogicalDevices, error) {
+ out := new(LogicalDevices)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListLogicalDevices", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) GetLogicalDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalDevice, error) {
+ out := new(LogicalDevice)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetLogicalDevice", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) ListLogicalDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalPorts, error) {
+ out := new(LogicalPorts)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListLogicalDevicePorts", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) GetLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*LogicalPort, error) {
+ out := new(LogicalPort)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetLogicalDevicePort", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) EnableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*empty.Empty, error) {
+ out := new(empty.Empty)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/EnableLogicalDevicePort", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) DisableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*empty.Empty, error) {
+ out := new(empty.Empty)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/DisableLogicalDevicePort", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) ListLogicalDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error) {
+ out := new(openflow_13.Flows)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListLogicalDeviceFlows", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) UpdateLogicalDeviceFlowTable(ctx context.Context, in *openflow_13.FlowTableUpdate, opts ...grpc.CallOption) (*empty.Empty, error) {
+ out := new(empty.Empty)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/UpdateLogicalDeviceFlowTable", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) UpdateLogicalDeviceMeterTable(ctx context.Context, in *openflow_13.MeterModUpdate, opts ...grpc.CallOption) (*empty.Empty, error) {
+ out := new(empty.Empty)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/UpdateLogicalDeviceMeterTable", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) ListLogicalDeviceMeters(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Meters, error) {
+ out := new(openflow_13.Meters)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListLogicalDeviceMeters", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) ListLogicalDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error) {
+ out := new(openflow_13.FlowGroups)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListLogicalDeviceFlowGroups", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) UpdateLogicalDeviceFlowGroupTable(ctx context.Context, in *openflow_13.FlowGroupTableUpdate, opts ...grpc.CallOption) (*empty.Empty, error) {
+ out := new(empty.Empty)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/UpdateLogicalDeviceFlowGroupTable", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) ListDevices(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Devices, error) {
+ out := new(Devices)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDevices", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) ListDeviceIds(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*common.IDs, error) {
+ out := new(common.IDs)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDeviceIds", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) ReconcileDevices(ctx context.Context, in *common.IDs, opts ...grpc.CallOption) (*empty.Empty, error) {
+ out := new(empty.Empty)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/ReconcileDevices", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) GetDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Device, error) {
+ out := new(Device)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetDevice", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) CreateDevice(ctx context.Context, in *Device, opts ...grpc.CallOption) (*Device, error) {
+ out := new(Device)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/CreateDevice", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) EnableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
+ out := new(empty.Empty)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/EnableDevice", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) DisableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
+ out := new(empty.Empty)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/DisableDevice", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) RebootDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
+ out := new(empty.Empty)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/RebootDevice", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) DeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
+ out := new(empty.Empty)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/DeleteDevice", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) DownloadImage(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
+ out := new(common.OperationResp)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/DownloadImage", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) GetImageDownloadStatus(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error) {
+ out := new(ImageDownload)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetImageDownloadStatus", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) GetImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error) {
+ out := new(ImageDownload)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetImageDownload", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) ListImageDownloads(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*ImageDownloads, error) {
+ out := new(ImageDownloads)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListImageDownloads", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) CancelImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
+ out := new(common.OperationResp)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/CancelImageDownload", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) ActivateImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
+ out := new(common.OperationResp)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/ActivateImageUpdate", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) RevertImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
+ out := new(common.OperationResp)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/RevertImageUpdate", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) ListDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Ports, error) {
+ out := new(Ports)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDevicePorts", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) ListDevicePmConfigs(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*PmConfigs, error) {
+ out := new(PmConfigs)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDevicePmConfigs", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) UpdateDevicePmConfigs(ctx context.Context, in *PmConfigs, opts ...grpc.CallOption) (*empty.Empty, error) {
+ out := new(empty.Empty)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/UpdateDevicePmConfigs", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) ListDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error) {
+ out := new(openflow_13.Flows)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDeviceFlows", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) ListDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error) {
+ out := new(openflow_13.FlowGroups)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDeviceFlowGroups", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) ListDeviceTypes(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*DeviceTypes, error) {
+ out := new(DeviceTypes)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDeviceTypes", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) GetDeviceType(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*DeviceType, error) {
+ out := new(DeviceType)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetDeviceType", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) ListDeviceGroups(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*DeviceGroups, error) {
+ out := new(DeviceGroups)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDeviceGroups", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) StreamPacketsOut(ctx context.Context, opts ...grpc.CallOption) (VolthaService_StreamPacketsOutClient, error) {
+ stream, err := c.cc.NewStream(ctx, &_VolthaService_serviceDesc.Streams[0], "/voltha.VolthaService/StreamPacketsOut", opts...)
+ if err != nil {
+ return nil, err
+ }
+ x := &volthaServiceStreamPacketsOutClient{stream}
+ return x, nil
+}
+
+type VolthaService_StreamPacketsOutClient interface {
+ Send(*openflow_13.PacketOut) error
+ CloseAndRecv() (*empty.Empty, error)
+ grpc.ClientStream
+}
+
+type volthaServiceStreamPacketsOutClient struct {
+ grpc.ClientStream
+}
+
+func (x *volthaServiceStreamPacketsOutClient) Send(m *openflow_13.PacketOut) error {
+ return x.ClientStream.SendMsg(m)
+}
+
+func (x *volthaServiceStreamPacketsOutClient) CloseAndRecv() (*empty.Empty, error) {
+ if err := x.ClientStream.CloseSend(); err != nil {
+ return nil, err
+ }
+ m := new(empty.Empty)
+ if err := x.ClientStream.RecvMsg(m); err != nil {
+ return nil, err
+ }
+ return m, nil
+}
+
+func (c *volthaServiceClient) ReceivePacketsIn(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (VolthaService_ReceivePacketsInClient, error) {
+ stream, err := c.cc.NewStream(ctx, &_VolthaService_serviceDesc.Streams[1], "/voltha.VolthaService/ReceivePacketsIn", opts...)
+ if err != nil {
+ return nil, err
+ }
+ x := &volthaServiceReceivePacketsInClient{stream}
+ if err := x.ClientStream.SendMsg(in); err != nil {
+ return nil, err
+ }
+ if err := x.ClientStream.CloseSend(); err != nil {
+ return nil, err
+ }
+ return x, nil
+}
+
+type VolthaService_ReceivePacketsInClient interface {
+ Recv() (*openflow_13.PacketIn, error)
+ grpc.ClientStream
+}
+
+type volthaServiceReceivePacketsInClient struct {
+ grpc.ClientStream
+}
+
+func (x *volthaServiceReceivePacketsInClient) Recv() (*openflow_13.PacketIn, error) {
+ m := new(openflow_13.PacketIn)
+ if err := x.ClientStream.RecvMsg(m); err != nil {
+ return nil, err
+ }
+ return m, nil
+}
+
+func (c *volthaServiceClient) ReceiveChangeEvents(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (VolthaService_ReceiveChangeEventsClient, error) {
+ stream, err := c.cc.NewStream(ctx, &_VolthaService_serviceDesc.Streams[2], "/voltha.VolthaService/ReceiveChangeEvents", opts...)
+ if err != nil {
+ return nil, err
+ }
+ x := &volthaServiceReceiveChangeEventsClient{stream}
+ if err := x.ClientStream.SendMsg(in); err != nil {
+ return nil, err
+ }
+ if err := x.ClientStream.CloseSend(); err != nil {
+ return nil, err
+ }
+ return x, nil
+}
+
+type VolthaService_ReceiveChangeEventsClient interface {
+ Recv() (*openflow_13.ChangeEvent, error)
+ grpc.ClientStream
+}
+
+type volthaServiceReceiveChangeEventsClient struct {
+ grpc.ClientStream
+}
+
+func (x *volthaServiceReceiveChangeEventsClient) Recv() (*openflow_13.ChangeEvent, error) {
+ m := new(openflow_13.ChangeEvent)
+ if err := x.ClientStream.RecvMsg(m); err != nil {
+ return nil, err
+ }
+ return m, nil
+}
+
+func (c *volthaServiceClient) GetDeviceGroup(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*DeviceGroup, error) {
+ out := new(DeviceGroup)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetDeviceGroup", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) CreateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error) {
+ out := new(EventFilter)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/CreateEventFilter", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) GetEventFilter(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*EventFilters, error) {
+ out := new(EventFilters)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetEventFilter", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) UpdateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error) {
+ out := new(EventFilter)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/UpdateEventFilter", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) DeleteEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*empty.Empty, error) {
+ out := new(empty.Empty)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/DeleteEventFilter", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) ListEventFilters(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*EventFilters, error) {
+ out := new(EventFilters)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListEventFilters", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) GetImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Images, error) {
+ out := new(Images)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetImages", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) SelfTest(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*SelfTestResponse, error) {
+ out := new(SelfTestResponse)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/SelfTest", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) GetMibDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.MibDeviceData, error) {
+ out := new(omci.MibDeviceData)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetMibDeviceData", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) GetAlarmDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.AlarmDeviceData, error) {
+ out := new(omci.AlarmDeviceData)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetAlarmDeviceData", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) SimulateAlarm(ctx context.Context, in *SimulateAlarmRequest, opts ...grpc.CallOption) (*common.OperationResp, error) {
+ out := new(common.OperationResp)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/SimulateAlarm", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) Subscribe(ctx context.Context, in *OfAgentSubscriber, opts ...grpc.CallOption) (*OfAgentSubscriber, error) {
+ out := new(OfAgentSubscriber)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/Subscribe", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) EnablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*empty.Empty, error) {
+ out := new(empty.Empty)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/EnablePort", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *volthaServiceClient) DisablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*empty.Empty, error) {
+ out := new(empty.Empty)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/DisablePort", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// VolthaServiceServer is the server API for VolthaService service.
+type VolthaServiceServer interface {
+ // Get more information on a given physical device
+ UpdateLogLevel(context.Context, *common.Logging) (*empty.Empty, error)
+ GetLogLevels(context.Context, *common.LoggingComponent) (*common.Loggings, error)
+ // Get the membership group of a Voltha Core
+ GetMembership(context.Context, *empty.Empty) (*Membership, error)
+ // Set the membership group of a Voltha Core
+ UpdateMembership(context.Context, *Membership) (*empty.Empty, error)
+ // Get high level information on the Voltha cluster
+ GetVoltha(context.Context, *empty.Empty) (*Voltha, error)
+ // List all Voltha cluster core instances
+ ListCoreInstances(context.Context, *empty.Empty) (*CoreInstances, error)
+ // Get details on a Voltha cluster instance
+ GetCoreInstance(context.Context, *common.ID) (*CoreInstance, error)
+ // List all active adapters (plugins) in the Voltha cluster
+ ListAdapters(context.Context, *empty.Empty) (*Adapters, error)
+ // List all logical devices managed by the Voltha cluster
+ ListLogicalDevices(context.Context, *empty.Empty) (*LogicalDevices, error)
+ // Get additional information on a given logical device
+ GetLogicalDevice(context.Context, *common.ID) (*LogicalDevice, error)
+ // List ports of a logical device
+ ListLogicalDevicePorts(context.Context, *common.ID) (*LogicalPorts, error)
+ // Gets a logical device port
+ GetLogicalDevicePort(context.Context, *LogicalPortId) (*LogicalPort, error)
+ // Enables a logical device port
+ EnableLogicalDevicePort(context.Context, *LogicalPortId) (*empty.Empty, error)
+ // Disables a logical device port
+ DisableLogicalDevicePort(context.Context, *LogicalPortId) (*empty.Empty, error)
+ // List all flows of a logical device
+ ListLogicalDeviceFlows(context.Context, *common.ID) (*openflow_13.Flows, error)
+ // Update flow table for logical device
+ UpdateLogicalDeviceFlowTable(context.Context, *openflow_13.FlowTableUpdate) (*empty.Empty, error)
+ // Update meter table for logical device
+ UpdateLogicalDeviceMeterTable(context.Context, *openflow_13.MeterModUpdate) (*empty.Empty, error)
+ // List all meters of a logical device
+ ListLogicalDeviceMeters(context.Context, *common.ID) (*openflow_13.Meters, error)
+ // List all flow groups of a logical device
+ ListLogicalDeviceFlowGroups(context.Context, *common.ID) (*openflow_13.FlowGroups, error)
+ // Update group table for device
+ UpdateLogicalDeviceFlowGroupTable(context.Context, *openflow_13.FlowGroupTableUpdate) (*empty.Empty, error)
+ // List all physical devices controlled by the Voltha cluster
+ ListDevices(context.Context, *empty.Empty) (*Devices, error)
+ // List all physical devices IDs controlled by the Voltha cluster
+ ListDeviceIds(context.Context, *empty.Empty) (*common.IDs, error)
+ // Request to a voltha Core to reconcile a set of devices based on their IDs
+ ReconcileDevices(context.Context, *common.IDs) (*empty.Empty, error)
+ // Get more information on a given physical device
+ GetDevice(context.Context, *common.ID) (*Device, error)
+ // Pre-provision a new physical device
+ CreateDevice(context.Context, *Device) (*Device, error)
+ // Enable a device. If the device was in pre-provisioned state then it
+ // will transition to ENABLED state. If it was is DISABLED state then it
+ // will transition to ENABLED state as well.
+ EnableDevice(context.Context, *common.ID) (*empty.Empty, error)
+ // Disable a device
+ DisableDevice(context.Context, *common.ID) (*empty.Empty, error)
+ // Reboot a device
+ RebootDevice(context.Context, *common.ID) (*empty.Empty, error)
+ // Delete a device
+ DeleteDevice(context.Context, *common.ID) (*empty.Empty, error)
+ // Request an image download to the standby partition
+ // of a device.
+ // Note that the call is expected to be non-blocking.
+ DownloadImage(context.Context, *ImageDownload) (*common.OperationResp, error)
+ // Get image download status on a device
+ // The request retrieves progress on device and updates db record
+ GetImageDownloadStatus(context.Context, *ImageDownload) (*ImageDownload, error)
+ // Get image download db record
+ GetImageDownload(context.Context, *ImageDownload) (*ImageDownload, error)
+ // List image download db records for a given device
+ ListImageDownloads(context.Context, *common.ID) (*ImageDownloads, error)
+ // Cancel an existing image download process on a device
+ CancelImageDownload(context.Context, *ImageDownload) (*common.OperationResp, error)
+ // Activate the specified image at a standby partition
+ // to active partition.
+ // Depending on the device implementation, this call
+ // may or may not cause device reboot.
+ // If no reboot, then a reboot is required to make the
+ // activated image running on device
+ // Note that the call is expected to be non-blocking.
+ ActivateImageUpdate(context.Context, *ImageDownload) (*common.OperationResp, error)
+ // Revert the specified image at standby partition
+ // to active partition, and revert to previous image
+ // Depending on the device implementation, this call
+ // may or may not cause device reboot.
+ // If no reboot, then a reboot is required to make the
+ // previous image running on device
+ // Note that the call is expected to be non-blocking.
+ RevertImageUpdate(context.Context, *ImageDownload) (*common.OperationResp, error)
+ // List ports of a device
+ ListDevicePorts(context.Context, *common.ID) (*Ports, error)
+ // List pm config of a device
+ ListDevicePmConfigs(context.Context, *common.ID) (*PmConfigs, error)
+ // Update the pm config of a device
+ UpdateDevicePmConfigs(context.Context, *PmConfigs) (*empty.Empty, error)
+ // List all flows of a device
+ ListDeviceFlows(context.Context, *common.ID) (*openflow_13.Flows, error)
+ // List all flow groups of a device
+ ListDeviceFlowGroups(context.Context, *common.ID) (*openflow_13.FlowGroups, error)
+ // List device types known to Voltha
+ ListDeviceTypes(context.Context, *empty.Empty) (*DeviceTypes, error)
+ // Get additional information on a device type
+ GetDeviceType(context.Context, *common.ID) (*DeviceType, error)
+ // List all device sharding groups
+ ListDeviceGroups(context.Context, *empty.Empty) (*DeviceGroups, error)
+ // Stream control packets to the dataplane
+ StreamPacketsOut(VolthaService_StreamPacketsOutServer) error
+ // Receive control packet stream
+ ReceivePacketsIn(*empty.Empty, VolthaService_ReceivePacketsInServer) error
+ ReceiveChangeEvents(*empty.Empty, VolthaService_ReceiveChangeEventsServer) error
+ // Get additional information on a device group
+ GetDeviceGroup(context.Context, *common.ID) (*DeviceGroup, error)
+ CreateEventFilter(context.Context, *EventFilter) (*EventFilter, error)
+ // Get all filters present for a device
+ GetEventFilter(context.Context, *common.ID) (*EventFilters, error)
+ UpdateEventFilter(context.Context, *EventFilter) (*EventFilter, error)
+ DeleteEventFilter(context.Context, *EventFilter) (*empty.Empty, error)
+ // Get all the filters present
+ ListEventFilters(context.Context, *empty.Empty) (*EventFilters, error)
+ GetImages(context.Context, *common.ID) (*Images, error)
+ SelfTest(context.Context, *common.ID) (*SelfTestResponse, error)
+ // OpenOMCI MIB information
+ GetMibDeviceData(context.Context, *common.ID) (*omci.MibDeviceData, error)
+ // OpenOMCI ALARM information
+ GetAlarmDeviceData(context.Context, *common.ID) (*omci.AlarmDeviceData, error)
+ // Simulate an Alarm
+ SimulateAlarm(context.Context, *SimulateAlarmRequest) (*common.OperationResp, error)
+ Subscribe(context.Context, *OfAgentSubscriber) (*OfAgentSubscriber, error)
+ EnablePort(context.Context, *Port) (*empty.Empty, error)
+ DisablePort(context.Context, *Port) (*empty.Empty, error)
+}
+
+func RegisterVolthaServiceServer(s *grpc.Server, srv VolthaServiceServer) {
+ s.RegisterService(&_VolthaService_serviceDesc, srv)
+}
+
+func _VolthaService_UpdateLogLevel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(common.Logging)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).UpdateLogLevel(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/UpdateLogLevel",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).UpdateLogLevel(ctx, req.(*common.Logging))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetLogLevels_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(common.LoggingComponent)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).GetLogLevels(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/GetLogLevels",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).GetLogLevels(ctx, req.(*common.LoggingComponent))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetMembership_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(empty.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).GetMembership(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/GetMembership",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).GetMembership(ctx, req.(*empty.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_UpdateMembership_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Membership)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).UpdateMembership(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/UpdateMembership",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).UpdateMembership(ctx, req.(*Membership))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetVoltha_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(empty.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).GetVoltha(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/GetVoltha",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).GetVoltha(ctx, req.(*empty.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListCoreInstances_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(empty.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).ListCoreInstances(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/ListCoreInstances",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).ListCoreInstances(ctx, req.(*empty.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetCoreInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(common.ID)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).GetCoreInstance(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/GetCoreInstance",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).GetCoreInstance(ctx, req.(*common.ID))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListAdapters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(empty.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).ListAdapters(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/ListAdapters",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).ListAdapters(ctx, req.(*empty.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListLogicalDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(empty.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).ListLogicalDevices(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/ListLogicalDevices",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).ListLogicalDevices(ctx, req.(*empty.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetLogicalDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(common.ID)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).GetLogicalDevice(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/GetLogicalDevice",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).GetLogicalDevice(ctx, req.(*common.ID))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListLogicalDevicePorts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(common.ID)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).ListLogicalDevicePorts(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/ListLogicalDevicePorts",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).ListLogicalDevicePorts(ctx, req.(*common.ID))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetLogicalDevicePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(LogicalPortId)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).GetLogicalDevicePort(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/GetLogicalDevicePort",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).GetLogicalDevicePort(ctx, req.(*LogicalPortId))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_EnableLogicalDevicePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(LogicalPortId)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).EnableLogicalDevicePort(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/EnableLogicalDevicePort",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).EnableLogicalDevicePort(ctx, req.(*LogicalPortId))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DisableLogicalDevicePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(LogicalPortId)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).DisableLogicalDevicePort(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/DisableLogicalDevicePort",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).DisableLogicalDevicePort(ctx, req.(*LogicalPortId))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListLogicalDeviceFlows_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(common.ID)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).ListLogicalDeviceFlows(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/ListLogicalDeviceFlows",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).ListLogicalDeviceFlows(ctx, req.(*common.ID))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_UpdateLogicalDeviceFlowTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(openflow_13.FlowTableUpdate)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowTable(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/UpdateLogicalDeviceFlowTable",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowTable(ctx, req.(*openflow_13.FlowTableUpdate))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_UpdateLogicalDeviceMeterTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(openflow_13.MeterModUpdate)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).UpdateLogicalDeviceMeterTable(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/UpdateLogicalDeviceMeterTable",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).UpdateLogicalDeviceMeterTable(ctx, req.(*openflow_13.MeterModUpdate))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListLogicalDeviceMeters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(common.ID)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).ListLogicalDeviceMeters(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/ListLogicalDeviceMeters",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).ListLogicalDeviceMeters(ctx, req.(*common.ID))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListLogicalDeviceFlowGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(common.ID)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).ListLogicalDeviceFlowGroups(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/ListLogicalDeviceFlowGroups",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).ListLogicalDeviceFlowGroups(ctx, req.(*common.ID))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_UpdateLogicalDeviceFlowGroupTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(openflow_13.FlowGroupTableUpdate)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowGroupTable(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/UpdateLogicalDeviceFlowGroupTable",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowGroupTable(ctx, req.(*openflow_13.FlowGroupTableUpdate))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(empty.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).ListDevices(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/ListDevices",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).ListDevices(ctx, req.(*empty.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDeviceIds_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(empty.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).ListDeviceIds(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/ListDeviceIds",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).ListDeviceIds(ctx, req.(*empty.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ReconcileDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(common.IDs)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).ReconcileDevices(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/ReconcileDevices",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).ReconcileDevices(ctx, req.(*common.IDs))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(common.ID)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).GetDevice(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/GetDevice",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).GetDevice(ctx, req.(*common.ID))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_CreateDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Device)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).CreateDevice(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/CreateDevice",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).CreateDevice(ctx, req.(*Device))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_EnableDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(common.ID)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).EnableDevice(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/EnableDevice",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).EnableDevice(ctx, req.(*common.ID))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DisableDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(common.ID)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).DisableDevice(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/DisableDevice",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).DisableDevice(ctx, req.(*common.ID))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_RebootDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(common.ID)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).RebootDevice(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/RebootDevice",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).RebootDevice(ctx, req.(*common.ID))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DeleteDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(common.ID)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).DeleteDevice(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/DeleteDevice",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).DeleteDevice(ctx, req.(*common.ID))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DownloadImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ImageDownload)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).DownloadImage(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/DownloadImage",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).DownloadImage(ctx, req.(*ImageDownload))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetImageDownloadStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ImageDownload)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).GetImageDownloadStatus(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/GetImageDownloadStatus",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).GetImageDownloadStatus(ctx, req.(*ImageDownload))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetImageDownload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ImageDownload)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).GetImageDownload(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/GetImageDownload",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).GetImageDownload(ctx, req.(*ImageDownload))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListImageDownloads_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(common.ID)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).ListImageDownloads(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/ListImageDownloads",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).ListImageDownloads(ctx, req.(*common.ID))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_CancelImageDownload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ImageDownload)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).CancelImageDownload(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/CancelImageDownload",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).CancelImageDownload(ctx, req.(*ImageDownload))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ActivateImageUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ImageDownload)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).ActivateImageUpdate(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/ActivateImageUpdate",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).ActivateImageUpdate(ctx, req.(*ImageDownload))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_RevertImageUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ImageDownload)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).RevertImageUpdate(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/RevertImageUpdate",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).RevertImageUpdate(ctx, req.(*ImageDownload))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDevicePorts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(common.ID)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).ListDevicePorts(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/ListDevicePorts",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).ListDevicePorts(ctx, req.(*common.ID))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDevicePmConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(common.ID)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).ListDevicePmConfigs(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/ListDevicePmConfigs",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).ListDevicePmConfigs(ctx, req.(*common.ID))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_UpdateDevicePmConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(PmConfigs)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).UpdateDevicePmConfigs(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/UpdateDevicePmConfigs",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).UpdateDevicePmConfigs(ctx, req.(*PmConfigs))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDeviceFlows_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(common.ID)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).ListDeviceFlows(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/ListDeviceFlows",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).ListDeviceFlows(ctx, req.(*common.ID))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDeviceFlowGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(common.ID)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).ListDeviceFlowGroups(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/ListDeviceFlowGroups",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).ListDeviceFlowGroups(ctx, req.(*common.ID))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDeviceTypes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(empty.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).ListDeviceTypes(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/ListDeviceTypes",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).ListDeviceTypes(ctx, req.(*empty.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetDeviceType_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(common.ID)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).GetDeviceType(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/GetDeviceType",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).GetDeviceType(ctx, req.(*common.ID))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDeviceGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(empty.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).ListDeviceGroups(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/ListDeviceGroups",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).ListDeviceGroups(ctx, req.(*empty.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_StreamPacketsOut_Handler(srv interface{}, stream grpc.ServerStream) error {
+ return srv.(VolthaServiceServer).StreamPacketsOut(&volthaServiceStreamPacketsOutServer{stream})
+}
+
+type VolthaService_StreamPacketsOutServer interface {
+ SendAndClose(*empty.Empty) error
+ Recv() (*openflow_13.PacketOut, error)
+ grpc.ServerStream
+}
+
+type volthaServiceStreamPacketsOutServer struct {
+ grpc.ServerStream
+}
+
+func (x *volthaServiceStreamPacketsOutServer) SendAndClose(m *empty.Empty) error {
+ return x.ServerStream.SendMsg(m)
+}
+
+func (x *volthaServiceStreamPacketsOutServer) Recv() (*openflow_13.PacketOut, error) {
+ m := new(openflow_13.PacketOut)
+ if err := x.ServerStream.RecvMsg(m); err != nil {
+ return nil, err
+ }
+ return m, nil
+}
+
+func _VolthaService_ReceivePacketsIn_Handler(srv interface{}, stream grpc.ServerStream) error {
+ m := new(empty.Empty)
+ if err := stream.RecvMsg(m); err != nil {
+ return err
+ }
+ return srv.(VolthaServiceServer).ReceivePacketsIn(m, &volthaServiceReceivePacketsInServer{stream})
+}
+
+type VolthaService_ReceivePacketsInServer interface {
+ Send(*openflow_13.PacketIn) error
+ grpc.ServerStream
+}
+
+type volthaServiceReceivePacketsInServer struct {
+ grpc.ServerStream
+}
+
+func (x *volthaServiceReceivePacketsInServer) Send(m *openflow_13.PacketIn) error {
+ return x.ServerStream.SendMsg(m)
+}
+
+func _VolthaService_ReceiveChangeEvents_Handler(srv interface{}, stream grpc.ServerStream) error {
+ m := new(empty.Empty)
+ if err := stream.RecvMsg(m); err != nil {
+ return err
+ }
+ return srv.(VolthaServiceServer).ReceiveChangeEvents(m, &volthaServiceReceiveChangeEventsServer{stream})
+}
+
+type VolthaService_ReceiveChangeEventsServer interface {
+ Send(*openflow_13.ChangeEvent) error
+ grpc.ServerStream
+}
+
+type volthaServiceReceiveChangeEventsServer struct {
+ grpc.ServerStream
+}
+
+func (x *volthaServiceReceiveChangeEventsServer) Send(m *openflow_13.ChangeEvent) error {
+ return x.ServerStream.SendMsg(m)
+}
+
+func _VolthaService_GetDeviceGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(common.ID)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).GetDeviceGroup(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/GetDeviceGroup",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).GetDeviceGroup(ctx, req.(*common.ID))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_CreateEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(EventFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).CreateEventFilter(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/CreateEventFilter",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).CreateEventFilter(ctx, req.(*EventFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(common.ID)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).GetEventFilter(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/GetEventFilter",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).GetEventFilter(ctx, req.(*common.ID))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_UpdateEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(EventFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).UpdateEventFilter(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/UpdateEventFilter",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).UpdateEventFilter(ctx, req.(*EventFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DeleteEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(EventFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).DeleteEventFilter(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/DeleteEventFilter",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).DeleteEventFilter(ctx, req.(*EventFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListEventFilters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(empty.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).ListEventFilters(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/ListEventFilters",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).ListEventFilters(ctx, req.(*empty.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(common.ID)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).GetImages(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/GetImages",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).GetImages(ctx, req.(*common.ID))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_SelfTest_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(common.ID)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).SelfTest(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/SelfTest",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).SelfTest(ctx, req.(*common.ID))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetMibDeviceData_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(common.ID)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).GetMibDeviceData(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/GetMibDeviceData",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).GetMibDeviceData(ctx, req.(*common.ID))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetAlarmDeviceData_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(common.ID)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).GetAlarmDeviceData(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/GetAlarmDeviceData",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).GetAlarmDeviceData(ctx, req.(*common.ID))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_SimulateAlarm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(SimulateAlarmRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).SimulateAlarm(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/SimulateAlarm",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).SimulateAlarm(ctx, req.(*SimulateAlarmRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_Subscribe_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(OfAgentSubscriber)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).Subscribe(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/Subscribe",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).Subscribe(ctx, req.(*OfAgentSubscriber))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_EnablePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Port)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).EnablePort(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/EnablePort",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).EnablePort(ctx, req.(*Port))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DisablePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Port)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).DisablePort(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/DisablePort",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).DisablePort(ctx, req.(*Port))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+var _VolthaService_serviceDesc = grpc.ServiceDesc{
+ ServiceName: "voltha.VolthaService",
+ HandlerType: (*VolthaServiceServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "UpdateLogLevel",
+ Handler: _VolthaService_UpdateLogLevel_Handler,
+ },
+ {
+ MethodName: "GetLogLevels",
+ Handler: _VolthaService_GetLogLevels_Handler,
+ },
+ {
+ MethodName: "GetMembership",
+ Handler: _VolthaService_GetMembership_Handler,
+ },
+ {
+ MethodName: "UpdateMembership",
+ Handler: _VolthaService_UpdateMembership_Handler,
+ },
+ {
+ MethodName: "GetVoltha",
+ Handler: _VolthaService_GetVoltha_Handler,
+ },
+ {
+ MethodName: "ListCoreInstances",
+ Handler: _VolthaService_ListCoreInstances_Handler,
+ },
+ {
+ MethodName: "GetCoreInstance",
+ Handler: _VolthaService_GetCoreInstance_Handler,
+ },
+ {
+ MethodName: "ListAdapters",
+ Handler: _VolthaService_ListAdapters_Handler,
+ },
+ {
+ MethodName: "ListLogicalDevices",
+ Handler: _VolthaService_ListLogicalDevices_Handler,
+ },
+ {
+ MethodName: "GetLogicalDevice",
+ Handler: _VolthaService_GetLogicalDevice_Handler,
+ },
+ {
+ MethodName: "ListLogicalDevicePorts",
+ Handler: _VolthaService_ListLogicalDevicePorts_Handler,
+ },
+ {
+ MethodName: "GetLogicalDevicePort",
+ Handler: _VolthaService_GetLogicalDevicePort_Handler,
+ },
+ {
+ MethodName: "EnableLogicalDevicePort",
+ Handler: _VolthaService_EnableLogicalDevicePort_Handler,
+ },
+ {
+ MethodName: "DisableLogicalDevicePort",
+ Handler: _VolthaService_DisableLogicalDevicePort_Handler,
+ },
+ {
+ MethodName: "ListLogicalDeviceFlows",
+ Handler: _VolthaService_ListLogicalDeviceFlows_Handler,
+ },
+ {
+ MethodName: "UpdateLogicalDeviceFlowTable",
+ Handler: _VolthaService_UpdateLogicalDeviceFlowTable_Handler,
+ },
+ {
+ MethodName: "UpdateLogicalDeviceMeterTable",
+ Handler: _VolthaService_UpdateLogicalDeviceMeterTable_Handler,
+ },
+ {
+ MethodName: "ListLogicalDeviceMeters",
+ Handler: _VolthaService_ListLogicalDeviceMeters_Handler,
+ },
+ {
+ MethodName: "ListLogicalDeviceFlowGroups",
+ Handler: _VolthaService_ListLogicalDeviceFlowGroups_Handler,
+ },
+ {
+ MethodName: "UpdateLogicalDeviceFlowGroupTable",
+ Handler: _VolthaService_UpdateLogicalDeviceFlowGroupTable_Handler,
+ },
+ {
+ MethodName: "ListDevices",
+ Handler: _VolthaService_ListDevices_Handler,
+ },
+ {
+ MethodName: "ListDeviceIds",
+ Handler: _VolthaService_ListDeviceIds_Handler,
+ },
+ {
+ MethodName: "ReconcileDevices",
+ Handler: _VolthaService_ReconcileDevices_Handler,
+ },
+ {
+ MethodName: "GetDevice",
+ Handler: _VolthaService_GetDevice_Handler,
+ },
+ {
+ MethodName: "CreateDevice",
+ Handler: _VolthaService_CreateDevice_Handler,
+ },
+ {
+ MethodName: "EnableDevice",
+ Handler: _VolthaService_EnableDevice_Handler,
+ },
+ {
+ MethodName: "DisableDevice",
+ Handler: _VolthaService_DisableDevice_Handler,
+ },
+ {
+ MethodName: "RebootDevice",
+ Handler: _VolthaService_RebootDevice_Handler,
+ },
+ {
+ MethodName: "DeleteDevice",
+ Handler: _VolthaService_DeleteDevice_Handler,
+ },
+ {
+ MethodName: "DownloadImage",
+ Handler: _VolthaService_DownloadImage_Handler,
+ },
+ {
+ MethodName: "GetImageDownloadStatus",
+ Handler: _VolthaService_GetImageDownloadStatus_Handler,
+ },
+ {
+ MethodName: "GetImageDownload",
+ Handler: _VolthaService_GetImageDownload_Handler,
+ },
+ {
+ MethodName: "ListImageDownloads",
+ Handler: _VolthaService_ListImageDownloads_Handler,
+ },
+ {
+ MethodName: "CancelImageDownload",
+ Handler: _VolthaService_CancelImageDownload_Handler,
+ },
+ {
+ MethodName: "ActivateImageUpdate",
+ Handler: _VolthaService_ActivateImageUpdate_Handler,
+ },
+ {
+ MethodName: "RevertImageUpdate",
+ Handler: _VolthaService_RevertImageUpdate_Handler,
+ },
+ {
+ MethodName: "ListDevicePorts",
+ Handler: _VolthaService_ListDevicePorts_Handler,
+ },
+ {
+ MethodName: "ListDevicePmConfigs",
+ Handler: _VolthaService_ListDevicePmConfigs_Handler,
+ },
+ {
+ MethodName: "UpdateDevicePmConfigs",
+ Handler: _VolthaService_UpdateDevicePmConfigs_Handler,
+ },
+ {
+ MethodName: "ListDeviceFlows",
+ Handler: _VolthaService_ListDeviceFlows_Handler,
+ },
+ {
+ MethodName: "ListDeviceFlowGroups",
+ Handler: _VolthaService_ListDeviceFlowGroups_Handler,
+ },
+ {
+ MethodName: "ListDeviceTypes",
+ Handler: _VolthaService_ListDeviceTypes_Handler,
+ },
+ {
+ MethodName: "GetDeviceType",
+ Handler: _VolthaService_GetDeviceType_Handler,
+ },
+ {
+ MethodName: "ListDeviceGroups",
+ Handler: _VolthaService_ListDeviceGroups_Handler,
+ },
+ {
+ MethodName: "GetDeviceGroup",
+ Handler: _VolthaService_GetDeviceGroup_Handler,
+ },
+ {
+ MethodName: "CreateEventFilter",
+ Handler: _VolthaService_CreateEventFilter_Handler,
+ },
+ {
+ MethodName: "GetEventFilter",
+ Handler: _VolthaService_GetEventFilter_Handler,
+ },
+ {
+ MethodName: "UpdateEventFilter",
+ Handler: _VolthaService_UpdateEventFilter_Handler,
+ },
+ {
+ MethodName: "DeleteEventFilter",
+ Handler: _VolthaService_DeleteEventFilter_Handler,
+ },
+ {
+ MethodName: "ListEventFilters",
+ Handler: _VolthaService_ListEventFilters_Handler,
+ },
+ {
+ MethodName: "GetImages",
+ Handler: _VolthaService_GetImages_Handler,
+ },
+ {
+ MethodName: "SelfTest",
+ Handler: _VolthaService_SelfTest_Handler,
+ },
+ {
+ MethodName: "GetMibDeviceData",
+ Handler: _VolthaService_GetMibDeviceData_Handler,
+ },
+ {
+ MethodName: "GetAlarmDeviceData",
+ Handler: _VolthaService_GetAlarmDeviceData_Handler,
+ },
+ {
+ MethodName: "SimulateAlarm",
+ Handler: _VolthaService_SimulateAlarm_Handler,
+ },
+ {
+ MethodName: "Subscribe",
+ Handler: _VolthaService_Subscribe_Handler,
+ },
+ {
+ MethodName: "EnablePort",
+ Handler: _VolthaService_EnablePort_Handler,
+ },
+ {
+ MethodName: "DisablePort",
+ Handler: _VolthaService_DisablePort_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{
+ {
+ StreamName: "StreamPacketsOut",
+ Handler: _VolthaService_StreamPacketsOut_Handler,
+ ClientStreams: true,
+ },
+ {
+ StreamName: "ReceivePacketsIn",
+ Handler: _VolthaService_ReceivePacketsIn_Handler,
+ ServerStreams: true,
+ },
+ {
+ StreamName: "ReceiveChangeEvents",
+ Handler: _VolthaService_ReceiveChangeEvents_Handler,
+ ServerStreams: true,
+ },
+ },
+ Metadata: "voltha_protos/voltha.proto",
+}