|
|
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.
enum m2paState { Alignment = 1, ProvingNormal = 2, ProvingEmergency = 3, Ready = 4, ProcessorOutage = 5, ProcessorRecovered = 6, Busy = 7, BusyEnded = 8, OutOfService = 9, } | m2paState |
enum msgType { UserData = 1, LinkStatus = 2 } | msgType |
enum sctpState { Idle, Associating, Established } | sctpState |
SS7M2PA (const NamedList& params)
| SS7M2PA |
Constructor
~SS7M2PA ()
| ~SS7M2PA |
Destructor
bool initialize (const NamedList* config)
| initialize |
[virtual]
Configure and initialize M2PA and its transport
Parameters:
config | Optional configuration parameters override |
Returns: True if M2PA and the transport were initialized properly
Reimplemented from SignallingComponent.
bool control (Operation oper, NamedList* params = 0)
| control |
[virtual]
Execute a control operation. Operations can change the link status or can query the aligned status.
Parameters:
oper | Operation to execute |
params | Optional 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.
unsigned int status ()
| status |
[const virtual]
Retrieve the current link status indications
Returns: Link status indication bits
Reimplemented from SS7Layer2.
bool transmitMSU (const SS7MSU& msu)
| transmitMSU |
[virtual]
Push a Message Signal Unit down the protocol stack
Parameters:
msu | MSU data to transmit |
Returns: True if message was successfully queued
Reimplemented from SS7Layer2.
void notifyLayer (SignallingInterface::Notification status)
| notifyLayer |
[virtual]
Method called when the transport status has been changed
Parameters:
status | Up or down |
Reimplemented from SIGTRAN.
void recoverMSU (int sequence)
| recoverMSU |
[virtual]
Remove the MSUs waiting in the transmit queue and return them
Parameters:
sequence | First sequence number to recover, flush earlier packets |
Reimplemented from SS7Layer2.
bool decodeSeq (const DataBlock& data, u_int8_t msgType)
| decodeSeq |
Decode sequence numbers from message and process them
Parameters:
data | The message |
msgType | The message type |
Returns: True if sequence numbers ar as we expected to be
void abortAlignment (const String& info)
| abortAlignment |
Helper method called when an error was detected Change state to OutOfService and notifys upper layer
Parameters:
info | Debuging purpose, Information about detected error |
void transmitLS (int streamId = 0)
| transmitLS |
Send link status message to inform the peer about ouer curent state
Parameters:
streamId | The id of the stream who should send the message |
void setHeader (DataBlock& data)
| setHeader |
Create M2PA header (sequence numbers)
Parameters:
data | The data where the header will be stored |
bool processLinkStatus (DataBlock& data, int streamId)
| processLinkStatus |
Decode and process link status message
Parameters:
data | The message |
streamId | The stream id witch received the message |
Returns: True if the message was procesed
void sendAck ()
| sendAck |
Helper method used to acknowledge the last received message when no data are to transmit
void removeFrame (u_int32_t bsn)
| removeFrame |
Remove a frame from acknowledgement list
Parameters:
bsn | The sequence number of the frame to be removed |
bool nextBsn (u_int32_t bsn)
| nextBsn |
[const]
Check if a sequence number may be a valid next BSN
Parameters:
bsn | Backward Sequence Number to check |
Returns: True if the provided BSN is in the valid range
inline u_int32_t increment (u_int32_t& nr)
| increment |
[static]
Increment the given sequence number
Parameters:
nr | Reference of the number to increment |
Returns: The incremented number
inline u_int32_t getNext (u_int32_t nr)
| getNext |
[static]
Obtain next sequence number
Parameters:
nr | The current sequence number |
Returns: The next number in sequence
void timerTick (const Time& when)
| timerTick |
[protected virtual]
Periodical timer tick used to perform alignment and housekeeping
Parameters:
when | Time to use as computing base for events and timeouts |
Reimplemented from SignallingComponent.
bool aligned ()
| aligned |
[protected const virtual]
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
bool operational ()
| operational |
[protected const virtual]
Check if the link is aligned and operational
Returns: True if the link is operational
Reimplemented from SS7Layer2.
bool processMSG (unsigned char msgVersion, unsigned char msgClass,
unsigned char msgType, const DataBlock& msg, int streamId)
| processMSG |
[protected virtual]
Process a complete message
Parameters:
msgVersion | Version of the protocol |
msgClass | Class of the message |
msgType | Type of the message, depends on the class |
msg | Message data, may be empty |
streamId | Identifier of the stream the message was received on |
Returns: True if the message was handled
Reimplemented from SIGTRAN.
void startAlignment (bool emergency = false)
| startAlignment |
[protected]
Initiates alignment and proving procedure
Parameters:
emergency | True if emergency alignment is desired |
void retransData ()
| retransData |
[protected]
Retransmit unacknowledged data
Generated by: paulc on bussard on Tue Apr 12 17:15:21 2011, using kdoc 2.0a54. |