Yate
SCCPManagement Class Referenceabstract

Abstract SS7 SCCP Management. More...

#include <yatesig.h>

Inheritance diagram for SCCPManagement:
SignallingComponent Mutex RefObject DebugEnabler Lockable GenObject SS7AnsiSccpManagement SS7ItuSccpManagement

Public Types

enum  MsgType {
  SSA = 0x01 , SSP = 0x02 , SST = 0x03 , SOR = 0x04 ,
  SOG = 0x05 , SSC = 0x06 , SBR = 0xfd , SNR = 0xfe ,
  SRT = 0xff
}
 
enum  LocalBroadcast {
  UserOutOfService , UserInService , PCInaccessible , PCAccessible ,
  SccpRemoteInaccessible , SccpRemoteAccessible , PCCongested , SubsystemStatus
}
 
enum  SccpStates {
  Allowed = SS7Route::Allowed , Prohibited = SS7Route::Prohibited , Unknown = SS7Route::Unknown , WaitForGrant ,
  IgnoreTests
}
 

Public Member Functions

 SCCPManagement (const NamedList &params, SS7PointCode::Type type)
 
virtual ~SCCPManagement ()
 
virtual bool initialize (const NamedList *config)
 
virtual bool processMessage (SS7MsgSCCP *message)
 
void attach (SS7SCCP *sccp)
 
virtual void pointcodeStatus (SS7Layer3 *link, bool operational)
 
virtual void routeStatus (SS7PointCode::Type type, const SS7PointCode &node, SS7Route::State state)
 
virtual void notify (SCCP::Type type, NamedList &params)
 
virtual void routeFailure (SS7MsgSCCP *msg)
 
virtual void subsystemFailure (SS7MsgSCCP *msg, const SS7Label &label)
 
virtual void sccpUnavailable (const SS7PointCode &pointcode, unsigned char cause)
 
void subsystemsStatus (String &dest, bool extended=true)
 
void routeStatus (String &dest, bool extended=false)
 
virtual void notifyConcerned (MsgType msg, unsigned char ssn, int smi)
 
virtual void updateTables (SccpRemote *rsccp, SccpSubsystem *ssn=0)
 
virtual void printMessage (String &dest, MsgType type, const NamedList &params)
 
- Public Member Functions inherited from SignallingComponent
virtual ~SignallingComponent ()
 
virtual const StringtoString () const
 
virtual bool control (NamedList &params)
 
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 Mutex
 Mutex (bool recursive=false, const char *name=0)
 
 Mutex (const Mutex &original)
 
 ~Mutex ()
 
Mutexoperator= (const Mutex &original)
 
virtual bool lock (long maxwait=-1)
 
virtual bool unlock ()
 
virtual bool locked () const
 
const char * owner () const
 
bool recursive () const
 
- Public Member Functions inherited from Lockable
virtual ~Lockable ()
 
virtual bool check (long maxwait=-1)
 
virtual bool unlockAll ()
 

Static Public Member Functions

static const TokenDictbroadcastType ()
 
static const char * stateName (SCCPManagement::SccpStates state)
 
- 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 Mutex
static int count ()
 
static int locks ()
 
static bool efficientTimedLock ()
 
- Static Public Member Functions inherited from Lockable
static void wait (unsigned long maxwait)
 
static unsigned long wait ()
 
static void startUsingNow ()
 
static void enableSafety (bool safe=true)
 
static bool safety ()
 

Protected Member Functions

virtual void timerTick (const Time &when)
 
SS7SCCPsccp ()
 
u_int32_t getTestTimeout ()
 
bool managementMessage (SCCP::Type type, NamedList &params)
 
SccpLocalSubsystemgetLocalSubsystem (unsigned char ssn)
 
SccpRemotegetRemoteSccp (int pointcode)
 
virtual bool sendMessage (SCCPManagement::MsgType msgType, const NamedList &params)=0
 
virtual void stopSst (SccpRemote *remoteSccp, SccpSubsystem *rSubsystem=0, SccpSubsystem *less=0)
 
void stopSSTs ()
 
virtual void startSst (SccpRemote *remoteSccp, SccpSubsystem *rSubsystem)
 
void mtpEndRestart ()
 
void localBroadcast (SCCP::Type type, int pointcode, int sps, int rss=-1, int rl=-1, int ssn=-1, int ss=-1)
 
bool sendSST (SccpRemote *remote, SccpSubsystem *sub)
 
bool handleMessage (int msgType, unsigned char ssn, unsigned char smi, NamedList &params)
 
virtual void manageSccpRemoteStatus (SccpRemote *rsccp, SS7Route::State newState)
 
bool printMessagess ()
 
void handleCoordinateChanged (unsigned char ssn, int smi, const NamedList &params)
 
void handleSog (unsigned char ssn, int pointcode)
 
virtual void handleSubsystemStatus (SccpSubsystem *subsystem, bool allowed, SccpRemote *remote, int smi)
 
u_int32_t getCoordTimeout ()
 
u_int32_t getIgnoreTestsInterval ()
 
- Protected Member Functions inherited from SignallingComponent
 SignallingComponent (const char *name=0, const NamedList *params=0, const char *type="unknown")
 
virtual void destroyed ()
 
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)
 

Protected Attributes

ObjList m_remoteSccp
 
ObjList m_statusTest
 
ObjList m_localSubsystems
 
ObjList m_concerned
 
SS7PointCode::Type m_pcType
 

Friends

class SS7SCCP
 
class SccpLocalSubsystem
 

Detailed Description

Abstract SS7 SCCP Management.

An interface to a SS7 SCCP Management

Constructor & Destructor Documentation

◆ SCCPManagement()

SCCPManagement ( const NamedList & params,
SS7PointCode::Type type )

◆ ~SCCPManagement()

virtual ~SCCPManagement ( )
virtual

Destructor

Member Function Documentation

◆ attach()

void attach ( SS7SCCP * sccp)

Attach a ss7 sccp to this management

Parameters
sccpThe ss7 sccp to attach

◆ broadcastType()

static const TokenDict * broadcastType ( )
static

Obtain broadcast type dict table

Returns
Pointer to broadcast type dict table

◆ getCoordTimeout()

u_int32_t getCoordTimeout ( )
inlineprotected

Ontain the coordinate changed time interval

Returns
The coordinate time interval in ms

◆ getIgnoreTestsInterval()

u_int32_t getIgnoreTestsInterval ( )
inlineprotected

Obtain ignore status tests time interval

Returns
ignore status tests time interval in ms

◆ getLocalSubsystem()

SccpLocalSubsystem * getLocalSubsystem ( unsigned char ssn)
protected

Obtain a local subsystem

Parameters
ssnThe local subsystem ssn
Returns
Pointer to local subsystem if found, 0 otherwise

◆ getRemoteSccp()

SccpRemote * getRemoteSccp ( int pointcode)
protected

Obtain a remote SCCP

Parameters
pointcodeThe remote sccp pointcode
Returns
The remote SCCP with the matching pointcode or 0 if not found

◆ getTestTimeout()

u_int32_t getTestTimeout ( )
inlineprotected

Obtain the subsystem status test time interval

Returns
Subsystem status test duration

◆ handleCoordinateChanged()

void handleCoordinateChanged ( unsigned char ssn,
int smi,
const NamedList & params )
protected

Helper method that handles coordinate request

Parameters
ssnLocal subsystem that wish to go out of service
smiSubsystem multiplicity indicator
paramsList of parameters

◆ handleMessage()

bool handleMessage ( int msgType,
unsigned char ssn,
unsigned char smi,
NamedList & params )
protected

Process a sccp management message

Parameters
msgTypeThe sccp management message type
ssnThe affected subsystem
smiThe subsystem multiplicity indicator
paramsThe message params
Returns
True if the message was handled

◆ handleSog()

void handleSog ( unsigned char ssn,
int pointcode )
protected

Handle a subsystem out of service grant message

Parameters
ssnRemote subsystem ssn
pointcodeRemote subsystem pointcode Note! Lock management mutex before calling this method

◆ handleSubsystemStatus()

virtual void handleSubsystemStatus ( SccpSubsystem * subsystem,
bool allowed,
SccpRemote * remote,
int smi )
inlineprotectedvirtual

Process the status of subsystems

Parameters
subsystemThe subsystem who's status has changed
allowedTrue if the subsystem status is Allowed false for Prohibited
remoteThe remote sccp pointcode where the subsystem is located
smiSubsystem Multiplicity Indicator

Reimplemented in SS7AnsiSccpManagement, and SS7ItuSccpManagement.

◆ initialize()

virtual bool initialize ( const NamedList * config)
virtual

Initialize this sccp management

Reimplemented from SignallingComponent.

◆ localBroadcast()

void localBroadcast ( SCCP::Type type,
int pointcode,
int sps,
int rss = -1,
int rl = -1,
int ssn = -1,
int ss = -1 )
protected

Send a local sccp broadcast

Parameters
typeThe broadcast message type
pointcodeThe affected pointcode. -1 if it should not be included
spsThe signalling point status. -1 if it should not be included
rssThe remote sccp status. -1 if it should not be included
rlThe restriction level. -1 if it should not be included
ssnThe affected ssn. -1 if it should not be included
ssThe subsystem status. -1 if it should not be included

◆ managementMessage()

bool managementMessage ( SCCP::Type type,
NamedList & params )
protected

Broadcast a management message to local attached sccp users

Parameters
typeThe broadcast type
paramsList of parameters
Returns
True if at least one user has processed the message

◆ manageSccpRemoteStatus()

virtual void manageSccpRemoteStatus ( SccpRemote * rsccp,
SS7Route::State newState )
inlineprotectedvirtual

Process remote sccp state

Parameters
rsccpThe remote sccp witch state has changed
newStateThe new state of the remote sccp

Reimplemented in SS7AnsiSccpManagement, and SS7ItuSccpManagement.

◆ mtpEndRestart()

void mtpEndRestart ( )
protected

Notification from sccp that mtp has finished restarting

◆ notify()

virtual void notify ( SCCP::Type type,
NamedList & params )
virtual

Notification from sccp about local subsystems status

Parameters
typeThe type of notification
paramsThe notification parameters

◆ notifyConcerned()

virtual void notifyConcerned ( MsgType msg,
unsigned char ssn,
int smi )
virtual

Helper method used to notify the concerned signalling points about a subsystem status

Parameters
msgThe message type to broadcast
ssnLocal affected ssn
smiLocal subsystem multiplicity indicator

◆ pointcodeStatus()

virtual void pointcodeStatus ( SS7Layer3 * link,
bool operational )
virtual

Process a notification from MTP about a pointcode status

Parameters
linkThe affected link
operationalTrue if the layer3 is operational

◆ printMessage()

virtual void printMessage ( String & dest,
MsgType type,
const NamedList & params )
virtual

Print a sccp management message

Parameters
destThe destination string
typeThe sccp management message type
paramsList of sccp management message parameters

◆ printMessagess()

bool printMessagess ( )
inlineprotected

Helper method used to check if we should print sccp management messages

Returns
True if we should print messages

◆ processMessage()

virtual bool processMessage ( SS7MsgSCCP * message)
virtual

Process a management message received from sccp

Parameters
messageThe message to process
Returns
True if the message was processed successfully

Reimplemented in SS7AnsiSccpManagement, and SS7ItuSccpManagement.

◆ routeFailure()

virtual void routeFailure ( SS7MsgSCCP * msg)
virtual

Method called by SCCP to inform management that no route was found for the message

Parameters
msgThe SCCP message that failed to be routed

◆ routeStatus() [1/2]

virtual void routeStatus ( SS7PointCode::Type type,
const SS7PointCode & node,
SS7Route::State state )
virtual

Process a notification from router about a route state change

Parameters
typeThe Point Code type
nodeThe remote pointcode
stateThe route state

◆ routeStatus() [2/2]

void routeStatus ( String & dest,
bool extended = false )

Helper method used to obtain information about the messages that failed to be routed

Parameters
destThe destination string
extendedTrue to print the GTT failures

◆ sccpUnavailable()

virtual void sccpUnavailable ( const SS7PointCode & pointcode,
unsigned char cause )
virtual

Notification from layer3 about a remote sccp unavailability

Parameters
pointcodeThe poincode of the unavailable sccp
causeUnavailability cause

◆ sendMessage()

virtual bool sendMessage ( SCCPManagement::MsgType msgType,
const NamedList & params )
protectedpure virtual

Encode a sccp management message and send it to remote address

Parameters
msgTypeThe SCCP management message type
paramsList of message parameters
Returns
True if the message was successfully send

Implemented in SS7AnsiSccpManagement, and SS7ItuSccpManagement.

◆ sendSST()

bool sendSST ( SccpRemote * remote,
SccpSubsystem * sub )
protected

Helper method. Send subsystem status test Note: Management mutex must not be locked. Thread safe

Parameters
remoteThe remote sccp
subThe remote subsystem

◆ startSst()

virtual void startSst ( SccpRemote * remoteSccp,
SccpSubsystem * rSubsystem )
protectedvirtual

Start a new subsystem status test

Parameters
remoteSccpThe remote sccp
rSubsystemThe remote subsystem

◆ stateName()

static const char * stateName ( SCCPManagement::SccpStates state)
inlinestatic

Obtain a sccp management state name

Parameters
stateThe sccp management enum state
Returns
The state name if found or 0

Referenced by SccpSubsystem::dump().

◆ stopSst()

virtual void stopSst ( SccpRemote * remoteSccp,
SccpSubsystem * rSubsystem = 0,
SccpSubsystem * less = 0 )
protectedvirtual

Stop subsystem status tests for a remote location

Parameters
remoteSccpThe remote sccp
rSubsystemThe remote subsystem. Can be 0 to stop all tests for the remote sccp
lessStop all sst except this

◆ stopSSTs()

void stopSSTs ( )
inlineprotected

Stop all subsystem status tests

References Mutex::lock().

◆ subsystemFailure()

virtual void subsystemFailure ( SS7MsgSCCP * msg,
const SS7Label & label )
virtual

Method called by sccp when a sccp message hasn't been processed by any user

Parameters
msgThe message
labelThe mtp routing label

◆ subsystemsStatus()

void subsystemsStatus ( String & dest,
bool extended = true )

Helper method used to obtain a string statistic about the messages received for unknown subsystems

Parameters
destThe string where the statistics will be stored
extendedTrue to print an extended statistic ( the number of messages received for unknown subsystem)

◆ timerTick()

virtual void timerTick ( const Time & when)
protectedvirtual

Method called periodically by engine to check for timeouts

Parameters
whenTime to use as computing base for events and timeouts Reimplemented from SignallingComponent

Reimplemented from SignallingComponent.

◆ updateTables()

virtual void updateTables ( SccpRemote * rsccp,
SccpSubsystem * ssn = 0 )
virtual

Helper method used to inform Global Title Translator to update translation tables

Parameters
rsccpThe remote SCCP witch status has been changed
ssnThe remote SCCP subsystem witch status has been changed

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