First version of BBSim
Change-Id: I003b5cc4da090ba4631da65da2b513311648d667
VOL-813: gRPC server in BBSim (Broad Band Sim)
diff --git a/README b/README
new file mode 100644
index 0000000..0b186af
--- /dev/null
+++ b/README
@@ -0,0 +1,85 @@
+# 1. Overview
+
+The BBSim (Broadband Simulator) is for emulating the control message response sent from OLTs and ONUs which are connected to VOLTHA Adapter.
+It is implemetend as a software process which runs outside VOLTHA, and acts as if it was multiple OLTs and ONUs.
+This enables the scalability test of VOLTHA without actual hardware OLTs / ONUs.
+The difference from the existing PONsim is to focus on emulating control messages, not data-path traffic which PONsim targets.
+
+It currently supports the following VOLTHA mode:
+(Reference to https://github.com/opencord/voltha/blob/master/BUILD.md)
+* Run in stand-alone mode
+* Run with the "voltha ensamble"
+
+**Please note: Kubernetes mode is NOT supported by the current version.**
+
+==============
+VOLTHA
+OpenOLT Adapter
+==============
+|||
+||| gRPC connections
+|||
+==============
+BBSim
+==============
+
+# 2. PON Simulator Usage
+
+```
+Usage of ./bbsim:
+ -H
+ IP and Port number which BBSim listens (default 172.17.0.1:50060)
+ -N
+ Number of OLTs
+ -i
+ Number of PON interfaces provided per OLT
+ -n
+ Number of ONUs per PON interface
+```
+
+# 3. Requirements
+
+# Golang Installation
+
+If you plan on running the simulator locally, i.e. not in a container, you will need to first
+install setup Golang on your system. Install using existing packages for your operating system
+or issue the following commands (Linux).
+
+```
+cd /tmp
+wget https://storage.googleapis.com/golang/go1.9.3.linux-amd64.tar.gz
+tar -C /usr/local -xzf /tmp/go1.9.3.linux-amd64.tar.gz
+rm -f /tmp/go1.9.3.linux-amd64.tar.gz
+mkdir ~/go
+```
+
+Edit your profile (e.g. .bashrc) and add the following configuration
+
+```
+export GOROOT=/usr/local/go
+export GOPATH=~/go
+export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
+```
+
+# 4. Run BBSim and VOLTHA-CLI commands
+
+```
+# in VOLTHA docker
+cd /cord/incubator/voltha/voltha/bbsim
+./bbsim -H 172.17.0.1:50060 -N 1 -i 1 -n 16
+
+# After this, execute the following commands from VOLTHA-CLI
+(voltha) health
+{
+ "state": "HEALTHY"
+}
+(voltha) preprovision_olt -t openolt -H 172.17.0.1:50060
+success (device id = <deviceid>)
+(voltha) enable
+enabling <deviceid>
+waiting for device to be enabled...
+success (device id = <deviceid>)
+(voltha) devices
+## You can see the list of devices (OLT/ONUs) ##
+```
+
diff --git a/bbsim b/bbsim
new file mode 100755
index 0000000..de97c50
--- /dev/null
+++ b/bbsim
Binary files differ
diff --git a/bbsim.go b/bbsim.go
new file mode 100755
index 0000000..2466dbb
--- /dev/null
+++ b/bbsim.go
@@ -0,0 +1,310 @@
+package main
+
+import (
+ "./openolt"
+ "log"
+ "net"
+ "google.golang.org/grpc"
+ "golang.org/x/net/context"
+ "fmt"
+ "flag"
+ "reflect"
+ "time"
+ "strings"
+ "strconv"
+ "sync"
+)
+
+type server struct{
+ olt olt
+ onus map[uint32][]onu
+}
+
+
+type oltState int
+
+const(
+ PRE_ENABLE oltState = iota
+ OLT_UP
+ PONIF_UP
+ ONU_DISCOVERED
+)
+
+
+//a
+type olt struct {
+ ID uint32
+ NumPonIntf uint32
+ NumNniIntf uint32
+ Mac string
+ SerialNumber string
+ Manufacture string
+ Name string
+ internalState oltState
+ OperState string
+ Intfs []intf
+ HeartbeatSignature uint32
+}
+
+type intf struct{
+ Type string
+ IntfID uint32
+ OperState string
+}
+
+type onu struct{
+ IntfID uint32
+ OperState string
+ SerialNumber *openolt.SerialNumber
+}
+
+func createOlt(oltid uint32, npon uint32, nnni uint32) olt{
+ olt := olt {}
+ olt.ID = oltid
+ olt.NumPonIntf = npon
+ olt.NumNniIntf = nnni
+ olt.Name = "BBSIM OLT"
+ olt.internalState = PRE_ENABLE
+ olt.OperState = "up"
+ olt.Intfs = make([]intf, olt.NumPonIntf + olt.NumNniIntf)
+ olt.HeartbeatSignature = oltid
+ for i := uint32(0); i < olt.NumPonIntf; i ++ {
+ olt.Intfs[i].IntfID = i
+ olt.Intfs[i].OperState = "up"
+ olt.Intfs[i].Type = "pon"
+ }
+ for i := uint32(olt.NumPonIntf); i < olt.NumPonIntf + olt.NumNniIntf; i ++ {
+ olt.Intfs[i].IntfID = i
+ olt.Intfs[i].OperState = "up"
+ olt.Intfs[i].Type = "nni"
+ }
+ return olt
+}
+
+func createSN(oltid uint32, intfid uint32, onuid uint32) string{
+ sn := fmt.Sprintf("%X%X%02X", oltid, intfid, onuid)
+ return sn
+}
+
+func createOnus(oltid uint32, intfid uint32, nonus uint32) [] onu {
+ onus := make([]onu ,nonus)
+ for onuid := uint32(0); onuid < nonus; onuid ++ {
+ onus[onuid].IntfID = intfid
+ onus[onuid].OperState = "down"
+ onus[onuid].SerialNumber = new(openolt.SerialNumber)
+ onus[onuid].SerialNumber.VendorId = []byte("BRCM")
+ onus[onuid].SerialNumber.VendorSpecific = []byte(createSN(oltid, intfid, uint32(onuid))) //FIX
+ }
+ return onus
+}
+
+func validateONU(targetonu openolt.Onu, regonus map[uint32][]onu) bool{
+ for _, onus := range regonus{
+ for _, onu := range onus{
+ if validateSN(*targetonu.SerialNumber, *onu.SerialNumber){
+ return true
+ }
+ }
+ }
+ return false
+}
+
+func validateSN(sn1 openolt.SerialNumber, sn2 openolt.SerialNumber) bool{
+ return reflect.DeepEqual(sn1.VendorId, sn2.VendorId) && reflect.DeepEqual(sn1.VendorSpecific, sn2.VendorSpecific)
+}
+
+
+func updateOnusOpStatus(ponif uint32, onus [] onu, opstatus string){
+ for i, onu := range onus{
+ onu.OperState = "up"
+ log.Printf("(PONIF:%d) ONU [%d] %v discovered.\n", ponif, i, onu.SerialNumber)
+ }
+}
+
+func activateOLT(s *server, stream openolt.Openolt_EnableIndicationServer) error{
+ // Activate OLT
+ olt := &s.olt
+ onus := s.onus
+ if err := sendOltInd(stream, olt); err != nil {
+ return err
+ }
+ olt.OperState = "up"
+ olt.internalState = OLT_UP
+ log.Printf("OLT %s sent OltInd.\n", olt.Name)
+
+
+ // OLT sends Interface Indication to Adapter
+ if err := sendIntfInd(stream, olt); err != nil {
+ return err
+ }
+ log.Printf("OLT %s sent IntfInd.\n", olt.Name)
+
+ // OLT sends Operation Indication to Adapter after activating each interface
+ //time.Sleep(IF_UP_TIME * time.Second)
+ olt.internalState = PONIF_UP
+ if err := sendOperInd(stream, olt); err != nil {
+ return err
+ }
+ log.Printf("OLT %s sent OperInd.\n", olt.Name)
+
+ // OLT sends ONU Discover Indication to Adapter after ONU discovery
+ for intfid := uint32(0); intfid < olt.NumPonIntf; intfid ++ {
+ updateOnusOpStatus(intfid, onus[intfid], "up")
+ }
+
+ for intfid := uint32(0); intfid < olt.NumPonIntf; intfid ++ {
+ sendOnuDiscInd(stream, onus[intfid])
+ log.Printf("OLT id:%d sent ONUDiscInd.\n", olt.ID)
+ }
+ olt.internalState = ONU_DISCOVERED
+ return nil
+}
+
+func sendOltInd(stream openolt.Openolt_EnableIndicationServer, olt *olt) error{
+ data := &openolt.Indication_OltInd{OltInd: &openolt.OltIndication{OperState: "up"}}
+ if err := stream.Send(&openolt.Indication{Data: data}); err != nil {
+ log.Printf("Failed to send OLT indication: %v\n", err)
+ return err
+ }
+ return nil
+}
+
+func sendIntfInd(stream openolt.Openolt_EnableIndicationServer, olt *olt) error{
+ for i := uint32(0); i < olt.NumPonIntf + olt.NumNniIntf; i ++ {
+ intf := olt.Intfs[i]
+ data := &openolt.Indication_IntfInd{&openolt.IntfIndication{IntfId: intf.IntfID, OperState: intf.OperState}}
+ if err := stream.Send(&openolt.Indication{Data: data}); err != nil {
+ log.Printf("Failed to send Intf [id: %d] indication : %v\n", i, err)
+ return err
+ }
+ }
+ return nil
+}
+
+func sendOperInd(stream openolt.Openolt_EnableIndicationServer, olt *olt) error{
+ for i := uint32(0); i < olt.NumPonIntf + olt.NumNniIntf; i ++ {
+ intf := olt.Intfs[i]
+ data := &openolt.Indication_IntfOperInd{&openolt.IntfOperIndication{Type: intf.Type, IntfId: intf.IntfID, OperState: intf.OperState}}
+ if err := stream.Send(&openolt.Indication{Data: data}); err != nil {
+ log.Printf("Failed to send IntfOper [id: %d] indication : %v\n", i, err)
+ return err
+ }
+ }
+ return nil
+}
+
+func sendOnuDiscInd(stream openolt.Openolt_EnableIndicationServer, onus [] onu) error{
+ for i, onu := range onus {
+ data := &openolt.Indication_OnuDiscInd{&openolt.OnuDiscIndication{IntfId: onu.IntfID, SerialNumber:onu.SerialNumber}}
+ log.Printf("sendONUDiscInd Onuid: %d\n", i)
+ if err := stream.Send(&openolt.Indication{Data: data}); err != nil {
+ log.Printf("Failed to send ONUDiscInd [id: %d]: %v\n", i, err)
+ return err
+ }
+ }
+ return nil
+}
+
+func newServer(oltid uint32, npon uint32, nonus uint32) *server{
+ s := new(server)
+ s.olt = createOlt(oltid, npon, 1)
+ log.Printf("OLT ID: %d was retrieved.\n", s.olt.ID)
+
+ s.onus = make(map[uint32][]onu)
+ for intfid := uint32(0); intfid < npon; intfid ++ {
+ s.onus[intfid] = createOnus(oltid, intfid, nonus)
+ }
+ return s
+}
+
+func printBanner(){
+ log.Println(" ________ _______ ________ ")
+ log.Println(" / ____ | / ____ | / ______/ __ ")
+ log.Println(" / /____/ / / /____/ / / /_____ /_/ ")
+ log.Println(" / _____ | / _____ | /______ | __ __________ ")
+ log.Println(" / /____/ / / /____/ / _______/ / / / / __ __ / ")
+ log.Println("/________/ /________/ /________/ /_/ /_/ /_/ /_/ ")
+}
+
+func getOptions()(string, uint32, uint32, uint32, uint32){
+ var(
+ addressport = flag.String("H","172.17.0.1:50060","IP address:port")
+ address = strings.Split(*addressport, ":")[0]
+ port,_ = strconv.Atoi(strings.Split(*addressport, ":")[1])
+ nolts = flag.Int("N", 1, "Number of OLTs")
+ nports = flag.Int("i", 1, "Number of PON-IF ports")
+ nonus = flag.Int("n", 1, "Number of ONUs per PON-IF port")
+ )
+
+
+ flag.Parse()
+ //fmt.Println("nports:", *nports, "nonus:", *nonus)
+ return address, uint32(port), uint32(*nolts), uint32(*nports), uint32(*nonus)
+}
+
+
+// gRPC Service
+func (s *server) ActivateOnu(c context.Context, onu *openolt.Onu) (*openolt.Empty, error){
+ log.Printf("OLT receives ActivateONU()")
+ result := validateONU(*onu, s.onus)
+ if result == true {
+ log.Printf("ONU %d activated succesufully.\n", onu.OnuId)
+ }
+ return new(openolt.Empty), nil
+}
+
+func (s *server)OmciMsgOut(c context.Context, msg *openolt.OmciMsg)(*openolt.Empty, error){
+ return new(openolt.Empty), nil
+}
+
+func (s *server) OnuPacketOut(c context.Context, packet *openolt.OnuPacket)(*openolt.Empty, error){
+ return new(openolt.Empty), nil
+}
+
+func (s *server) FlowAdd(c context.Context, flow *openolt.Flow)(*openolt.Empty, error){
+ return new(openolt.Empty), nil
+}
+
+func (s *server) EnableIndication(empty *openolt.Empty, stream openolt.Openolt_EnableIndicationServer) error {
+ log.Printf("OLT receives EnableInd.\n")
+ if err := activateOLT(s, stream); err != nil {
+ log.Printf("Failed to activate OLT: %v\n", err)
+ return err
+ }
+ for ;;{
+ //if err := sendIntfInd(stream, &s.olt); err != nil{
+ // return err
+ //}
+ time.Sleep(1 * time.Second)
+ }
+ return nil
+}
+
+func (s *server) HeartbeatCheck(c context.Context, empty *openolt.Empty) (*openolt.Heartbeat, error){
+ log.Printf("OLT receives HeartbeatCheck.\n")
+ signature := new(openolt.Heartbeat)
+ signature.HeartbeatSignature = s.olt.HeartbeatSignature
+ return signature, nil
+}
+
+func main() {
+ printBanner()
+ ipaddress, baseport, nolts, npon, nonus := getOptions()
+ log.Printf("ip:%s, baseport:%d, nolts:%d, npon:%d, nonus:%d\n", ipaddress, baseport, nolts, npon, nonus)
+ servers := make([] *server, nolts)
+ grpcservers := make([] *grpc.Server, nolts)
+ lis := make([] net.Listener, nolts)
+ var wg sync.WaitGroup
+ wg.Add(int(nolts))
+ for oltid := uint32(0); oltid < nolts; oltid ++ {
+ portnum := baseport + oltid
+ addressport := ipaddress + ":" + strconv.Itoa(int(portnum))
+ log.Printf("Listening %s ...", addressport)
+ lis[oltid], _ = net.Listen("tcp", addressport)
+ servers[oltid] = newServer(oltid, npon, nonus)
+ grpcservers[oltid] = grpc.NewServer()
+ openolt.RegisterOpenoltServer(grpcservers[oltid], servers[oltid])
+ go grpcservers[oltid].Serve(lis[oltid])
+ }
+ wg.Wait()
+}
diff --git a/openolt.proto b/openolt.proto
new file mode 100644
index 0000000..a7915c8
--- /dev/null
+++ b/openolt.proto
@@ -0,0 +1,184 @@
+// Copyright (c) 2018 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.
+
+syntax = "proto3";
+package openolt;
+import "google/api/annotations.proto";
+
+service Openolt {
+
+ rpc ActivateOnu(Onu) returns (Empty) {
+ option (google.api.http) = {
+ post: "/v1/EnableOnu"
+ body: "*"
+ };
+ }
+
+ rpc OmciMsgOut(OmciMsg) returns (Empty) {
+ option (google.api.http) = {
+ post: "/v1/OmciMsgOut"
+ body: "*"
+ };
+ }
+
+ rpc OnuPacketOut(OnuPacket) returns (Empty) {
+ option (google.api.http) = {
+ post: "/v1/OnuPacketOut"
+ body: "*"
+ };
+ }
+
+ rpc FlowAdd(Flow) returns (Empty) {
+ option (google.api.http) = {
+ post: "/v1/FlowAdd"
+ body: "*"
+ };
+ }
+
+ rpc HeartbeatCheck(Empty) returns (Heartbeat) {
+ option (google.api.http) = {
+ post: "/v1/HeartbeatCheck"
+ body: "*"
+ };
+ }
+
+ rpc EnableIndication(Empty) returns (stream Indication) {}
+}
+
+message Indication {
+ oneof data {
+ OltIndication olt_ind = 1;
+ IntfIndication intf_ind = 2;
+ IntfOperIndication intf_oper_ind = 3;
+ OnuDiscIndication onu_disc_ind = 4;
+ OnuIndication onu_ind = 5;
+ OmciIndication omci_ind = 6;
+ PacketIndication pkt_ind = 7;
+ }
+}
+
+message OltIndication {
+ string oper_state = 1; // up, down
+}
+
+message IntfIndication {
+ fixed32 intf_id = 1;
+ string oper_state = 2; // up, down
+}
+
+message OnuDiscIndication {
+ fixed32 intf_id = 1;
+ SerialNumber serial_number = 2;
+}
+
+message OnuIndication {
+ fixed32 intf_id = 1;
+ fixed32 onu_id = 2;
+ string oper_state = 3; // up, down
+ string admin_state = 5; // up, down
+ SerialNumber serial_number = 4;
+}
+
+message IntfOperIndication {
+ string type = 1; // nni, pon
+ fixed32 intf_id = 2;
+ string oper_state = 3; // up, down
+}
+
+message OmciIndication {
+ fixed32 intf_id = 1;
+ fixed32 onu_id = 2;
+ bytes pkt = 3;
+}
+
+message PacketIndication {
+ fixed32 intf_id = 1;
+ fixed32 gemport_id = 2;
+ fixed32 flow_id = 3;
+ bytes pkt = 4;
+}
+
+message Heartbeat {
+ fixed32 heartbeat_signature = 1;
+}
+
+message Onu {
+ fixed32 intf_id = 1;
+ fixed32 onu_id = 2;
+ SerialNumber serial_number = 3;
+}
+
+message OmciMsg {
+ fixed32 intf_id = 1;
+ fixed32 onu_id = 2;
+ bytes pkt = 3;
+}
+
+message OnuPacket {
+ fixed32 intf_id = 1;
+ fixed32 onu_id = 2;
+ bytes pkt = 3;
+}
+
+message Classifier {
+ fixed32 o_tpid = 1;
+ fixed32 o_vid = 2;
+ fixed32 i_tpid = 3;
+ fixed32 i_vid = 4;
+ fixed32 o_pbits = 5;
+ fixed32 i_pbits = 6;
+ fixed32 eth_type = 7;
+ bytes dst_mac = 8;
+ bytes src_mac = 9;
+ fixed32 ip_proto = 10;
+ fixed32 dst_ip = 11;
+ fixed32 src_ip = 12;
+ fixed32 src_port = 13;
+ fixed32 dst_port = 14;
+ string pkt_tag_type = 15; // untagged, single_tag, double_tag
+}
+
+message ActionCmd {
+ bool add_outer_tag = 1;
+ bool remove_outer_tag = 2;
+ bool trap_to_host = 3;
+}
+
+message Action {
+ ActionCmd cmd = 1;
+ fixed32 o_vid = 2;
+ fixed32 o_pbits = 3;
+ fixed32 o_tpid = 4;
+ fixed32 i_vid = 5;
+ fixed32 i_pbits = 6;
+ fixed32 i_tpid = 7;
+}
+
+message Flow {
+ fixed32 access_intf_id = 1;
+ fixed32 onu_id = 2;
+ fixed32 flow_id = 3;
+ string flow_type = 4; // upstream, downstream, broadcast, multicast
+ fixed32 network_intf_id = 5;
+ fixed32 gemport_id = 6;
+ Classifier classifier = 7;
+ Action action = 8;
+}
+
+message SerialNumber {
+ bytes vendor_id = 1;
+ bytes vendor_specific = 2;
+}
+
+message Empty {}
diff --git a/openolt/openolt.pb.go b/openolt/openolt.pb.go
new file mode 100644
index 0000000..2295262
--- /dev/null
+++ b/openolt/openolt.pb.go
@@ -0,0 +1,1720 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: openolt.proto
+
+package openolt
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+
+import (
+ context "golang.org/x/net/context"
+ grpc "google.golang.org/grpc"
+)
+
+// 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.ProtoPackageIsVersion2 // please upgrade the proto package
+
+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
+ 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_openolt_ed29c14f0520a323, []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 (dst *Indication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Indication.Merge(dst, 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,oneof"`
+}
+type Indication_IntfInd struct {
+ IntfInd *IntfIndication `protobuf:"bytes,2,opt,name=intf_ind,json=intfInd,oneof"`
+}
+type Indication_IntfOperInd struct {
+ IntfOperInd *IntfOperIndication `protobuf:"bytes,3,opt,name=intf_oper_ind,json=intfOperInd,oneof"`
+}
+type Indication_OnuDiscInd struct {
+ OnuDiscInd *OnuDiscIndication `protobuf:"bytes,4,opt,name=onu_disc_ind,json=onuDiscInd,oneof"`
+}
+type Indication_OnuInd struct {
+ OnuInd *OnuIndication `protobuf:"bytes,5,opt,name=onu_ind,json=onuInd,oneof"`
+}
+type Indication_OmciInd struct {
+ OmciInd *OmciIndication `protobuf:"bytes,6,opt,name=omci_ind,json=omciInd,oneof"`
+}
+type Indication_PktInd struct {
+ PktInd *PacketIndication `protobuf:"bytes,7,opt,name=pkt_ind,json=pktInd,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 (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
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*Indication) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+ return _Indication_OneofMarshaler, _Indication_OneofUnmarshaler, _Indication_OneofSizer, []interface{}{
+ (*Indication_OltInd)(nil),
+ (*Indication_IntfInd)(nil),
+ (*Indication_IntfOperInd)(nil),
+ (*Indication_OnuDiscInd)(nil),
+ (*Indication_OnuInd)(nil),
+ (*Indication_OmciInd)(nil),
+ (*Indication_PktInd)(nil),
+ }
+}
+
+func _Indication_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+ m := msg.(*Indication)
+ // data
+ switch x := m.Data.(type) {
+ case *Indication_OltInd:
+ b.EncodeVarint(1<<3 | proto.WireBytes)
+ if err := b.EncodeMessage(x.OltInd); err != nil {
+ return err
+ }
+ case *Indication_IntfInd:
+ b.EncodeVarint(2<<3 | proto.WireBytes)
+ if err := b.EncodeMessage(x.IntfInd); err != nil {
+ return err
+ }
+ case *Indication_IntfOperInd:
+ b.EncodeVarint(3<<3 | proto.WireBytes)
+ if err := b.EncodeMessage(x.IntfOperInd); err != nil {
+ return err
+ }
+ case *Indication_OnuDiscInd:
+ b.EncodeVarint(4<<3 | proto.WireBytes)
+ if err := b.EncodeMessage(x.OnuDiscInd); err != nil {
+ return err
+ }
+ case *Indication_OnuInd:
+ b.EncodeVarint(5<<3 | proto.WireBytes)
+ if err := b.EncodeMessage(x.OnuInd); err != nil {
+ return err
+ }
+ case *Indication_OmciInd:
+ b.EncodeVarint(6<<3 | proto.WireBytes)
+ if err := b.EncodeMessage(x.OmciInd); err != nil {
+ return err
+ }
+ case *Indication_PktInd:
+ b.EncodeVarint(7<<3 | proto.WireBytes)
+ if err := b.EncodeMessage(x.PktInd); err != nil {
+ return err
+ }
+ case nil:
+ default:
+ return fmt.Errorf("Indication.Data has unexpected type %T", x)
+ }
+ return nil
+}
+
+func _Indication_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+ m := msg.(*Indication)
+ switch tag {
+ case 1: // data.olt_ind
+ if wire != proto.WireBytes {
+ return true, proto.ErrInternalBadWireType
+ }
+ msg := new(OltIndication)
+ err := b.DecodeMessage(msg)
+ m.Data = &Indication_OltInd{msg}
+ return true, err
+ case 2: // data.intf_ind
+ if wire != proto.WireBytes {
+ return true, proto.ErrInternalBadWireType
+ }
+ msg := new(IntfIndication)
+ err := b.DecodeMessage(msg)
+ m.Data = &Indication_IntfInd{msg}
+ return true, err
+ case 3: // data.intf_oper_ind
+ if wire != proto.WireBytes {
+ return true, proto.ErrInternalBadWireType
+ }
+ msg := new(IntfOperIndication)
+ err := b.DecodeMessage(msg)
+ m.Data = &Indication_IntfOperInd{msg}
+ return true, err
+ case 4: // data.onu_disc_ind
+ if wire != proto.WireBytes {
+ return true, proto.ErrInternalBadWireType
+ }
+ msg := new(OnuDiscIndication)
+ err := b.DecodeMessage(msg)
+ m.Data = &Indication_OnuDiscInd{msg}
+ return true, err
+ case 5: // data.onu_ind
+ if wire != proto.WireBytes {
+ return true, proto.ErrInternalBadWireType
+ }
+ msg := new(OnuIndication)
+ err := b.DecodeMessage(msg)
+ m.Data = &Indication_OnuInd{msg}
+ return true, err
+ case 6: // data.omci_ind
+ if wire != proto.WireBytes {
+ return true, proto.ErrInternalBadWireType
+ }
+ msg := new(OmciIndication)
+ err := b.DecodeMessage(msg)
+ m.Data = &Indication_OmciInd{msg}
+ return true, err
+ case 7: // data.pkt_ind
+ if wire != proto.WireBytes {
+ return true, proto.ErrInternalBadWireType
+ }
+ msg := new(PacketIndication)
+ err := b.DecodeMessage(msg)
+ m.Data = &Indication_PktInd{msg}
+ return true, err
+ default:
+ return false, nil
+ }
+}
+
+func _Indication_OneofSizer(msg proto.Message) (n int) {
+ m := msg.(*Indication)
+ // data
+ switch x := m.Data.(type) {
+ case *Indication_OltInd:
+ s := proto.Size(x.OltInd)
+ n += 1 // tag and wire
+ n += proto.SizeVarint(uint64(s))
+ n += s
+ case *Indication_IntfInd:
+ s := proto.Size(x.IntfInd)
+ n += 1 // tag and wire
+ n += proto.SizeVarint(uint64(s))
+ n += s
+ case *Indication_IntfOperInd:
+ s := proto.Size(x.IntfOperInd)
+ n += 1 // tag and wire
+ n += proto.SizeVarint(uint64(s))
+ n += s
+ case *Indication_OnuDiscInd:
+ s := proto.Size(x.OnuDiscInd)
+ n += 1 // tag and wire
+ n += proto.SizeVarint(uint64(s))
+ n += s
+ case *Indication_OnuInd:
+ s := proto.Size(x.OnuInd)
+ n += 1 // tag and wire
+ n += proto.SizeVarint(uint64(s))
+ n += s
+ case *Indication_OmciInd:
+ s := proto.Size(x.OmciInd)
+ n += 1 // tag and wire
+ n += proto.SizeVarint(uint64(s))
+ n += s
+ case *Indication_PktInd:
+ s := proto.Size(x.PktInd)
+ n += 1 // tag and wire
+ n += proto.SizeVarint(uint64(s))
+ n += s
+ case nil:
+ default:
+ panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+ }
+ return n
+}
+
+type OltIndication struct {
+ OperState string `protobuf:"bytes,1,opt,name=oper_state,json=operState" 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_openolt_ed29c14f0520a323, []int{1}
+}
+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 (dst *OltIndication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OltIndication.Merge(dst, 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" json:"intf_id,omitempty"`
+ OperState string `protobuf:"bytes,2,opt,name=oper_state,json=operState" 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_openolt_ed29c14f0520a323, []int{2}
+}
+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 (dst *IntfIndication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_IntfIndication.Merge(dst, 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" json:"intf_id,omitempty"`
+ SerialNumber *SerialNumber `protobuf:"bytes,2,opt,name=serial_number,json=serialNumber" 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_openolt_ed29c14f0520a323, []int{3}
+}
+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 (dst *OnuDiscIndication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OnuDiscIndication.Merge(dst, 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" json:"intf_id,omitempty"`
+ OnuId uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId" json:"onu_id,omitempty"`
+ OperState string `protobuf:"bytes,3,opt,name=oper_state,json=operState" json:"oper_state,omitempty"`
+ AdminState string `protobuf:"bytes,5,opt,name=admin_state,json=adminState" json:"admin_state,omitempty"`
+ SerialNumber *SerialNumber `protobuf:"bytes,4,opt,name=serial_number,json=serialNumber" 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_openolt_ed29c14f0520a323, []int{4}
+}
+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 (dst *OnuIndication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OnuIndication.Merge(dst, 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" json:"type,omitempty"`
+ IntfId uint32 `protobuf:"fixed32,2,opt,name=intf_id,json=intfId" json:"intf_id,omitempty"`
+ OperState string `protobuf:"bytes,3,opt,name=oper_state,json=operState" 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_openolt_ed29c14f0520a323, []int{5}
+}
+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 (dst *IntfOperIndication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_IntfOperIndication.Merge(dst, 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" json:"intf_id,omitempty"`
+ OnuId uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId" 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_openolt_ed29c14f0520a323, []int{6}
+}
+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 (dst *OmciIndication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OmciIndication.Merge(dst, 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 {
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId" json:"intf_id,omitempty"`
+ GemportId uint32 `protobuf:"fixed32,2,opt,name=gemport_id,json=gemportId" json:"gemport_id,omitempty"`
+ FlowId uint32 `protobuf:"fixed32,3,opt,name=flow_id,json=flowId" json:"flow_id,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_openolt_ed29c14f0520a323, []int{7}
+}
+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 (dst *PacketIndication) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_PacketIndication.Merge(dst, 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) 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) GetPkt() []byte {
+ if m != nil {
+ return m.Pkt
+ }
+ return nil
+}
+
+type Heartbeat struct {
+ HeartbeatSignature uint32 `protobuf:"fixed32,1,opt,name=heartbeat_signature,json=heartbeatSignature" 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_openolt_ed29c14f0520a323, []int{8}
+}
+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 (dst *Heartbeat) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Heartbeat.Merge(dst, 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" json:"intf_id,omitempty"`
+ OnuId uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId" json:"onu_id,omitempty"`
+ SerialNumber *SerialNumber `protobuf:"bytes,3,opt,name=serial_number,json=serialNumber" json:"serial_number,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_openolt_ed29c14f0520a323, []int{9}
+}
+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 (dst *Onu) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Onu.Merge(dst, 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
+}
+
+type OmciMsg struct {
+ IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId" json:"intf_id,omitempty"`
+ OnuId uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId" 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_openolt_ed29c14f0520a323, []int{10}
+}
+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 (dst *OmciMsg) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OmciMsg.Merge(dst, 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" json:"intf_id,omitempty"`
+ OnuId uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId" 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 *OnuPacket) Reset() { *m = OnuPacket{} }
+func (m *OnuPacket) String() string { return proto.CompactTextString(m) }
+func (*OnuPacket) ProtoMessage() {}
+func (*OnuPacket) Descriptor() ([]byte, []int) {
+ return fileDescriptor_openolt_ed29c14f0520a323, []int{11}
+}
+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 (dst *OnuPacket) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OnuPacket.Merge(dst, 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) GetPkt() []byte {
+ if m != nil {
+ return m.Pkt
+ }
+ return nil
+}
+
+type Classifier struct {
+ OTpid uint32 `protobuf:"fixed32,1,opt,name=o_tpid,json=oTpid" json:"o_tpid,omitempty"`
+ OVid uint32 `protobuf:"fixed32,2,opt,name=o_vid,json=oVid" json:"o_vid,omitempty"`
+ ITpid uint32 `protobuf:"fixed32,3,opt,name=i_tpid,json=iTpid" json:"i_tpid,omitempty"`
+ IVid uint32 `protobuf:"fixed32,4,opt,name=i_vid,json=iVid" json:"i_vid,omitempty"`
+ OPbits uint32 `protobuf:"fixed32,5,opt,name=o_pbits,json=oPbits" json:"o_pbits,omitempty"`
+ IPbits uint32 `protobuf:"fixed32,6,opt,name=i_pbits,json=iPbits" json:"i_pbits,omitempty"`
+ EthType uint32 `protobuf:"fixed32,7,opt,name=eth_type,json=ethType" 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" json:"ip_proto,omitempty"`
+ DstIp uint32 `protobuf:"fixed32,11,opt,name=dst_ip,json=dstIp" json:"dst_ip,omitempty"`
+ SrcIp uint32 `protobuf:"fixed32,12,opt,name=src_ip,json=srcIp" json:"src_ip,omitempty"`
+ SrcPort uint32 `protobuf:"fixed32,13,opt,name=src_port,json=srcPort" json:"src_port,omitempty"`
+ DstPort uint32 `protobuf:"fixed32,14,opt,name=dst_port,json=dstPort" json:"dst_port,omitempty"`
+ PktTagType string `protobuf:"bytes,15,opt,name=pkt_tag_type,json=pktTagType" 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_openolt_ed29c14f0520a323, []int{12}
+}
+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 (dst *Classifier) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Classifier.Merge(dst, 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" json:"add_outer_tag,omitempty"`
+ RemoveOuterTag bool `protobuf:"varint,2,opt,name=remove_outer_tag,json=removeOuterTag" json:"remove_outer_tag,omitempty"`
+ TrapToHost bool `protobuf:"varint,3,opt,name=trap_to_host,json=trapToHost" json:"trap_to_host,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_openolt_ed29c14f0520a323, []int{13}
+}
+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 (dst *ActionCmd) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ActionCmd.Merge(dst, 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
+}
+
+type Action struct {
+ Cmd *ActionCmd `protobuf:"bytes,1,opt,name=cmd" json:"cmd,omitempty"`
+ OVid uint32 `protobuf:"fixed32,2,opt,name=o_vid,json=oVid" json:"o_vid,omitempty"`
+ OPbits uint32 `protobuf:"fixed32,3,opt,name=o_pbits,json=oPbits" json:"o_pbits,omitempty"`
+ OTpid uint32 `protobuf:"fixed32,4,opt,name=o_tpid,json=oTpid" json:"o_tpid,omitempty"`
+ IVid uint32 `protobuf:"fixed32,5,opt,name=i_vid,json=iVid" json:"i_vid,omitempty"`
+ IPbits uint32 `protobuf:"fixed32,6,opt,name=i_pbits,json=iPbits" json:"i_pbits,omitempty"`
+ ITpid uint32 `protobuf:"fixed32,7,opt,name=i_tpid,json=iTpid" 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_openolt_ed29c14f0520a323, []int{14}
+}
+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 (dst *Action) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Action.Merge(dst, 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 uint32 `protobuf:"fixed32,1,opt,name=access_intf_id,json=accessIntfId" json:"access_intf_id,omitempty"`
+ OnuId uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId" json:"onu_id,omitempty"`
+ FlowId uint32 `protobuf:"fixed32,3,opt,name=flow_id,json=flowId" json:"flow_id,omitempty"`
+ FlowType string `protobuf:"bytes,4,opt,name=flow_type,json=flowType" json:"flow_type,omitempty"`
+ NetworkIntfId uint32 `protobuf:"fixed32,5,opt,name=network_intf_id,json=networkIntfId" json:"network_intf_id,omitempty"`
+ GemportId uint32 `protobuf:"fixed32,6,opt,name=gemport_id,json=gemportId" json:"gemport_id,omitempty"`
+ Classifier *Classifier `protobuf:"bytes,7,opt,name=classifier" json:"classifier,omitempty"`
+ Action *Action `protobuf:"bytes,8,opt,name=action" json:"action,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_openolt_ed29c14f0520a323, []int{15}
+}
+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 (dst *Flow) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Flow.Merge(dst, 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() uint32 {
+ if m != nil {
+ return m.AccessIntfId
+ }
+ return 0
+}
+
+func (m *Flow) GetOnuId() uint32 {
+ if m != nil {
+ return m.OnuId
+ }
+ 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) GetNetworkIntfId() uint32 {
+ if m != nil {
+ return m.NetworkIntfId
+ }
+ return 0
+}
+
+func (m *Flow) GetGemportId() uint32 {
+ 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
+}
+
+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_openolt_ed29c14f0520a323, []int{16}
+}
+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 (dst *SerialNumber) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_SerialNumber.Merge(dst, 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 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_openolt_ed29c14f0520a323, []int{17}
+}
+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 (dst *Empty) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Empty.Merge(dst, 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.RegisterType((*Indication)(nil), "openolt.Indication")
+ 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((*Heartbeat)(nil), "openolt.Heartbeat")
+ proto.RegisterType((*Onu)(nil), "openolt.Onu")
+ proto.RegisterType((*OmciMsg)(nil), "openolt.OmciMsg")
+ proto.RegisterType((*OnuPacket)(nil), "openolt.OnuPacket")
+ 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((*Empty)(nil), "openolt.Empty")
+}
+
+// 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 {
+ ActivateOnu(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)
+ FlowAdd(ctx context.Context, in *Flow, opts ...grpc.CallOption) (*Empty, error)
+ HeartbeatCheck(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Heartbeat, error)
+ EnableIndication(ctx context.Context, in *Empty, opts ...grpc.CallOption) (Openolt_EnableIndicationClient, error)
+}
+
+type openoltClient struct {
+ cc *grpc.ClientConn
+}
+
+func NewOpenoltClient(cc *grpc.ClientConn) OpenoltClient {
+ return &openoltClient{cc}
+}
+
+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) 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) 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) 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) 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
+}
+
+// Server API for Openolt service
+
+type OpenoltServer interface {
+ ActivateOnu(context.Context, *Onu) (*Empty, error)
+ OmciMsgOut(context.Context, *OmciMsg) (*Empty, error)
+ OnuPacketOut(context.Context, *OnuPacket) (*Empty, error)
+ FlowAdd(context.Context, *Flow) (*Empty, error)
+ HeartbeatCheck(context.Context, *Empty) (*Heartbeat, error)
+ EnableIndication(*Empty, Openolt_EnableIndicationServer) error
+}
+
+func RegisterOpenoltServer(s *grpc.Server, srv OpenoltServer) {
+ s.RegisterService(&_Openolt_serviceDesc, srv)
+}
+
+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_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_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_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_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)
+}
+
+var _Openolt_serviceDesc = grpc.ServiceDesc{
+ ServiceName: "openolt.Openolt",
+ HandlerType: (*OpenoltServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "ActivateOnu",
+ Handler: _Openolt_ActivateOnu_Handler,
+ },
+ {
+ MethodName: "OmciMsgOut",
+ Handler: _Openolt_OmciMsgOut_Handler,
+ },
+ {
+ MethodName: "OnuPacketOut",
+ Handler: _Openolt_OnuPacketOut_Handler,
+ },
+ {
+ MethodName: "FlowAdd",
+ Handler: _Openolt_FlowAdd_Handler,
+ },
+ {
+ MethodName: "HeartbeatCheck",
+ Handler: _Openolt_HeartbeatCheck_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{
+ {
+ StreamName: "EnableIndication",
+ Handler: _Openolt_EnableIndication_Handler,
+ ServerStreams: true,
+ },
+ },
+ Metadata: "openolt.proto",
+}
+
+func init() { proto.RegisterFile("openolt.proto", fileDescriptor_openolt_ed29c14f0520a323) }
+
+var fileDescriptor_openolt_ed29c14f0520a323 = []byte{
+ // 1173 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xdd, 0x6e, 0xdb, 0x36,
+ 0x14, 0xae, 0xff, 0x24, 0xfb, 0x58, 0x76, 0x3c, 0x06, 0x69, 0x9c, 0x74, 0xc5, 0x0a, 0xa1, 0x58,
+ 0x8b, 0x5d, 0x34, 0xeb, 0xcf, 0x55, 0x37, 0x0c, 0xeb, 0xba, 0x0e, 0x31, 0x86, 0xcc, 0x81, 0x62,
+ 0xec, 0x56, 0x63, 0x24, 0xc6, 0x26, 0x6c, 0x8b, 0x9c, 0x48, 0x27, 0x28, 0x76, 0x37, 0xec, 0x0d,
+ 0x76, 0xbf, 0xbd, 0xc6, 0x80, 0xdd, 0xec, 0x1d, 0xf6, 0x0a, 0x7b, 0x90, 0x81, 0x87, 0xb2, 0x2c,
+ 0xc9, 0x49, 0xd0, 0x02, 0xbd, 0xb3, 0xbe, 0xef, 0x7c, 0x1f, 0x79, 0x7e, 0x48, 0x1a, 0x7a, 0x42,
+ 0xb2, 0x44, 0x2c, 0xf4, 0x13, 0x99, 0x0a, 0x2d, 0x88, 0x9b, 0x7d, 0x1e, 0x7e, 0x3c, 0x15, 0x62,
+ 0xba, 0x60, 0x47, 0x54, 0xf2, 0x23, 0x9a, 0x24, 0x42, 0x53, 0xcd, 0x45, 0xa2, 0x6c, 0x98, 0xff,
+ 0x67, 0x03, 0x60, 0x94, 0xc4, 0x3c, 0x42, 0x94, 0x3c, 0x05, 0x57, 0x2c, 0x74, 0xc8, 0x93, 0x78,
+ 0x58, 0x7b, 0x50, 0x7b, 0xdc, 0x7d, 0x76, 0xf7, 0xc9, 0xda, 0x76, 0xbc, 0xd0, 0x9b, 0xc0, 0xe3,
+ 0x3b, 0x81, 0x23, 0x10, 0x20, 0x2f, 0xa0, 0xcd, 0x13, 0x7d, 0x81, 0x9a, 0x3a, 0x6a, 0xf6, 0x73,
+ 0xcd, 0x28, 0xd1, 0x17, 0x25, 0x91, 0xcb, 0x2d, 0x42, 0x5e, 0x41, 0x0f, 0x55, 0x42, 0xb2, 0x14,
+ 0xa5, 0x0d, 0x94, 0xde, 0x2b, 0x49, 0xc7, 0x92, 0xa5, 0x25, 0x79, 0x97, 0x6f, 0x50, 0xf2, 0x15,
+ 0x78, 0x22, 0x59, 0x85, 0x31, 0x57, 0x11, 0x3a, 0x34, 0xd1, 0xe1, 0x70, 0xb3, 0xe1, 0x64, 0xf5,
+ 0x2d, 0x57, 0x51, 0xc9, 0x00, 0x44, 0x0e, 0x62, 0xae, 0xc9, 0x0a, 0xa5, 0xad, 0x6a, 0xae, 0xc9,
+ 0xaa, 0x92, 0x2b, 0x02, 0x26, 0x57, 0xb1, 0x8c, 0x38, 0x6a, 0x9c, 0x4a, 0xae, 0xe3, 0x65, 0xc4,
+ 0xcb, 0xb9, 0x0a, 0x8b, 0x90, 0x17, 0xe0, 0xca, 0xb9, 0x2d, 0xaa, 0x8b, 0xa2, 0x83, 0x5c, 0x74,
+ 0x4a, 0xa3, 0x39, 0xab, 0xd4, 0x55, 0xce, 0x0d, 0xf0, 0x8d, 0x03, 0xcd, 0x98, 0x6a, 0xea, 0x3f,
+ 0x81, 0x5e, 0xa9, 0xf4, 0xe4, 0x3e, 0x00, 0x56, 0x4d, 0x69, 0xaa, 0x19, 0xb6, 0xa9, 0x13, 0x74,
+ 0x0c, 0x72, 0x66, 0x00, 0xff, 0x18, 0xfa, 0xe5, 0xb2, 0x93, 0x7d, 0x70, 0x6d, 0x87, 0x6c, 0x53,
+ 0xdd, 0xc0, 0xc1, 0x2e, 0xc4, 0x15, 0xa7, 0x7a, 0xd5, 0x69, 0x06, 0x1f, 0x6d, 0xd5, 0xf0, 0x66,
+ 0xb3, 0x97, 0xd0, 0x53, 0x2c, 0xe5, 0x74, 0x11, 0x26, 0xab, 0xe5, 0x39, 0x4b, 0xb3, 0x61, 0xd8,
+ 0xcb, 0x73, 0x3d, 0x43, 0xf6, 0x07, 0x24, 0x03, 0x4f, 0x15, 0xbe, 0xfc, 0xbf, 0x6b, 0xd0, 0x2b,
+ 0xd5, 0xfc, 0xe6, 0x65, 0xf6, 0xc0, 0xc1, 0xae, 0xd9, 0x61, 0x73, 0x83, 0x96, 0x69, 0x4d, 0x35,
+ 0x95, 0x46, 0x25, 0x15, 0xf2, 0x09, 0x74, 0x69, 0xbc, 0xe4, 0x49, 0xc6, 0xb7, 0x90, 0x07, 0x84,
+ 0x6c, 0xc0, 0xd6, 0xee, 0x9b, 0xef, 0xbe, 0xfb, 0x9f, 0x80, 0x6c, 0x4f, 0x2b, 0x21, 0xd0, 0xd4,
+ 0x6f, 0xe5, 0xba, 0x41, 0xf8, 0xbb, 0x98, 0x55, 0xfd, 0x96, 0x4e, 0x54, 0xb7, 0xef, 0x07, 0xd0,
+ 0x2f, 0x8f, 0xd7, 0x7b, 0xd7, 0x67, 0x00, 0x0d, 0x39, 0xd7, 0xe8, 0xec, 0x05, 0xe6, 0xa7, 0xbf,
+ 0x82, 0x41, 0x75, 0xfa, 0x6e, 0x9d, 0x94, 0x29, 0x5b, 0x4a, 0x91, 0xea, 0x8d, 0x73, 0x27, 0x43,
+ 0x46, 0xb1, 0xd1, 0x5d, 0x2c, 0xc4, 0x95, 0xe1, 0x1a, 0x56, 0x67, 0x3e, 0x37, 0xcb, 0x36, 0x37,
+ 0xcb, 0x7e, 0x09, 0x9d, 0x63, 0x46, 0x53, 0x7d, 0xce, 0xa8, 0x26, 0x47, 0xb0, 0x3b, 0x5b, 0x7f,
+ 0x84, 0x8a, 0x4f, 0x13, 0xaa, 0x57, 0x29, 0xcb, 0xd6, 0x26, 0x39, 0x75, 0xb6, 0x66, 0xfc, 0x9f,
+ 0xa1, 0x31, 0x4e, 0x56, 0xef, 0x9d, 0xfd, 0x56, 0x77, 0x1b, 0xef, 0xde, 0xdd, 0xef, 0xc1, 0x35,
+ 0xb5, 0x3f, 0x51, 0xd3, 0x0f, 0x50, 0xf4, 0x13, 0xe8, 0x8c, 0x93, 0x95, 0xad, 0xfb, 0x07, 0xb0,
+ 0xfb, 0xad, 0x01, 0xf0, 0x7a, 0x41, 0x95, 0xe2, 0x17, 0x9c, 0xa5, 0xa8, 0x0b, 0xb5, 0xcc, 0xfd,
+ 0x5a, 0x62, 0x22, 0x79, 0x4c, 0x76, 0xa1, 0x25, 0xc2, 0xcb, 0xdc, 0xad, 0x29, 0x7e, 0xe4, 0xb8,
+ 0x06, 0xb7, 0xb1, 0xb6, 0x63, 0x2d, 0xbe, 0x8e, 0xe5, 0x18, 0xdb, 0xb4, 0xb1, 0xdc, 0xc4, 0xee,
+ 0x83, 0x2b, 0x42, 0x79, 0xce, 0xb5, 0xc2, 0x93, 0xe3, 0x06, 0x8e, 0x38, 0x35, 0x5f, 0x98, 0x41,
+ 0x46, 0x38, 0x59, 0x06, 0x96, 0x38, 0x80, 0x36, 0xd3, 0xb3, 0x10, 0x0f, 0x80, 0x8b, 0x8c, 0xcb,
+ 0xf4, 0x6c, 0x92, 0x9d, 0x81, 0x58, 0xe9, 0x70, 0x49, 0xa3, 0x61, 0x1b, 0x33, 0x71, 0x62, 0xa5,
+ 0x4f, 0x68, 0x64, 0x08, 0x95, 0x46, 0x48, 0x74, 0x2c, 0xa1, 0xd2, 0xc8, 0x10, 0x07, 0xd0, 0xe6,
+ 0x32, 0xc4, 0xf7, 0x6a, 0x08, 0xd6, 0x8c, 0xcb, 0x53, 0x7c, 0xe5, 0xf6, 0xc0, 0xa8, 0x43, 0x2e,
+ 0x87, 0x5d, 0x9b, 0x45, 0xac, 0xf4, 0x48, 0x1a, 0xd8, 0x58, 0x71, 0x39, 0xf4, 0x2c, 0xac, 0xd2,
+ 0x68, 0x24, 0x8d, 0x91, 0x81, 0xcd, 0xd0, 0x0e, 0x7b, 0xd6, 0x48, 0xa5, 0xd1, 0xa9, 0x48, 0xb5,
+ 0xa1, 0x8c, 0x11, 0x52, 0x7d, 0x4b, 0xc5, 0x4a, 0x23, 0xf5, 0x00, 0x3c, 0x73, 0x7d, 0x6b, 0x3a,
+ 0xb5, 0xf9, 0xec, 0xd8, 0xcb, 0x43, 0xce, 0xf5, 0x84, 0x4e, 0x4d, 0x4a, 0xfe, 0x2f, 0xd0, 0x79,
+ 0x15, 0x99, 0x03, 0xf4, 0x7a, 0x19, 0x13, 0x1f, 0x7a, 0x34, 0x8e, 0x43, 0xb1, 0xd2, 0x2c, 0x35,
+ 0x22, 0xec, 0x45, 0x3b, 0xe8, 0xd2, 0x38, 0x1e, 0x1b, 0x6c, 0x42, 0xa7, 0xe4, 0x31, 0x0c, 0x52,
+ 0xb6, 0x14, 0x97, 0xac, 0x10, 0x56, 0xc7, 0xb0, 0xbe, 0xc5, 0xf3, 0xc8, 0x07, 0xe0, 0xe9, 0x94,
+ 0xca, 0x50, 0x8b, 0x70, 0x26, 0x94, 0x6d, 0x7e, 0x3b, 0x00, 0x83, 0x4d, 0xc4, 0xb1, 0x50, 0xda,
+ 0xff, 0xab, 0x06, 0x8e, 0x5d, 0x9d, 0x3c, 0x84, 0x46, 0xb4, 0x5c, 0xbf, 0xdc, 0x24, 0x1f, 0xee,
+ 0x7c, 0x6f, 0x81, 0xa1, 0xaf, 0x1f, 0x87, 0x42, 0x8b, 0x1b, 0xa5, 0x16, 0x6f, 0x66, 0xaa, 0x59,
+ 0x99, 0x29, 0x3b, 0x27, 0xad, 0xf2, 0x9c, 0x5c, 0x3f, 0x0e, 0x9b, 0x61, 0x73, 0x0b, 0xc3, 0xe6,
+ 0xff, 0x51, 0x87, 0xe6, 0x77, 0x0b, 0x71, 0x45, 0x1e, 0x42, 0x9f, 0x46, 0x11, 0x53, 0x2a, 0x2c,
+ 0x1f, 0x08, 0xcf, 0xa2, 0xa3, 0x5b, 0x8f, 0xc5, 0x8d, 0x97, 0xcf, 0x3d, 0xe8, 0x20, 0x81, 0x5d,
+ 0x6b, 0x62, 0xd7, 0xda, 0x06, 0xc0, 0x31, 0xfc, 0x14, 0x76, 0x12, 0xa6, 0xaf, 0x44, 0x3a, 0xcf,
+ 0xd7, 0xb4, 0xa9, 0xf4, 0x32, 0x78, 0x74, 0xdd, 0xcd, 0xe7, 0x54, 0x6f, 0xbe, 0xe7, 0x00, 0x51,
+ 0x7e, 0x00, 0xb3, 0xe7, 0x7d, 0x37, 0xaf, 0xfc, 0xe6, 0x6c, 0x06, 0x85, 0x30, 0xf2, 0x08, 0x1c,
+ 0x8a, 0x3d, 0xc1, 0x13, 0xd0, 0x7d, 0xb6, 0x53, 0x69, 0x55, 0x90, 0xd1, 0xfe, 0x04, 0xbc, 0xe2,
+ 0xcd, 0x64, 0x32, 0xba, 0x64, 0x49, 0x2c, 0xd2, 0x75, 0x89, 0xbc, 0xa0, 0x6d, 0x81, 0x51, 0x4c,
+ 0x1e, 0xc1, 0x4e, 0x46, 0x2a, 0xc9, 0x22, 0x7e, 0xc1, 0x23, 0xac, 0x93, 0x17, 0xf4, 0x2d, 0x7c,
+ 0x96, 0xa1, 0xbe, 0x0b, 0xad, 0x37, 0x4b, 0xa9, 0xdf, 0x3e, 0xfb, 0xa7, 0x01, 0xee, 0xd8, 0xae,
+ 0x4c, 0xde, 0x40, 0xd7, 0x2c, 0x7e, 0x49, 0x35, 0x33, 0x37, 0xac, 0x57, 0xfc, 0x2f, 0x74, 0xd8,
+ 0xcf, 0xbf, 0x50, 0xe8, 0x0f, 0x7f, 0xfd, 0xf7, 0xbf, 0xdf, 0xeb, 0xc4, 0xef, 0x1d, 0x5d, 0x3e,
+ 0x3d, 0x7a, 0x93, 0xd0, 0xf3, 0x85, 0x11, 0xbd, 0xac, 0x7d, 0x46, 0x46, 0x00, 0xd9, 0x6d, 0x39,
+ 0x5e, 0x69, 0x32, 0x28, 0xfd, 0x3b, 0x3a, 0x51, 0xd3, 0x2d, 0xa7, 0x03, 0x74, 0xda, 0xf5, 0xfb,
+ 0xc6, 0x69, 0xa3, 0x34, 0x56, 0x63, 0xf0, 0xf2, 0xbb, 0xd2, 0x98, 0x91, 0xe2, 0x96, 0x2c, 0xbc,
+ 0x65, 0x77, 0x0f, 0xed, 0xf6, 0xfc, 0x01, 0xda, 0x15, 0xd4, 0xc6, 0xf0, 0x6b, 0x70, 0xcd, 0xb4,
+ 0xbd, 0x8a, 0x63, 0xd2, 0xcb, 0x75, 0x06, 0xd9, 0xb2, 0xb9, 0x8b, 0x36, 0x03, 0xbf, 0x6b, 0x6c,
+ 0x32, 0x8d, 0x71, 0x38, 0x83, 0x7e, 0xfe, 0x78, 0xbd, 0x9e, 0xb1, 0x68, 0x4e, 0x2a, 0xca, 0xc3,
+ 0xcd, 0x26, 0xf3, 0x40, 0xff, 0x3e, 0xba, 0xed, 0xfb, 0xc4, 0xb8, 0x95, 0xf5, 0xc6, 0xf4, 0x0b,
+ 0x18, 0xd8, 0x12, 0x16, 0x1e, 0xe2, 0xaa, 0xed, 0x6e, 0xe1, 0x7f, 0xf1, 0x3a, 0xc8, 0xbf, 0xf3,
+ 0x79, 0xed, 0xdc, 0xc1, 0x6b, 0xf1, 0xf9, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x84, 0xf5, 0x50,
+ 0x8d, 0xfe, 0x0b, 0x00, 0x00,
+}