Documentation ¶
Index ¶
- Constants
- Variables
- func InterfaceIDToPortNo(intfID uint32, intfType string) uint32
- func NewSN(oltid int, intfid uint32, onuid uint32) *openolt.SerialNumber
- type FlowAddSpy
- type FlowKey
- type NniPort
- type OltDevice
- func (o *OltDevice) ActivateOnu(context context.Context, onu *openolt.Onu) (*openolt.Empty, error)
- func (o *OltDevice) CollectStatistics(context.Context, *openolt.Empty) (*openolt.Empty, error)
- func (s *OltDevice) CreateTrafficQueues(context.Context, *tech_profile.TrafficQueues) (*openolt.Empty, error)
- func (s *OltDevice) CreateTrafficSchedulers(_ context.Context, trafficSchedulers *tech_profile.TrafficSchedulers) (*openolt.Empty, error)
- func (o *OltDevice) DeactivateOnu(_ context.Context, onu *openolt.Onu) (*openolt.Empty, error)
- func (o *OltDevice) DeleteGroup(ctx context.Context, group *openolt.Group) (*openolt.Empty, error)
- func (o *OltDevice) DeleteOnu(_ context.Context, onu *openolt.Onu) (*openolt.Empty, error)
- func (o *OltDevice) DisableOlt(context.Context, *openolt.Empty) (*openolt.Empty, error)
- func (o *OltDevice) DisablePonIf(_ context.Context, intf *openolt.Interface) (*openolt.Empty, error)
- func (o *OltDevice) Enable(stream openolt.Openolt_EnableIndicationServer)
- func (o *OltDevice) EnableIndication(_ *openolt.Empty, stream openolt.Openolt_EnableIndicationServer) error
- func (o *OltDevice) EnablePonIf(_ context.Context, intf *openolt.Interface) (*openolt.Empty, error)
- func (o *OltDevice) FindOnuById(intfId uint32, onuId uint32) (*Onu, error)
- func (o *OltDevice) FindOnuBySn(serialNumber string) (*Onu, error)
- func (o *OltDevice) FindServiceByMacAddress(mac net.HardwareAddr) (ServiceIf, error)
- func (o *OltDevice) FlowAdd(ctx context.Context, flow *openolt.Flow) (*openolt.Empty, error)
- func (o *OltDevice) FlowRemove(_ context.Context, flow *openolt.Flow) (*openolt.Empty, error)
- func (o *OltDevice) GetDeviceInfo(context.Context, *openolt.Empty) (*openolt.DeviceInfo, error)
- func (o *OltDevice) GetExtValue(ctx context.Context, in *openolt.ValueParam) (*common_protos.ReturnValues, error)
- func (o *OltDevice) GetGemPortStatistics(ctx context.Context, in *openolt.OnuPacket) (*openolt.GemPortStatistics, error)
- func (o *OltDevice) GetLogicalOnuDistance(ctx context.Context, in *openolt.Onu) (*openolt.OnuLogicalDistance, error)
- func (o *OltDevice) GetLogicalOnuDistanceZero(ctx context.Context, in *openolt.Onu) (*openolt.OnuLogicalDistance, error)
- func (o *OltDevice) GetOnuByFlowId(flowId uint64) (*Onu, error)
- func (o *OltDevice) GetOnuInfo(context context.Context, packet *openolt.Onu) (*openolt.OnuIndication, error)
- func (o *OltDevice) GetOnuStatistics(ctx context.Context, in *openolt.Onu) (*openolt.OnuStatistics, error)
- func (o *OltDevice) GetPonById(id uint32) (*PonPort, error)
- func (o *OltDevice) GetPonIf(context context.Context, packet *openolt.Interface) (*openolt.IntfIndication, error)
- func (o *OltDevice) GetPonRxPower(ctx context.Context, in *openolt.Onu) (*openolt.PonRxPowerData, error)
- func (o *OltDevice) HasNni(id uint32) bool
- func (o *OltDevice) HasPon(id uint32) bool
- func (o *OltDevice) HeartbeatCheck(context.Context, *openolt.Empty) (*openolt.Heartbeat, error)
- func (o *OltDevice) InitOlt()
- func (o *OltDevice) OmciMsgOut(ctx context.Context, omci_msg *openolt.OmciMsg) (*openolt.Empty, error)
- func (o *OltDevice) OnuItuPonAlarmSet(ctx context.Context, in *config.OnuItuPonAlarm) (*openolt.Empty, error)
- func (o *OltDevice) OnuPacketOut(ctx context.Context, onuPkt *openolt.OnuPacket) (*openolt.Empty, error)
- func (o *OltDevice) PerformGroupOperation(ctx context.Context, group *openolt.Group) (*openolt.Empty, error)
- func (o *OltDevice) Reboot(context.Context, *openolt.Empty) (*openolt.Empty, error)
- func (o *OltDevice) ReenableOlt(context.Context, *openolt.Empty) (*openolt.Empty, error)
- func (s *OltDevice) RemoveTrafficQueues(_ context.Context, tq *tech_profile.TrafficQueues) (*openolt.Empty, error)
- func (s *OltDevice) RemoveTrafficSchedulers(context context.Context, trafficSchedulers *tech_profile.TrafficSchedulers) (*openolt.Empty, error)
- func (o *OltDevice) RestartOLT() error
- func (o *OltDevice) SetAlarm(interfaceId uint32, interfaceType string, alarmStatus string) error
- func (o *OltDevice) StartOltServer() (*grpc.Server, error)
- func (o *OltDevice) StopOltServer()
- func (o *OltDevice) UplinkPacketOut(context context.Context, packet *openolt.UplinkPacket) (*openolt.Empty, error)
- type Onu
- func (onu *Onu) DeleteFlow(key FlowKey)
- func (o *Onu) FindUniByEntityId(meId uint16) (*UniPort, error)
- func (o *Onu) FindUniById(uniID uint32) (*UniPort, error)
- func (o *Onu) HandlePowerOnONU() error
- func (o *Onu) HandleShutdownONU() error
- func (o *Onu) IncrementAlarmSequenceNumber(key omcilib.OnuAlarmInfoMapKey) uint8
- func (o *Onu) ProcessOnuMessages(ctx context.Context, stream openolt.Openolt_EnableIndicationServer, ...)
- func (onu *Onu) ReDiscoverOnu()
- func (o *Onu) Reboot(timeout time.Duration) error
- func (o *Onu) SendOMCIAlarmNotificationMsg(raiseOMCIAlarm bool, alarmType string)
- func (o *Onu) SetAlarm(alarmType string, status string) error
- func (o *Onu) SetID(id uint32)
- func (o *Onu) Sn() string
- func (o *Onu) StartOmci(client openolt.OpenoltClient)
- type PonPort
- type Service
- type ServiceIf
- type UniPort
- type UniPortIf
Constants ¶
const ( Default mode = iota OnlyONU OnlyPON Both )
Constants for Controlled Activation modes
const ( // ONU transitions OnuTxInitialize = "initialize" OnuTxDiscover = "discover" OnuTxEnable = "enable" OnuTxDisable = "disable" OnuTxPonDisable = "pon_disable" OnuTxStartImageDownload = "start_image_download" OnuTxProgressImageDownload = "progress_image_download" OnuTxCompleteImageDownload = "complete_image_download" OnuTxFailImageDownload = "fail_image_download" OnuTxActivateImage = "activate_image" OnuTxCommitImage = "commit_image" // ONU States OnuStateCreated = "created" OnuStateInitialized = "initialized" OnuStateDiscovered = "discovered" OnuStateEnabled = "enabled" OnuStateDisabled = "disabled" OnuStatePonDisabled = "pon_disabled" OnuStateImageDownloadStarted = "image_download_started" OnuStateImageDownloadInProgress = "image_download_in_progress" OnuStateImageDownloadComplete = "image_download_completed" OnuStateImageDownloadError = "image_download_error" OnuStateImageActivated = "software_image_activated" OnuStateImageCommitted = "software_image_committed" // BBR ONU States and Transitions BbrOnuTxSendEapolFlow = "send_eapol_flow" BbrOnuStateEapolFlowSent = "eapol_flow_sent" BbrOnuTxSendDhcpFlow = "send_dhcp_flow" BbrOnuStateDhcpFlowSent = "dhcp_flow_sent" )
const ( ServiceStateCreated = "created" ServiceStateInitialized = "initialized" ServiceStateDisabled = "disabled" ServiceTxInitialize = "initialize" ServiceTxDisable = "disable" )
const ( UniStateUp = "up" UniStateDown = "down" )
Variables ¶
var ControlledActivationModes = map[string]mode{ "default": Default, "only-onu": OnlyONU, "only-pon": OnlyPON, "both": Both, }
ControlledActivationModes maps string to int value of mode
Functions ¶
func InterfaceIDToPortNo ¶ added in v0.0.19
InterfaceIDToPortNo converts InterfaceID to voltha PortID Refer openolt adapter code(master) voltha-openolt-adapter/adaptercore/olt_platform.go: IntfIDToPortNo()
Types ¶
type FlowAddSpy ¶ added in v0.0.5
type NniPort ¶
type OltDevice ¶
type OltDevice struct { sync.Mutex OltServer *grpc.Server // BBSIM Internals ID int SerialNumber string NumNni int NumPon int NumOnuPerPon int NumUni int InternalState *fsm.FSM Flows sync.Map Delay int ControlledActivation mode EventChannel chan common.Event PublishEvents bool PortStatsInterval int PreviouslyConnected bool Pons []*PonPort Nnis []*NniPort // OLT Attributes OperState *fsm.FSM OpenoltStream openolt.Openolt_EnableIndicationServer // Allocated Resources // this data are to verify that the openolt adapter does not duplicate resources AllocIDsLock sync.RWMutex AllocIDs map[uint32]map[uint32]map[uint32]map[int32]map[uint64]bool // map[ponPortId]map[OnuId]map[PortNo]map[AllocIds]map[FlowId]bool GemPortIDsLock sync.RWMutex GemPortIDs map[uint32]map[uint32]map[uint32]map[int32]map[uint64]bool // map[ponPortId]map[OnuId]map[PortNo]map[GemPortIDs]map[FlowId]bool OmciResponseRate uint8 // contains filtered or unexported fields }
func CreateOLT ¶
func CreateOLT(options common.GlobalConfig, services []common.ServiceYaml, isMock bool) *OltDevice
func (*OltDevice) ActivateOnu ¶
func (*OltDevice) CollectStatistics ¶
func (*OltDevice) CreateTrafficQueues ¶
func (s *OltDevice) CreateTrafficQueues(context.Context, *tech_profile.TrafficQueues) (*openolt.Empty, error)
func (*OltDevice) CreateTrafficSchedulers ¶
func (s *OltDevice) CreateTrafficSchedulers(_ context.Context, trafficSchedulers *tech_profile.TrafficSchedulers) (*openolt.Empty, error)
func (*OltDevice) DeactivateOnu ¶
func (*OltDevice) DeleteGroup ¶ added in v1.0.0
func (*OltDevice) DisableOlt ¶
func (*OltDevice) DisablePonIf ¶
func (*OltDevice) Enable ¶
func (o *OltDevice) Enable(stream openolt.Openolt_EnableIndicationServer)
Enable implements the OpenOLT EnableIndicationServer functionality
func (*OltDevice) EnableIndication ¶
func (*OltDevice) EnablePonIf ¶
func (*OltDevice) FindOnuById ¶ added in v0.0.2
returns an ONU with a given interface/Onu Id
func (*OltDevice) FindOnuBySn ¶ added in v0.0.2
returns an ONU with a given Serial Number
func (*OltDevice) FindServiceByMacAddress ¶ added in v1.0.0
func (o *OltDevice) FindServiceByMacAddress(mac net.HardwareAddr) (ServiceIf, error)
returns a Service with a given Mac Address
func (*OltDevice) FlowRemove ¶
FlowRemove request from VOLTHA
func (*OltDevice) GetDeviceInfo ¶
func (*OltDevice) GetExtValue ¶ added in v1.0.0
func (o *OltDevice) GetExtValue(ctx context.Context, in *openolt.ValueParam) (*common_protos.ReturnValues, error)
func (*OltDevice) GetGemPortStatistics ¶ added in v1.5.1
func (*OltDevice) GetLogicalOnuDistance ¶ added in v1.0.0
func (*OltDevice) GetLogicalOnuDistanceZero ¶ added in v1.0.0
func (*OltDevice) GetOnuByFlowId ¶ added in v0.2.5
func (*OltDevice) GetOnuInfo ¶
func (*OltDevice) GetOnuStatistics ¶ added in v1.5.1
func (*OltDevice) GetPonById ¶ added in v0.0.2
func (*OltDevice) GetPonRxPower ¶ added in v1.8.0
func (*OltDevice) HeartbeatCheck ¶
func (*OltDevice) OmciMsgOut ¶
func (*OltDevice) OnuItuPonAlarmSet ¶ added in v1.0.0
func (*OltDevice) OnuPacketOut ¶
func (o *OltDevice) OnuPacketOut(ctx context.Context, onuPkt *openolt.OnuPacket) (*openolt.Empty, error)
this gRPC methods receives packets from VOLTHA and sends them to the subscriber on the ONU
func (*OltDevice) PerformGroupOperation ¶ added in v1.0.0
func (*OltDevice) ReenableOlt ¶
func (*OltDevice) RemoveTrafficQueues ¶
func (s *OltDevice) RemoveTrafficQueues(_ context.Context, tq *tech_profile.TrafficQueues) (*openolt.Empty, error)
func (*OltDevice) RemoveTrafficSchedulers ¶
func (s *OltDevice) RemoveTrafficSchedulers(context context.Context, trafficSchedulers *tech_profile.TrafficSchedulers) (*openolt.Empty, error)
func (*OltDevice) RestartOLT ¶ added in v0.0.7
func (*OltDevice) StartOltServer ¶ added in v1.4.1
StartOltServer will create the grpc server that VOLTHA uses to communicate with the device
func (*OltDevice) StopOltServer ¶ added in v0.0.8
func (o *OltDevice) StopOltServer()
StopOltServer stops the OpenOLT grpc server
func (*OltDevice) UplinkPacketOut ¶
type Onu ¶
type Onu struct { ID uint32 PonPortID uint32 PonPort *PonPort InternalState *fsm.FSM DiscoveryRetryDelay time.Duration // this is the time between subsequent Discovery Indication DiscoveryDelay time.Duration // this is the time to send the first Discovery Indication Backoff *backoff.Backoff // ONU State UniPorts []UniPortIf Flows []FlowKey FlowIds []uint64 // keep track of the flows we currently have in the ONU OperState *fsm.FSM SerialNumber *openolt.SerialNumber AdminLockState uint8 // 0 is enabled, 1 is disabled. Channel chan bbsim.Message // this Channel is to track state changes OMCI messages, EAPOL and DHCP packets // OMCI params MibDataSync uint8 ImageSoftwareExpectedSections int ImageSoftwareReceivedSections int ActiveImageEntityId uint16 CommittedImageEntityId uint16 StandbyImageVersion string ActiveImageVersion string CommittedImageVersion string OmciResponseRate uint8 OmciMsgCounter uint8 ImageSectionData []byte MibDb *omcilib.MibDb DoneChannel chan bool // this channel is used to signal once the onu is complete (when the struct is used by BBR) TrafficSchedulers *tech_profile.TrafficSchedulers // contains filtered or unexported fields }
func (*Onu) DeleteFlow ¶ added in v0.0.18
DeleteFlow method search and delete flowKey from the onu flows slice
func (*Onu) FindUniByEntityId ¶ added in v1.8.0
FindUniByEntityId retrieves a uni by MeID (the OMCI entity ID)
func (*Onu) FindUniById ¶ added in v1.8.0
FindUniById retrieves a UNI by ID
func (*Onu) HandlePowerOnONU ¶ added in v1.5.0
func (*Onu) HandleShutdownONU ¶ added in v1.5.0
func (*Onu) IncrementAlarmSequenceNumber ¶ added in v1.5.2
func (o *Onu) IncrementAlarmSequenceNumber(key omcilib.OnuAlarmInfoMapKey) uint8
func (*Onu) ProcessOnuMessages ¶ added in v0.0.2
func (o *Onu) ProcessOnuMessages(ctx context.Context, stream openolt.Openolt_EnableIndicationServer, client openolt.OpenoltClient)
ProcessOnuMessages starts indication channel for each ONU
func (*Onu) ReDiscoverOnu ¶ added in v0.3.0
func (onu *Onu) ReDiscoverOnu()
func (*Onu) SendOMCIAlarmNotificationMsg ¶ added in v1.5.2
func (*Onu) StartOmci ¶ added in v0.0.2
func (o *Onu) StartOmci(client openolt.OpenoltClient)
TODO move this method in responders/omcisim StartOmci is called in BBR to start the OMCI state machine
type PonPort ¶
type PonPort struct { // BBSIM Internals ID uint32 NumOnu int Onus []*Onu Olt *OltDevice PacketCount uint64 InternalState *fsm.FSM // PON Attributes OperState *fsm.FSM Type string // Allocated resources // Some resources (eg: OnuId, AllocId and GemPorts) have to be unique per PON port // we are keeping a list so that we can throw an error in cases we receive duplicates AllocatedGemPorts map[uint16]*openolt.SerialNumber AllocatedOnuIds map[uint32]*openolt.SerialNumber AllocatedAllocIds map[uint16]*openolt.SerialNumber // contains filtered or unexported fields }
func CreatePonPort ¶ added in v0.0.10
CreatePonPort creates pon port object
func (*PonPort) GetNumOfActiveOnus ¶ added in v0.0.19
GetNumOfActiveOnus returns number of active ONUs for PON port
func (*PonPort) GetOnuBySn ¶ added in v0.0.2
func (p *PonPort) GetOnuBySn(sn *openolt.SerialNumber) (*Onu, error)
type Service ¶ added in v1.0.0
type Service struct { Id uint32 Name string HwAddress net.HardwareAddr UniPort *UniPort CTag int STag int NeedsEapol bool NeedsDhcp bool NeedsIgmp bool TechnologyProfileID int UniTagMatch int ConfigureMacAddress bool UsPonCTagPriority uint8 UsPonSTagPriority uint8 DsPonCTagPriority uint8 DsPonSTagPriority uint8 // state GemPort uint32 InternalState *fsm.FSM EapolState *fsm.FSM DHCPState *fsm.FSM IGMPState *fsm.FSM Channel chan bbsimTypes.Message // drive Service lifecycle PacketCh chan bbsimTypes.OnuPacketMessage // handle packets Stream bbsimTypes.Stream // the gRPC stream to communicate with the adapter, created in the initialize transition }
func NewService ¶ added in v1.0.0
func NewService(id uint32, name string, hwAddress net.HardwareAddr, uni *UniPort, cTag int, sTag int, needsEapol bool, needsDchp bool, needsIgmp bool, tpID int, uniTagMatch int, configMacAddress bool, usPonCTagPriority uint8, usPonSTagPriority uint8, dsPonCTagPriority uint8, dsPonSTagPriority uint8) (*Service, error)
func (*Service) HandleAuth ¶ added in v1.0.0
func (s *Service) HandleAuth()
HandleAuth is used to start EAPOL for a particular Service when the corresponding flow is received
func (*Service) HandleChannel ¶ added in v1.0.0
func (s *Service) HandleChannel()
func (*Service) HandleDhcp ¶ added in v1.0.0
HandleDhcp is used to start DHCP for a particular Service when the corresponding flow is received
func (*Service) HandlePackets ¶ added in v1.0.0
func (s *Service) HandlePackets()
func (*Service) Initialize ¶ added in v1.0.0
func (s *Service) Initialize(stream bbsimTypes.Stream)
func (*Service) UpdateStream ¶ added in v1.6.0
func (s *Service) UpdateStream(stream bbsimTypes.Stream)
type ServiceIf ¶ added in v1.0.0
type ServiceIf interface { HandlePackets() // start listening on the PacketCh HandleAuth() // Sends the EapoStart packet HandleDhcp(pbit uint8, cTag int) // Sends the DHCPDiscover packet Initialize(stream bbsimTypes.Stream) UpdateStream(stream bbsimTypes.Stream) Disable() }
type UniPort ¶ added in v1.8.0
type UniPort struct { ID uint32 MeId omcilib.EntityID PortNo uint32 OperState *fsm.FSM Onu *Onu Services []ServiceIf PacketCh chan bbsimTypes.OnuPacketMessage // handle packets // contains filtered or unexported fields }
func NewUniPort ¶ added in v1.8.0
func (*UniPort) HandleAuth ¶ added in v1.8.0
func (u *UniPort) HandleAuth()
func (*UniPort) HandleDhcp ¶ added in v1.8.0
func (*UniPort) HandlePackets ¶ added in v1.8.0
func (u *UniPort) HandlePackets()
this method simply forwards the packet to the correct service
func (*UniPort) StorePortNo ¶ added in v1.8.0
func (*UniPort) UpdateStream ¶ added in v1.8.0
func (u *UniPort) UpdateStream(stream bbsimTypes.Stream)