|
Yate
|
SS7 ISUP implementation. More...
#include <yatesig.h>
Public Types | |
| enum | { SlsAuto = -1 , SlsLatest = -2 , SlsCircuit = -3 , SlsDefault = -4 } |
| enum | ChargeProcess { Confusion , Ignore , Raw , Parsed } |
Public Types inherited from SignallingCallControl | |
| enum | MediaRequired { MediaNever , MediaAnswered , MediaRinging , MediaAlways } |
Public Member Functions | |
| SS7ISUP (const NamedList ¶ms, unsigned char sio=SS7MSU::ISUP|SS7MSU::National) | |
| virtual | ~SS7ISUP () |
| virtual bool | initialize (const NamedList *config) |
| virtual const char * | statusName () const |
| virtual void | attach (SS7Layer3 *network) |
| unsigned int | cicLen () const |
| const String & | format () const |
| bool | ignoreUnknownAddrSignals () const |
| bool | setPointCode (SS7PointCode *pc, bool def) |
| unsigned int | setPointCode (const NamedList ¶ms) |
| SS7PointCode * | hasPointCode (const SS7PointCode &pc) |
| bool | handlesRemotePC (const SS7PointCode &pc) const |
| void | setLabel (SS7Label &label, const SS7PointCode &opc, const SS7PointCode &dpc, unsigned char sls=255) |
| void | setDebug (bool printMsg, bool extendedDebug) |
| virtual SS7MSU * | createMSU (SS7MsgISUP::Type type, unsigned char ssf, const SS7Label &label, unsigned int cic, const NamedList *params=0) const |
| virtual SignallingCall * | call (SignallingMessage *msg, String &reason) |
| int | transmitMessage (SS7MsgISUP *msg, const SS7Label &label, bool recvLbl, int sls=SlsDefault) |
| virtual void | cleanup (const char *reason="net-out-of-order") |
| virtual bool | control (NamedList ¶ms) |
| bool | decodeMessage (NamedList &msg, SS7MsgISUP::Type msgType, SS7PointCode::Type pcType, const unsigned char *paramPtr, unsigned int paramLen) |
| bool | encodeMessage (DataBlock &buf, SS7MsgISUP::Type msgType, SS7PointCode::Type pcType, const NamedList ¶ms, unsigned int *cic=0) |
| bool | processParamCompat (const NamedList &list, unsigned int cic, bool *callReleased=0) |
| ChargeProcess | getChargeProcessType () const |
Public Member Functions inherited from SignallingCallControl | |
| SignallingCallControl (const NamedList ¶ms, const char *msgPrefix=0) | |
| virtual | ~SignallingCallControl () |
| const String & | location () const |
| void | setExiting () |
| bool | exiting () const |
| bool | verify () |
| MediaRequired | mediaRequired () const |
| const String & | msgPrefix () const |
| SignallingCircuitGroup * | circuits () const |
| const ObjList & | calls () const |
| SignallingCircuitGroup * | attach (SignallingCircuitGroup *circuits) |
| bool | reserveCircuit (SignallingCircuit *&cic, const char *range=0, int checkLock=-1, const String *list=0, bool mandatory=true, bool reverseRestrict=false) |
| bool | releaseCircuit (SignallingCircuit *&cic, bool sync=false) |
| bool | releaseCircuit (unsigned int code, bool sync=false) |
| virtual SignallingEvent * | getEvent (const Time &when) |
| virtual void | buildVerifyEvent (NamedList ¶ms) |
Public Member Functions inherited from Mutex | |
| Mutex (bool recursive=false, const char *name=0) | |
| Mutex (const Mutex &original) | |
| ~Mutex () | |
| Mutex & | operator= (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 () |
Public Member Functions inherited from SS7Layer4 | |
| SS7Layer3 * | network () const |
| unsigned char | sio () const |
| unsigned char | sif () const |
| unsigned char | ssf () const |
| unsigned char | prio () const |
| unsigned char | ni () const |
| unsigned char | getSIO (const NamedList ¶ms) const |
Public Member Functions inherited from SignallingComponent | |
| virtual | ~SignallingComponent () |
| virtual const String & | toString () const |
| virtual NamedList * | controlCreate (const char *oper=0) |
| virtual bool | controlExecute (NamedList *params) |
| virtual void | engine (SignallingEngine *eng) |
| SignallingEngine * | engine () const |
| int | debugLevel (int level) |
| const String & | componentType () 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 String & | traceId () const |
| NamedCounter * | getObjCounter () const |
| NamedCounter * | setObjCounter (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) |
Protected Member Functions | |
| virtual void | destroyed () |
| virtual void | timerTick (const Time &when) |
| virtual void | notify (SS7Layer3 *link, int sls) |
| SS7MSU * | buildMSU (SS7MsgISUP::Type type, unsigned char sio, const SS7Label &label, unsigned int cic, const NamedList *params) const |
| virtual HandledMSU | receivedMSU (const SS7MSU &msu, const SS7Label &label, SS7Layer3 *network, int sls) |
| virtual bool | processMSU (SS7MsgISUP::Type type, unsigned int cic, const unsigned char *paramPtr, unsigned int paramLen, const SS7Label &label, SS7Layer3 *network, int sls) |
| virtual void | receivedUPU (SS7PointCode::Type type, const SS7PointCode node, SS7MSU::Services part, unsigned char cause, const SS7Label &label, int sls) |
| virtual SignallingEvent * | processCircuitEvent (SignallingCircuitEvent *&event, SignallingCall *call=0) |
| bool | startCircuitReset (SignallingCircuit *&cic, const String &timer) |
Protected Member Functions inherited from SignallingCallControl | |
| int | strategy () const |
| virtual bool | processEvent (SignallingEvent *event) |
| void | clearCalls () |
| void | removeCall (SignallingCall *call, bool del=false) |
| void | setVerify (bool restartTimer=false, bool fireNow=false, const Time *time=0) |
Protected Member Functions inherited from SS7Layer4 | |
| SS7Layer4 (unsigned char sio=SS7MSU::National, const NamedList *params=0) | |
| int | transmitMSU (const SS7MSU &msu, const SS7Label &label, int sls=-1) |
Protected Member Functions inherited from SS7L3User | |
| virtual bool | recoveredMSU (const SS7MSU &msu, const SS7Label &label, SS7Layer3 *network, int sls) |
| virtual void | routeStatusChanged (SS7PointCode::Type type, const SS7PointCode &node, SS7Route::State state) |
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) |
Protected Attributes | |
| unsigned int | m_cicLen |
Protected Attributes inherited from SignallingCallControl | |
| ObjList | m_calls |
| String | m_msgPrefix |
| MediaRequired | m_mediaRequired |
| bool | m_verifyEvent |
| SignallingTimer | m_verifyTimer |
| String | m_location |
Protected Attributes inherited from SS7Layer4 | |
| unsigned char | m_sio |
Friends | |
| class | SS7ISUPCall |
Additional Inherited Members | |
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 () |
Static Public Member Functions inherited from SS7Layer4 | |
| static unsigned char | getSIO (const NamedList ¶ms, unsigned char sif, unsigned char prio, unsigned char ni) |
| static unsigned char | getSIO (const NamedList ¶ms, unsigned char sif, unsigned char ssf) |
| static unsigned char | getSIO (const NamedList ¶ms, unsigned char sio) |
Static Public Member Functions inherited from SignallingComponent | |
| static bool | resolveConfig (const String &cmpName, NamedList ¶ms, 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 NamedCounter * | getObjCounter (const String &name, bool create=true) |
| static ObjList & | getObjCounters () |
Static Protected Member Functions inherited from SS7L3User | |
| static ObjList * | getNetRoutes (SS7Layer3 *network, SS7PointCode::Type type) |
| static const ObjList * | getNetRoutes (const SS7Layer3 *network, SS7PointCode::Type type) |
Static Protected Attributes inherited from SignallingCallControl | |
| static const TokenDict | s_mediaRequired [] |
SS7 ISUP implementation.
Implementation of SS7 ISDN User Part
| anonymous enum |
Special SLS values
Constructor
| params | Call controller's parameters |
| sio | The default Service Information Octet |
References SS7Layer4::sio().
|
virtual |
Destructor
|
virtual |
Attach a SS7 network or router to this service. Detach itself from the old one
| network | Pointer to network or router to attach |
Reimplemented from SS7Layer4.
References SS7Layer4::network().
|
protected |
Create a new MSU populated with type, routing label and space for fixed part
| type | Type of ISUP message |
| sio | Service Information Octet |
| label | Routing label for the new MSU |
| cic | Circuit Identification Code |
| params | Parameter list |
References SS7Layer4::sio().
|
virtual |
Create an outgoing call. Send a NewCall event with the given msg parameter This method is thread safe
| msg | Call parameters |
| reason | Failure reason if any |
Reimplemented from SignallingCallControl.
Referenced by processCircuitEvent().
|
inline |
Get the length of the Circuit Identification Code for this user part
References m_cicLen.
|
virtual |
Cleanup calls This method is thread safe
| reason | Cleanup reason |
Reimplemented from SignallingCallControl.
|
virtual |
Query or modify ISUP's settings or operational parameters
| params | The list of parameters to query or change |
Reimplemented from SignallingComponent.
|
virtual |
Create a new MSU populated with type, routing label and space for fixed part
| type | Type of ISUP message |
| ssf | Subservice Field |
| label | Routing label for the new MSU |
| cic | Circuit Identification Code |
| params | Optional parameter list |
References SS7Layer4::ssf().
| bool decodeMessage | ( | NamedList & | msg, |
| SS7MsgISUP::Type | msgType, | ||
| SS7PointCode::Type | pcType, | ||
| const unsigned char * | paramPtr, | ||
| unsigned int | paramLen ) |
Decode an ISUP message buffer to a list of parameters
| msg | Destination list of parameters |
| msgType | The message type |
| pcType | The point code type (message version) |
| paramPtr | Pointer to the Parameter area (just after the message type) |
| paramLen | Length of the Parameter area |
|
protectedvirtual |
Remove all links with other layers. Disposes the memory
Reimplemented from SS7Layer4.
| bool encodeMessage | ( | DataBlock & | buf, |
| SS7MsgISUP::Type | msgType, | ||
| SS7PointCode::Type | pcType, | ||
| const NamedList & | params, | ||
| unsigned int * | cic = 0 ) |
Encode an ISUP list of parameters to a buffer. The input list may contain a 'message-prefix' parameter to override this controller's prefix
| buf | Destination buffer |
| msgType | The message type |
| pcType | The point code type (message version) |
| params | Message list of parameters |
| cic | Optional cic to be added before mesage |
|
inline |
Get the default data format
|
inline |
Obtain the way that charge message should be processed
|
inline |
Check if this controller should handle a remote point code
| pc | The remote point code to check |
| SS7PointCode * hasPointCode | ( | const SS7PointCode & | pc | ) |
Check if the given point code is serviced by this controller
| pc | The point code to check |
|
inline |
Check if the message parser of this controller should ignore unknown digits encoding
|
virtual |
Configure and initialize the call controller and user part
| config | Optional configuration parameters override |
Reimplemented from SS7Layer4.
|
protectedvirtual |
Process a notification generated by the attached network layer
| link | Network or linkset that generated the notification |
| sls | Signalling Link that generated the notification, negative if none |
Reimplemented from SS7L3User.
|
protectedvirtual |
Process an event received from a non-reserved circuit
| event | The event, will be consumed and zeroed |
| call | Optional signalling call whose circuit generated the event |
Reimplemented from SignallingCallControl.
References call().
|
protectedvirtual |
Process a MSU received from a Layer 3 component
| type | Type of ISUP message |
| cic | Circuit Identification Code |
| paramPtr | Pointer to the Parameter area |
| paramLen | Length of the Parameter area |
| label | Routing label of the received MSU |
| network | Network layer that delivered the MSU |
| sls | Signalling Link the MSU was received from |
References SS7Layer4::network().
| bool processParamCompat | ( | const NamedList & | list, |
| unsigned int | cic, | ||
| bool * | callReleased = 0 ) |
Process parameter compatibility lists. Terminate an existing call if a non emtpy release call parameter(s) list is found. Send CNF if non emtpy cnf parameter(s) list is found
| list | Message parameter list |
| cic | The circuit code |
| callReleased | Optional pointer to boolean value to be set if a call was released |
|
protectedvirtual |
Process a MSU received from a Layer 3 component
| msu | Message data, starting with Service Indicator Octet |
| label | Routing label of the received MSU |
| network | Network layer that delivered the MSU |
| sls | Signalling Link the MSU was received from |
Implements SS7L3User.
Reimplemented in SS7BICC.
References SS7Layer4::network().
|
protectedvirtual |
Notification for receiving User Part Unavailable
| type | Type of Point Code |
| node | Node on which the User Part is unavailable |
| part | User Part (service) reported unavailable |
| cause | Unavailability cause - Q.704 15.17.5 |
| label | Routing label of the UPU message |
| sls | Signaling link the UPU was received on |
Reimplemented from SS7L3User.
|
inline |
Set debug data of this call controller
| printMsg | Enable/disable message printing on output |
| extendedDebug | Enable/disable hex data dump if print messages is enabled |
|
inline |
Set a routing label to be used for outgoing messages
| label | Routing label to set |
| opc | Originating point code |
| dpc | Destination point code |
| sls | Signalling Link Selection |
References SS7Label::assign().
| unsigned int setPointCode | ( | const NamedList & | params | ) |
Append all point codes from a parameter list, use "pointcode" and "defaultpointcode" parameters
| params | List of parameters to take point codes from |
| bool setPointCode | ( | SS7PointCode * | pc, |
| bool | def ) |
Append a point code to the list of point codes serviced by this controller if not already there. Set default point code if requested. If the list is empty, the default point code is set to the first point code added
| pc | The point code to append |
| def | True if this point code is the default for outgoing calls |
|
protected |
Initiate circuit reset. The circuit must be already reserved This method is thread safe
| cic | The circuit to reset. Its referrence counter will be decreased and the pointer will be zeroed |
| timer | Ellapsed timer |
|
virtual |
|
protectedvirtual |
Send CGU if not already done. Check timeouts
| when | Time to use as computing base for timeouts |
Reimplemented from SignallingComponent.
| int transmitMessage | ( | SS7MsgISUP * | msg, |
| const SS7Label & | label, | ||
| bool | recvLbl, | ||
| int | sls = SlsDefault ) |
Converts an ISUP message to a Message Signal Unit and push it down the protocol stack. The given message is consumed
| msg | The message to send |
| label | The routing label for the message |
| recvLbl | True if the given label is from a received message. If true, a new routing label will be created from the received one |
| sls | Signalling Link to use for the new routing label. Ignored if recvLbl is false |
|
protected |
Length of the Circuit Identification Code in octets
Referenced by cicLen().