Yate
SS7M2PA Class Reference

SIGTRAN MTP2 User Peer-to-Peer Adaptation Layer. More...

#include <yatesig.h>

Inheritance diagram for SS7M2PA:
SS7Layer2 SIGTRAN SignallingComponent RefObject DebugEnabler GenObject

Public Types

enum  m2paState {
  Alignment = 1 , ProvingNormal = 2 , ProvingEmergency = 3 , Ready = 4 ,
  ProcessorOutage = 5 , ProcessorRecovered = 6 , Busy = 7 , BusyEnded = 8 ,
  OutOfService = 9
}
 
enum  msgType { UserData = 1 , LinkStatus = 2 }
 
enum  sctpState { Idle , Associating , Established }
 
enum  M2PAOperations {
  Pause = SS7Layer2::Pause , Resume = SS7Layer2::Resume , Align = SS7Layer2::Align , Status = SS7Layer2::Status ,
  TransRestart = 0x500
}
 
- Public Types inherited from SS7Layer2
enum  LinkStatus {
  OutOfAlignment = 0 , NormalAlignment = 1 , EmergencyAlignment = 2 , OutOfService = 3 ,
  ProcessorOutage = 4 , Busy = 5 , O = OutOfAlignment , N = NormalAlignment ,
  E = EmergencyAlignment , OS = OutOfService , PO = ProcessorOutage , B = Busy
}
 
enum  Operation { Pause = 0x100 , Resume = 0x200 , Align = 0x300 , Status = 0x400 }
 
enum  Inhibitions { Unchecked = 0x01 , Inactive = 0x02 , Local = 0x04 , Remote = 0x08 }
 
- Public Types inherited from SIGTRAN
enum  MsgClass {
  MGMT = 0 , TRAN = 1 , SSNM = 2 , ASPSM = 3 ,
  ASPTM = 4 , QPTM = 5 , MAUP = 6 , CLMSG = 7 ,
  COMSG = 8 , RKM = 9 , IIM = 10 , M2PA = 11
}
 
enum  MsgMGMT { MgmtERR = 0 , MgmtNTFY = 1 }
 
enum  MsgSSNM {
  SsnmDUNA = 1 , SsnmDAVA = 2 , SsnmDAUD = 3 , SsnmSCON = 4 ,
  SsnmDUPU = 5 , SsnmDRST = 6
}
 
enum  MsgASPSM {
  AspsmUP = 1 , AspsmDOWN = 2 , AspsmBEAT = 3 , AspsmUP_ACK = 4 ,
  AspsmDOWN_ACK = 5 , AspsmBEAT_ACK = 6
}
 
enum  MsgASPTM { AsptmACTIVE = 1 , AsptmINACTIVE = 2 , AsptmACTIVE_ACK = 3 , AsptmINACTIVE_ACK = 4 }
 
enum  MsgRKM { RkmREG_REQ = 1 , RkmREG_RSP = 2 , RkmDEREG_REQ = 3 , RkmDEREG_RSP = 4 }
 
enum  MsgIIM { IimREG_REQ = 1 , IimREG_RSP = 2 , IimDEREG_REQ = 3 , IimDEREG_RSP = 4 }
 

Public Member Functions

 SS7M2PA (const NamedList &params)
 
 ~SS7M2PA ()
 
virtual bool initialize (const NamedList *config)
 
virtual bool control (NamedList &params)
 
virtual bool control (M2PAOperations oper, NamedList *params=0)
 
virtual bool control (SS7Layer2::Operation oper, NamedList *params=0)
 
virtual unsigned int status () const
 
virtual bool transmitMSU (const SS7MSU &msu)
 
virtual void notifyLayer (SignallingInterface::Notification status)
 
virtual void recoverMSU (int sequence)
 
bool decodeSeq (const DataBlock &data, u_int8_t msgType)
 
void abortAlignment (const char *info=0)
 
void transmitLS (int streamId=0)
 
void setHeader (DataBlock &data)
 
bool processLinkStatus (DataBlock &data, int streamId)
 
bool processSLinkStatus (DataBlock &data, int streamId)
 
void sendAck ()
 
bool removeFrame (u_int32_t bsn)
 
bool nextBsn (u_int32_t bsn) const
 
- Public Member Functions inherited from SS7Layer2
virtual const char * statusName (unsigned int status, bool brief) const
 
const char * statusName (bool brief=false) const
 
unsigned int upTime () const
 
void attach (SS7L2User *l2user)
 
SS7L2Useruser () const
 
int sls () const
 
void sls (int linkSel)
 
int inhibited () const
 
bool inhibited (int flags) const
 
virtual unsigned int congestion ()
 
virtual int getSequence ()
 
- Public Member Functions inherited from SignallingComponent
virtual ~SignallingComponent ()
 
virtual const StringtoString () const
 
virtual NamedListcontrolCreate (const char *oper=0)
 
virtual bool controlExecute (NamedList *params)
 
virtual void engine (SignallingEngine *eng)
 
SignallingEngineengine () const
 
int debugLevel (int level)
 
const StringcomponentType () const
 
- Public Member Functions inherited from RefObject
 RefObject ()
 
virtual ~RefObject ()
 
virtual void * getObject (const String &name) const
 
virtual bool alive () const
 
bool ref ()
 
bool deref ()
 
int refcount () const
 
virtual void destruct ()
 
- Public Member Functions inherited from GenObject
 GenObject ()
 
virtual ~GenObject ()
 
virtual const StringtraceId () const
 
NamedCountergetObjCounter () const
 
NamedCountersetObjCounter (NamedCounter *counter)
 
- Public Member Functions inherited from DebugEnabler
 DebugEnabler (int level=TelEngine::debugLevel(), bool enabled=true)
 
int debugLevel () const
 
int debugLevel (int level)
 
bool debugEnabled () const
 
void debugEnabled (bool enable)
 
const char * debugName () const
 
bool debugAt (int level) const
 
bool debugChained () const
 
void debugChain (const DebugEnabler *chain=0)
 
void debugCopy (const DebugEnabler *original=0)
 
- Public Member Functions inherited from SIGTRAN
 SIGTRAN (u_int32_t payload=0, u_int16_t port=0)
 
virtual ~SIGTRAN ()
 
virtual void attach (SIGTransport *trans)
 
SIGTransporttransport () const
 
u_int32_t payload () const
 
u_int16_t defPort () const
 
bool connected (int streamId=0) const
 
bool transmitMSG (unsigned char msgVersion, unsigned char msgClass, unsigned char msgType, const DataBlock &msg, int streamId=0) const
 
bool transmitMSG (unsigned char msgClass, unsigned char msgType, const DataBlock &msg, int streamId=0) const
 
bool restart (bool force)
 
bool getSocketParams (const String &params, NamedList &result)
 
virtual bool transportNotify (SIGTransport *newTransport, const SocketAddr &addr)
 
bool hasTransportThread ()
 
void stopTransportThread ()
 

Static Public Member Functions

static u_int32_t increment (u_int32_t &nr)
 
static u_int32_t getNext (u_int32_t nr)
 
- Static Public Member Functions inherited from SignallingComponent
static bool resolveConfig (const String &cmpName, NamedList &params, const NamedList *config)
 
- Static Public Member Functions inherited from RefObject
static bool alive (const RefObject *obj)
 
static bool efficientIncDec ()
 
- Static Public Member Functions inherited from GenObject
static void * getObject (const String &name, const GenObject *obj)
 
static bool getObjCounting ()
 
static void setObjCounting (bool enable)
 
static NamedCountergetObjCounter (const String &name, bool create=true)
 
static ObjListgetObjCounters ()
 
- Static Public Member Functions inherited from SIGTRAN
static const TokenDictclassNames ()
 
static const char * typeName (unsigned char msgClass, unsigned char msgType, const char *defValue=0)
 

Protected Member Functions

virtual void timerTick (const Time &when)
 
virtual bool aligned () const
 
virtual bool operational () const
 
virtual bool processMSG (unsigned char msgVersion, unsigned char msgClass, unsigned char msgType, const DataBlock &msg, int streamId)
 
void startAlignment (bool emergency=false)
 
void retransData ()
 
virtual void destroyed ()
 
- Protected Member Functions inherited from SS7Layer2
 SS7Layer2 ()
 
bool receivedMSU (const SS7MSU &msu)
 
bool recoveredMSU (const SS7MSU &msu)
 
void notify ()
 
bool inhibit (int setFlags, int clrFlags=0)
 
bool getEmergency (NamedList *params=0, bool emg=false) const
 
- Protected Member Functions inherited from SignallingComponent
 SignallingComponent (const char *name=0, const NamedList *params=0, const char *type="unknown")
 
void insert (SignallingComponent *component)
 
virtual void detach ()
 
void setName (const char *name)
 
void setCompType (const char *type)
 
unsigned long tickSleep (unsigned long usec=1000000) const
 
- Protected Member Functions inherited from RefObject
virtual void zeroRefs ()
 
bool resurrect ()
 
- Protected Member Functions inherited from DebugEnabler
void debugName (const char *name)
 

Additional Inherited Members

- Protected Attributes inherited from SS7Layer2
bool m_autoEmergency
 
int m_lastSeqRx
 
unsigned int m_congestion
 

Detailed Description

SIGTRAN MTP2 User Peer-to-Peer Adaptation Layer.

RFC4165 SS7 Layer 2 implementation over SCTP/IP. M2PA is intended to be used as a symmetrical Peer-to-Peer replacement of a hardware based SS7 data link.

Constructor & Destructor Documentation

◆ SS7M2PA()

SS7M2PA ( const NamedList & params)

Constructor

◆ ~SS7M2PA()

~SS7M2PA ( )

Destructor

Member Function Documentation

◆ abortAlignment()

void abortAlignment ( const char * info = 0)

Helper method called when an error was detected Change state to OutOfService and notifys upper layer

Parameters
infoDebuging purpose, Information about detected error

◆ aligned()

virtual bool aligned ( ) const
protectedvirtual

Check if the link is aligned. The link may not be operational, the other side may be still proving.

Returns
True if the link is aligned

◆ control() [1/3]

virtual bool control ( M2PAOperations oper,
NamedList * params = 0 )
virtual

Execute a control operation. Operations can change the link status or can query the aligned status.

Parameters
operOperation to execute
paramsOptional parameters for the operation
Returns
True if the command completed successfully, for query operations also indicates the data link is aligned and operational

◆ control() [2/3]

virtual bool control ( NamedList & params)
virtual

Query or modify layer's settings or operational parameters

Parameters
paramsThe list of parameters to query or change
Returns
True if the control operation was executed

Reimplemented from SS7Layer2.

Referenced by control().

◆ control() [3/3]

virtual bool control ( SS7Layer2::Operation oper,
NamedList * params = 0 )
inlinevirtual

Execute a control operation. Operations can change the link status or can query the aligned status.

Parameters
operOperation to execute
paramsOptional parameters for the operation
Returns
True if the command completed successfully, for query operations also indicates the data link is aligned and operational

Reimplemented from SS7Layer2.

References control().

◆ decodeSeq()

bool decodeSeq ( const DataBlock & data,
u_int8_t msgType )

Decode sequence numbers from message and process them

Parameters
dataThe message
msgTypeThe message type
Returns
True if sequence numbers ar as we expected to be

◆ destroyed()

virtual void destroyed ( )
protectedvirtual

This method is called to clean up and destroy the object after the reference counter becomes zero

Reimplemented from SignallingComponent.

References status().

◆ getNext()

static u_int32_t getNext ( u_int32_t nr)
inlinestatic

Obtain next sequence number

Parameters
nrThe current sequence number
Returns
The next number in sequence

◆ increment()

static u_int32_t increment ( u_int32_t & nr)
inlinestatic

Increment the given sequence number

Parameters
nrReference of the number to increment
Returns
The incremented number

◆ initialize()

virtual bool initialize ( const NamedList * config)
virtual

Configure and initialize M2PA and its transport

Parameters
configOptional configuration parameters override
Returns
True if M2PA and the transport were initialized properly

Reimplemented from SignallingComponent.

◆ nextBsn()

bool nextBsn ( u_int32_t bsn) const

Check if a sequence number may be a valid next BSN

Parameters
bsnBackward Sequence Number to check
Returns
True if the provided BSN is in the valid range

◆ notifyLayer()

virtual void notifyLayer ( SignallingInterface::Notification status)
virtual

Method called when the transport status has been changed

Parameters
statusUp or down

Reimplemented from SIGTRAN.

References status().

◆ operational()

virtual bool operational ( ) const
protectedvirtual

Check if the link is aligned and operational

Returns
True if the link is operational

Implements SS7Layer2.

◆ processLinkStatus()

bool processLinkStatus ( DataBlock & data,
int streamId )

Decode and process link status message

Parameters
dataThe message
streamIdThe stream id witch received the message
Returns
True if the message was procesed

◆ processMSG()

virtual bool processMSG ( unsigned char msgVersion,
unsigned char msgClass,
unsigned char msgType,
const DataBlock & msg,
int streamId )
protectedvirtual

Process a complete message

Parameters
msgVersionVersion of the protocol
msgClassClass of the message
msgTypeType of the message, depends on the class
msgMessage data, may be empty
streamIdIdentifier of the stream the message was received on
Returns
True if the message was handled

Implements SIGTRAN.

◆ processSLinkStatus()

bool processSLinkStatus ( DataBlock & data,
int streamId )

Decode and process link status message in more strict manner

Parameters
dataThe message
streamIdThe stream id witch received the message
Returns
True if the message was procesed

◆ recoverMSU()

virtual void recoverMSU ( int sequence)
virtual

Remove the MSUs waiting in the transmit queue and return them

Parameters
sequenceFirst sequence number to recover, flush earlier packets

Reimplemented from SS7Layer2.

◆ removeFrame()

bool removeFrame ( u_int32_t bsn)

Remove a frame from acknowledgement list

Parameters
bsnThe sequence number of the frame to be removed
Returns
True if the frame was found and removed.

◆ retransData()

void retransData ( )
protected

Retransmit unacknowledged data

◆ sendAck()

void sendAck ( )

Helper method used to acknowledge the last received message when no data are to transmit

◆ setHeader()

void setHeader ( DataBlock & data)

Create M2PA header (sequence numbers)

Parameters
dataThe data where the header will be stored

◆ startAlignment()

void startAlignment ( bool emergency = false)
protected

Initiates alignment and proving procedure

Parameters
emergencyTrue if emergency alignment is desired

◆ status()

virtual unsigned int status ( ) const
virtual

Retrieve the current link status indications

Returns
Link status indication bits

Reimplemented from SS7Layer2.

Referenced by destroyed(), and notifyLayer().

◆ timerTick()

virtual void timerTick ( const Time & when)
protectedvirtual

Periodical timer tick used to perform alignment and housekeeping

Parameters
whenTime to use as computing base for events and timeouts

Reimplemented from SS7Layer2.

◆ transmitLS()

void transmitLS ( int streamId = 0)

Send link status message to inform the peer about ouer curent state

Parameters
streamIdThe id of the stream who should send the message

◆ transmitMSU()

virtual bool transmitMSU ( const SS7MSU & msu)
virtual

Push a Message Signal Unit down the protocol stack

Parameters
msuMSU data to transmit
Returns
True if message was successfully queued

Implements SS7Layer2.


The documentation for this class was generated from the following file: