The SS7 router can be configured to prevent sending of SNM UPU messages.

git-svn-id: http://voip.null.ro/svn/yate@3527 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
paulc 2010-08-26 11:12:25 +00:00
parent 4c11257047
commit 2bec60dabf
3 changed files with 9 additions and 2 deletions

View File

@ -533,3 +533,6 @@
; autostart: boolean: Perform MTP restart sequence at initialization
; According to the standard the restart is performed on first link activation
;autostart=no
; sendupu: boolean: Send User Part Unavailable SNM messages
;sendupu=yes

View File

@ -203,7 +203,7 @@ SS7Router::SS7Router(const NamedList& params)
: SignallingComponent(params.safe("SS7Router"),&params),
Mutex(true,"SS7Router"),
m_changes(0), m_transfer(false), m_phase2(false), m_started(false),
m_restart(0), m_isolate(0), m_checkRoutes(false),
m_restart(0), m_isolate(0), m_checkRoutes(false), m_sendUnavail(true),
m_rxMsu(0), m_txMsu(0), m_fwdMsu(0),
m_mngmt(0), m_maint(0)
{
@ -216,6 +216,7 @@ SS7Router::SS7Router(const NamedList& params)
}
#endif
m_transfer = params.getBoolValue("transfer");
m_sendUnavail = params.getBoolValue("sendupu",m_sendUnavail);
m_restart.interval(params,"starttime",5000,(m_transfer ? 60000 : 10000),false);
m_isolate.interval(params,"isolation",500,1000,false);
loadLocalPC(params);
@ -239,6 +240,7 @@ bool SS7Router::initialize(const NamedList* config)
debugLevel(config->getIntValue("debuglevel_router",
config->getIntValue("debuglevel",-1)));
m_transfer = config->getBoolValue("transfer",m_transfer);
m_sendUnavail = config->getBoolValue("sendupu",m_sendUnavail);
const String* param = config->getParam("management");
const char* name = "ss7snm";
if (param) {
@ -599,7 +601,7 @@ bool SS7Router::receivedMSU(const SS7MSU& msu, const SS7Label& label, SS7Layer3*
}
} while (l); // loop until the list was scanned to end
unlock();
return m_transfer && (routeMSU(msu,label,network,sls,SS7Route::NotProhibited) >= 0);
return (m_transfer && (routeMSU(msu,label,network,sls,SS7Route::NotProhibited) >= 0)) || !m_sendUnavail;
}
void SS7Router::routeChanged(const SS7Route* route, SS7PointCode::Type type, GenObject* context)
@ -829,6 +831,7 @@ bool SS7Router::control(NamedList& params)
if (!(cmp && toString() == cmp))
return false;
m_sendUnavail = params.getBoolValue("sendupu",m_sendUnavail);
String err;
switch (cmd) {
case SS7Router::Pause:

View File

@ -5873,6 +5873,7 @@ private:
void checkRoutes(const SS7Layer3* noResume = 0);
int routeMSU(const SS7MSU& msu, const SS7Label& label, SS7Layer3* network, int sls, SS7Route::State states);
bool m_checkRoutes;
bool m_sendUnavail;
unsigned long m_rxMsu;
unsigned long m_txMsu;
unsigned long m_fwdMsu;