Committing vendored dependencies and generated protos
Change-Id: I349c149b513d9de7d9f60bde2c954a939da2fc54
diff --git a/vendor/github.com/opencord/omci-sim/omci_defs.go b/vendor/github.com/opencord/omci-sim/omci_defs.go
new file mode 100644
index 0000000..44347ef
--- /dev/null
+++ b/vendor/github.com/opencord/omci-sim/omci_defs.go
@@ -0,0 +1,224 @@
+/*
+ * 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 core
+
+import (
+ "bytes"
+ "encoding/binary"
+ "errors"
+ "fmt"
+ log "github.com/sirupsen/logrus"
+)
+
+// OMCI Sim definitions
+
+type ChMessageType int
+
+const (
+ GemPortAdded ChMessageType = iota
+)
+
+func (m ChMessageType) String() string {
+ names := [...]string{
+ "GemPortAdded",
+ }
+ return names[m]
+}
+
+type OmciChMessageData struct {
+ IntfId uint32
+ OnuId uint32
+}
+
+type OmciChMessage struct {
+ Type ChMessageType
+ Data OmciChMessageData
+}
+
+//
+// OMCI definitions
+//
+
+// OmciMsgType represents a OMCI message-type
+type OmciMsgType byte
+
+func (t OmciMsgType) PrettyPrint() string {
+ switch t {
+ case Create:
+ return "Create"
+ case Delete:
+ return "Delete"
+ case Set:
+ return "Set"
+ case Get:
+ return "Get"
+ case GetAllAlarms:
+ return "GetAllAlarms"
+ case GetAllAlarmsNext:
+ return "GetAllAlarmsNext"
+ case MibUpload:
+ return "MibUpload"
+ case MibUploadNext:
+ return "MibUploadNext"
+ case MibReset:
+ return "MibReset"
+ case AlarmNotification:
+ return "AlarmNotification"
+ case AttributeValueChange:
+ return "AttributeValueChange"
+ case Test:
+ return "Test"
+ case StartSoftwareDownload:
+ return "StartSoftwareDownload"
+ case DownloadSection:
+ return "DownloadSection"
+ case EndSoftwareDownload:
+ return "EndSoftwareDownload"
+ case ActivateSoftware:
+ return "ActivateSoftware"
+ case CommitSoftware:
+ return "CommitSoftware"
+ case SynchronizeTime:
+ return "SynchronizeTime"
+ case Reboot:
+ return "Reboot"
+ case GetNext:
+ return "GetNext"
+ case TestResult:
+ return "TestResult"
+ case GetCurrentData:
+ return "GetCurrentData"
+ case SetTable:
+ return "SetTable"
+ default:
+ // FIXME
+ // msg="Cant't convert state 68 to string"
+ // msg="Cant't convert state 72 to string"
+ // msg="Cant't convert state 73 to string"
+ // msg="Cant't convert state 75 to string"
+ // msg="Cant't convert state 76 to string"
+ // msg="Cant't convert state 77 to string"
+ // msg="Cant't convert state 78 to string"
+ // msg="Cant't convert state 79 to string"
+ // msg="Cant't convert state 88 to string"
+
+ log.Tracef("Cant't convert OmciMsgType %v to string", t)
+ return string(t)
+ }
+}
+
+const (
+ // Message Types
+ _ = iota
+ Create OmciMsgType = 4
+ Delete OmciMsgType = 6
+ Set OmciMsgType = 8
+ Get OmciMsgType = 9
+ GetAllAlarms OmciMsgType = 11
+ GetAllAlarmsNext OmciMsgType = 12
+ MibUpload OmciMsgType = 13
+ MibUploadNext OmciMsgType = 14
+ MibReset OmciMsgType = 15
+ AlarmNotification OmciMsgType = 16
+ AttributeValueChange OmciMsgType = 17
+ Test OmciMsgType = 18
+ StartSoftwareDownload OmciMsgType = 19
+ DownloadSection OmciMsgType = 20
+ EndSoftwareDownload OmciMsgType = 21
+ ActivateSoftware OmciMsgType = 22
+ CommitSoftware OmciMsgType = 23
+ SynchronizeTime OmciMsgType = 24
+ Reboot OmciMsgType = 25
+ GetNext OmciMsgType = 26
+ TestResult OmciMsgType = 27
+ GetCurrentData OmciMsgType = 28
+ SetTable OmciMsgType = 29 // Defined in Extended Message Set Only
+)
+
+
+// OMCI Managed Entity Class
+type OmciClass uint16
+
+func (c OmciClass) PrettyPrint() string {
+ switch c {
+ case EthernetPMHistoryData:
+ return "EthernetPMHistoryData"
+ case ONUG:
+ return "ONUG"
+ case ANIG:
+ return "ANIG"
+ case GEMPortNetworkCTP:
+ return "GEMPortNetworkCTP"
+ default:
+ log.Tracef("Cant't convert OmciClass %v to string", c)
+ return string(c)
+ }
+}
+
+const (
+ // Managed Entity Class values
+ EthernetPMHistoryData OmciClass = 24
+ ONUG OmciClass = 256
+ ANIG OmciClass = 263
+ GEMPortNetworkCTP OmciClass = 268
+)
+
+// OMCI Message Identifier
+type OmciMessageIdentifier struct {
+ Class OmciClass
+ Instance uint16
+}
+
+type OmciContent [32]byte
+
+type OmciMessage struct {
+ TransactionId uint16
+ MessageType OmciMsgType
+ DeviceId uint8
+ MessageId OmciMessageIdentifier
+ Content OmciContent
+}
+
+func ParsePkt(pkt []byte) (uint16, uint8, OmciMsgType, OmciClass, uint16, OmciContent, error) {
+ var m OmciMessage
+
+ r := bytes.NewReader(pkt)
+
+ if err := binary.Read(r, binary.BigEndian, &m); err != nil {
+ log.WithFields(log.Fields{
+ "Packet": pkt,
+ "omciMsg": fmt.Sprintf("%x", pkt),
+ }).Errorf("Failed to read packet: %s", err)
+ return 0, 0, 0, 0, 0, OmciContent{}, errors.New("Failed to read packet")
+ }
+ /* Message Type = Set
+ 0... .... = Destination Bit: 0x0
+ .1.. .... = Acknowledge Request: 0x1
+ ..0. .... = Acknowledgement: 0x0
+ ...0 1000 = Message Type: Set (8)
+ */
+
+ log.WithFields(log.Fields{
+ "TransactionId": m.TransactionId,
+ "MessageType": m.MessageType.PrettyPrint(),
+ "MeClass": m.MessageId.Class,
+ "MeInstance": m.MessageId.Instance,
+ "Conent": m.Content,
+ "Packet": pkt,
+ }).Tracef("Parsing OMCI Packet")
+
+ return m.TransactionId, m.DeviceId, m.MessageType & 0x1F, m.MessageId.Class, m.MessageId.Instance, m.Content, nil
+}