From a941cad15ddf0b144de47ae04c7d638cb0e7b889 Mon Sep 17 00:00:00 2001 From: Kapil Date: Tue, 29 May 2012 15:06:25 +0530 Subject: [PATCH] adding M2UA SG open endpoint request code --- .../ftmod_sangoma_ss7_m2ua.c | 54 +++++++++++++++++-- 1 file changed, 49 insertions(+), 5 deletions(-) diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_m2ua.c b/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_m2ua.c index 375be9f35a..c6c1689ddc 100644 --- a/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_m2ua.c +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_m2ua.c @@ -69,6 +69,7 @@ ftdm_status_t sng_m2ua_cfg(void); static S16 ftmod_sigtran_tsap_bnd(void); static S16 ftmod_sigtran_sctsap_bnd(void); +static S16 ftmod_sigtran_open_endpoint(void); static S16 ftmod_sigtran_dlsap_bnd(U32 id); static S16 ftmod_ss7_dlsap_bnd(U32 id); @@ -708,16 +709,16 @@ static S16 ftmod_sigtran_m2ua_sctsap_config(void) /* service provider ID */ cfg.t.cfg.s.sctSapCfg.spId = 1; /* TUCL sct sap id is 1 */ /* source port number */ - cfg.t.cfg.s.sctSapCfg.srcPort = 0; + cfg.t.cfg.s.sctSapCfg.srcPort = 2904; /* interface address */ /*For multiple IP address support */ #ifdef SCT_ENDP_MULTI_IPADDR cfg.t.cfg.s.sctSapCfg.srcAddrLst.nmb = 1; cfg.t.cfg.s.sctSapCfg.srcAddrLst.nAddr[0].type = CM_NETADDR_IPV4; - cfg.t.cfg.s.sctSapCfg.srcAddrLst.nAddr[0].u.ipv4NetAddr = ftmod_parse_conv_ipaddr((S8*)"192.168.1.100"); + cfg.t.cfg.s.sctSapCfg.srcAddrLst.nAddr[0].u.ipv4NetAddr = ftmod_parse_conv_ipaddr((S8*)"192.168.1.102"); #else cfg.t.cfg.s.sctSapCfg.intfAddr.type = CM_NETADDR_IPV4; - cfg.t.cfg.s.sctSapCfg.intfAddr.u.ipv4NetAddr = ftmod_parse_conv_ipaddr((S8*)"192.168.1.100"); + cfg.t.cfg.s.sctSapCfg.intfAddr.u.ipv4NetAddr = ftmod_parse_conv_ipaddr((S8*)"192.168.1.102"); #endif /* lower SAP primitive timer */ @@ -784,7 +785,7 @@ static S16 ftmod_sigtran_m2ua_peer_config(void) cfg.t.cfg.s.peerCfg.assocCfg.suId = 0; /* SCTSAP ID */ cfg.t.cfg.s.peerCfg.assocCfg.dstAddrLst.nmb = 1; /* destination address list*/ cfg.t.cfg.s.peerCfg.assocCfg.dstAddrLst.nAddr[0].type = CM_NETADDR_IPV4; - cfg.t.cfg.s.peerCfg.assocCfg.dstAddrLst.nAddr[0].u.ipv4NetAddr = ftmod_parse_conv_ipaddr((S8*)"192.168.1.100");/* TODO */; + cfg.t.cfg.s.peerCfg.assocCfg.dstAddrLst.nAddr[0].u.ipv4NetAddr = ftmod_parse_conv_ipaddr((S8*)"192.168.1.101");/* TODO */; #if 0 cfg.t.cfg.s.peerCfg.assocCfg.dstAddrLst.nAddr[1].type = CM_NETADDR_IPV4; cfg.t.cfg.s.peerCfg.assocCfg.dstAddrLst.nAddr[1].u.ipv4NetAddr = ftmod_parse_conv_ipaddr("172.25.0.93"); /* TODO */; @@ -794,7 +795,7 @@ static S16 ftmod_sigtran_m2ua_peer_config(void) #endif cfg.t.cfg.s.peerCfg.assocCfg.srcAddrLst.nmb = 1; /* source address list */ cfg.t.cfg.s.peerCfg.assocCfg.srcAddrLst.nAddr[0].type = CM_NETADDR_IPV4; - cfg.t.cfg.s.peerCfg.assocCfg.srcAddrLst.nAddr[0].u.ipv4NetAddr = ftmod_parse_conv_ipaddr((S8*)"192.168.1.100");/* TODO */; + cfg.t.cfg.s.peerCfg.assocCfg.srcAddrLst.nAddr[0].u.ipv4NetAddr = ftmod_parse_conv_ipaddr((S8*)"192.168.1.102");/* TODO */; cfg.t.cfg.s.peerCfg.assocCfg.priDstAddr.type = CM_NETADDR_IPV4; cfg.t.cfg.s.peerCfg.assocCfg.priDstAddr.u.ipv4NetAddr = cfg.t.cfg.s.peerCfg.assocCfg.dstAddrLst.nAddr[0].u.ipv4NetAddr; @@ -1196,10 +1197,53 @@ int ftmod_ss7_m2ua_start(void){ ftdm_log (FTDM_LOG_INFO ,"Control request to bind DLSAP between NIF and MTP2 : OK\n"); } } + + /* Send a control request to open endpoint */ + if( (ret = ftmod_sigtran_open_endpoint()) != ROK) + { + ftdm_log (FTDM_LOG_ERROR ,"ftmod_sigtran_open_endpoint FAIL \n"); + return 1; + } + else + { + ftdm_log (FTDM_LOG_ERROR ,"ftmod_sigtran_open_endpoint SUCCESS \n"); + } + return 0; } +static S16 ftmod_sigtran_open_endpoint(void) +{ + Pst pst; + MwMgmt cntrl; + memset((U8 *)&pst, 0, sizeof(Pst)); + memset((U8 *)&cntrl, 0, sizeof(MwMgmt)); + + smPstInit(&pst); + + pst.dstEnt = ENTMW; + + /* prepare header */ + cntrl.hdr.msgType = TCNTRL; /* message type */ + cntrl.hdr.entId.ent = ENTMW; /* entity */ + cntrl.hdr.entId.inst = 0; /* instance */ + cntrl.hdr.elmId.elmnt = STMWSCTSAP; /* General */ + cntrl.hdr.transId = 1; /* transaction identifier */ + + cntrl.hdr.response.selector = 0; + cntrl.hdr.response.prior = PRIOR0; + cntrl.hdr.response.route = RTESPEC; + cntrl.hdr.response.mem.region = S_REG; + cntrl.hdr.response.mem.pool = S_POOL; + + + cntrl.t.cntrl.action = AMWENDPOPEN; + cntrl.t.cntrl.s.suId = 0; /* M2UA sct sap Id */ + + return (sng_cntrl_m2ua (&pst, &cntrl)); + +} static S16 ftmod_sigtran_tsap_bnd(void) {