adding M2UA configuration/alarm handling code

This commit is contained in:
kapil 2012-05-30 12:31:25 +05:30
parent d3c8429af9
commit 69501d091c
5 changed files with 676 additions and 451 deletions

View File

@ -316,7 +316,7 @@ if test "${HAVE_SNG_SS7}" = "yes"; then
case "${host}" in
x86_64-*)
# X86_64 machines need additional flags when compiling against libsng_isdn
CFLAGS="$CFLAGS -DBIT_64 -DALIGN_64BIT"
CFLAGS="$CFLAGS -DBIT_64 -DALIGN_64BIT -DDEBUGP"
;;
esac
fi

View File

@ -827,28 +827,293 @@ void handle_sng_relay_alarm(Pst *pst, RyMngmt *sta)
/******************************************************************************/
void handle_sng_m2ua_alarm(Pst *pst, MwMgmt *sta)
{
ftdm_log(FTDM_LOG_ERROR," handle_sng_m2ua_alarm Not Yet Implement \n");
/* To print the general information */
ftdm_log(FTDM_LOG_INFO, "Recieved a status indication from M2UA layer \n\n");
ftdm_log(FTDM_LOG_INFO," Category = %d , event = %d , cause = %d\n",
sta->t.usta.alarm.category, sta->t.usta.alarm.event, sta->t.usta.alarm.cause);
/* To print the affected element value */
switch(sta->hdr.elmId.elmnt)
{
case STMWDLSAP:
{
ftdm_log(FTDM_LOG_INFO," STMWDLSAP: with lnkNmb (%d) \n\n",
sta->t.usta.s.lnkNmb);
break;
}
case STMWSCTSAP:
{
ftdm_log(FTDM_LOG_INFO," STMWSCTSAP: suId (%d) \n\n",
sta->t.usta.s.suId);
break;
}
case STMWPEER:
{
ftdm_log(FTDM_LOG_INFO," STMWPEER: peerId (%d) \n\n",
sta->t.usta.s.peerId);
break;
}
case STMWCLUSTER:
{
ftdm_log(FTDM_LOG_INFO," STMWCLUSTER: clusterId (%d) \n\n",
sta->t.usta.s.peerId);
break;
}
default:
{
ftdm_log(FTDM_LOG_ERROR, "[MW_USTA]: Invalid element \n\n");
break;
}
}
/* To print the event specific information */
switch(sta->t.usta.alarm.event)
{
case LMW_EVENT_ESTABLISH_OK:
{
ftdm_log(FTDM_LOG_INFO," M2UA : LMW_EVENT_ESTABLISH_OK Event raised on peerId[%d]\n",sta->t.usta.s.peerId);
break;
}
case LMW_EVENT_ESTABLISH_FAIL:
{
ftdm_log(FTDM_LOG_INFO," M2UA : LMW_EVENT_ESTABLISH_FAIL Event raised on peerId[%d]\n",sta->t.usta.s.peerId);
break;
}
case LMW_EVENT_ASPM:
{
ftdm_log(FTDM_LOG_INFO," M2UA : LMW_EVENT_ASPM Event raised with peerId (%d), aspId (%d),"
" msgType (%d)\n\n",sta->t.usta.s.peerId,
sta->t.usta.t.aspm.msgType);
break;
}
case LMW_EVENT_CLUSTER:
{
ftdm_log(FTDM_LOG_INFO," M2UA : LMW_EVENT_CLUSTER Event raised on clusterId (%d), state (%d)\n\n",
sta->t.usta.s.clusterId, sta->t.usta.t.cluster.state);
break;
}
case LMW_EVENT_NOTIFY:
{
ftdm_log(FTDM_LOG_INFO," M2UA : LMW_EVENT_NOTIFY: peerId (%d), aspId (%d), ntfy status type (%d),"
" ntfy status id (%d)\n\n", sta->t.usta.s.peerId,
sta->t.usta.t.ntfy.aspId, sta->t.usta.t.ntfy.stType,
sta->t.usta.t.ntfy.stId);
break;
}
case LMW_EVENT_M2UA_PROTO_ERROR:
{
ftdm_log(FTDM_LOG_ERROR, " M2UA : LMW_EVENT_M2UA_PROTO_ERROR with errorCode (%d)\n\n",
sta->t.usta.t.error.errCode);
break;
}
default:
break;
}
} /* handle_sng_m2ua_alarm */
/******************************************************************************/
void handle_sng_nif_alarm(Pst *pst, NwMgmt *sta)
{
ftdm_log(FTDM_LOG_ERROR," handle_sng_nif_alarm Not Yet Implement \n");
/* To print the general information */
ftdm_log(FTDM_LOG_INFO," Recieved a status indication from NIF layer\n");
ftdm_log(FTDM_LOG_INFO," Category = %d , event = %d , cause = %d\n", sta->t.usta.alarm.category,
sta->t.usta.alarm.event, sta->t.usta.alarm.cause);
switch(sta->hdr.elmId.elmnt)
{
case STNWDLSAP:
{
ftdm_log(FTDM_LOG_INFO," Recieved STNWDLSAP status indication for suId (%d) \n", sta->t.usta.suId);
switch(sta->t.usta.alarm.event)
{
case LCM_EVENT_LI_INV_EVT:
{
switch(sta->t.usta.alarm.cause)
{
case LCM_CAUSE_INV_SAP:
{
ftdm_log(FTDM_LOG_ERROR, " LCM_CAUSE_INV_SAP Alarm \n");
break;
}
case LCM_CAUSE_INV_STATE:
{
ftdm_log(FTDM_LOG_ERROR, " LCM_CAUSE_INV_STATE Alarm \n");
break;
}
default:
break;
}
break;
}
case LCM_EVENT_BND_OK:
{
ftdm_log(FTDM_LOG_INFO," NIF: LCM_EVENT_BND_OK Alarm \n");
break;
}
case LCM_EVENT_BND_FAIL:
{
ftdm_log(FTDM_LOG_INFO," NIF: LCM_EVENT_BND_FAIL Alarm \n");
break;
}
default:
break;
}
break;
}
default:
break;
}
} /* handle_sng_nif_alarm */
/******************************************************************************/
void handle_sng_tucl_alarm(Pst *pst, HiMngmt *sta)
{
ftdm_log(FTDM_LOG_ERROR," handle_sng_tucl_alarm Not Yet Implement \n");
/* To print the general information */
ftdm_log(FTDM_LOG_INFO, "Recieved a status indication from TUCL layer \n\n");
ftdm_log(FTDM_LOG_INFO, " Category = %d , event = %d , cause = %d\n",
sta->t.usta.alarm.category,
sta->t.usta.alarm.event, sta->t.usta.alarm.cause);
switch(sta->t.usta.alarm.event)
{
case LCM_EVENT_INV_EVT:
{
ftdm_log(FTDM_LOG_INFO," [HI_USTA]: LCM_EVENT_INV_EVT with type (%d)\n\n",
sta->t.usta.info.type);
break;
}
case LHI_EVENT_BNDREQ:
{
ftdm_log(FTDM_LOG_INFO," [HI_USTA]: LHI_EVENT_BNDREQ with type (%d) spId (%d)\n\n",
sta->t.usta.info.type, sta->t.usta.info.spId);
break;
}
case LHI_EVENT_SERVOPENREQ:
case LHI_EVENT_DATREQ:
case LHI_EVENT_UDATREQ:
case LHI_EVENT_CONREQ:
case LHI_EVENT_DISCREQ:
#if(defined(HI_TLS) && defined(HI_TCP_TLS))
case LHI_EVENT_TLS_ESTREQ:
#endif
{
ftdm_log(FTDM_LOG_INFO," [HI_USTA]: partype (%d) type(%d)\n\n",
sta->t.usta.info.inf.parType, sta->t.usta.info.type);
break;
}
case LCM_EVENT_DMEM_ALLOC_FAIL:
case LCM_EVENT_SMEM_ALLOC_FAIL:
{
ftdm_log(FTDM_LOG_ERROR," [HI_USTA]: MEM_ALLOC_FAIL with region(%d) pool (%d) type(%d)\n\n",
sta->t.usta.info.inf.mem.region, sta->t.usta.info.inf.mem.pool,
sta->t.usta.info.type);
break;
}
default:
break;
}
} /* handle_sng_tucl_alarm */
/******************************************************************************/
void handle_sng_sctp_alarm(Pst *pst, SbMgmt *sta)
{
ftdm_log(FTDM_LOG_ERROR," handle_sng_sctp_alarm Not Yet Implement \n");
ftdm_log(FTDM_LOG_INFO, "Recieved a status indication from SCTP layer \n\n");
ftdm_log(FTDM_LOG_INFO," Category = %d , event = %d , cause = %d "
" [SB_USTA]: sapId (%d) and swtch (%d)\n",
sta->t.usta.alarm.category,
sta->t.usta.alarm.event, sta->t.usta.alarm.cause,
sta->t.usta.sapId, sta->t.usta.swtch);
switch(sta->t.usta.alarm.category)
{
case LCM_CATEGORY_INTERFACE:
{
switch(sta->t.usta.alarm.cause)
{
case LCM_CAUSE_INV_SPID:
{
ftdm_log(FTDM_LOG_ERROR, "SCTP : LCM_CAUSE_INV_SPID Alarm \n");
break;
}
case LCM_CAUSE_SWVER_NAVAIL:
{
ftdm_log(FTDM_LOG_ERROR, "SCTP : LCM_CAUSE_SWVER_NAVAIL Alarm\n");
break;
}
case LCM_CAUSE_INV_PAR_VAL:
{
ftdm_log(FTDM_LOG_ERROR, "SCTP : LCM_CAUSE_INV_PAR_VAL Alarm\n");
break;
}
case LCM_CAUSE_INV_SUID:
{
ftdm_log(FTDM_LOG_ERROR, "SCTP : LCM_CAUSE_INV_SUID Alarm\n");
break;
}
case LCM_CAUSE_INV_SAP:
{
ftdm_log(FTDM_LOG_ERROR, "SCTP : LCM_CAUSE_INV_SAP Alarm\n");
break;
}
default:
break;
}
break;
}
case LCM_CATEGORY_RESOURCE:
{
switch(sta->t.usta.alarm.cause)
{
case LCM_CAUSE_MEM_ALLOC_FAIL:
{
ftdm_log(FTDM_LOG_ERROR, "SCTP : LCM_CAUSE_MEM_ALLOC_FAIL Alarm \n");
break;
}
case LSB_CAUSE_NUM_ADDR_EXCEED:
{
ftdm_log(FTDM_LOG_ERROR, "SCTP : LSB_CAUSE_NUM_ADDR_EXCEED Alarm\n");
break;
}
default:
break;
}
break;
}
case LCM_CATEGORY_PROTOCOL:
{
switch(sta->t.usta.alarm.cause)
{
case LSB_CAUSE_PATH_FAILURE:
{
ftdm_log(FTDM_LOG_ERROR, "SCTP : LSB_CAUSE_PATH_FAILURE Alarm \n");
break;
}
case LSB_CAUSE_PATH_ACTIVE:
{
ftdm_log(FTDM_LOG_ERROR, "SCTP : LSB_CAUSE_PATH_ACTIVE Alarm \n");
break;
}
case LSB_CAUSE_UNRSLVD_ADDR:
{
ftdm_log(FTDM_LOG_ERROR, "SCTP : LSB_CAUSE_UNRSLVD_ADDR Alarm \n");
break;
}
default:
break;
}
break;
}
default:
break;
}
} /* handle_sng_sctp_alarm */
/******************************************************************************/

View File

@ -61,7 +61,7 @@ typedef struct sng_m2ua_cfg{
uint32_t id; /* ID */
uint8_t nodeType; /*Node Type SG/ASP */
uint16_t sctpId; /* idx to sctp profile */
uint16_t peerdId; /* idx to m2ua_peer profile */
uint16_t peerId; /* idx to m2ua_peer profile */
uint16_t clusterId; /* idx to m2ua_cluster profile */
}sng_m2ua_cfg_t;

View File

@ -258,9 +258,9 @@ static int ftmod_ss7_parse_m2ua_interface(ftdm_conf_node_t *m2ua_interface)
/**********************************************************************/
} else if (!strcasecmp(parm->var, "peerd_id")) {
/**********************************************************************/
sng_m2ua.peerdId=atoi(parm->val);
sng_m2ua.peerId=atoi(parm->val);
SS7_DEBUG("Found an m2ua peerd_id = %d\n", sng_m2ua.peerdId);
SS7_DEBUG("Found an m2ua peerd_id = %d\n", sng_m2ua.peerId);
/**********************************************************************/
} else if (!strcasecmp(parm->var, "cluster_id")) {
/**********************************************************************/
@ -298,7 +298,7 @@ static int ftmod_ss7_fill_in_m2ua_interface(sng_m2ua_cfg_t *m2ua_iface)
g_ftdm_sngss7_data.cfg.g_m2ua_cfg.m2ua[i].id = m2ua_iface->id;
g_ftdm_sngss7_data.cfg.g_m2ua_cfg.m2ua[i].nodeType = m2ua_iface->nodeType;
g_ftdm_sngss7_data.cfg.g_m2ua_cfg.m2ua[i].sctpId = m2ua_iface->sctpId;
g_ftdm_sngss7_data.cfg.g_m2ua_cfg.m2ua[i].peerdId = m2ua_iface->peerdId;
g_ftdm_sngss7_data.cfg.g_m2ua_cfg.m2ua[i].peerId = m2ua_iface->peerId;
g_ftdm_sngss7_data.cfg.g_m2ua_cfg.m2ua[i].clusterId = m2ua_iface->clusterId;
return 0;