[Epic-ID: ODUHIGH-463][Task-ID: ODUHIGH-496] Dummy Xn Setup Request/Response
[o-du/l2.git] / src / cu_stub / cu_stub_sctp.c
index e9bd0d6..0a03f0d 100644 (file)
@@ -121,7 +121,6 @@ uint8_t sctpCfgReq()
    for(destIdx=0; destIdx < sctpCb.sctpCfg.xnSctpInfo.numDestNode; destIdx++)
    {
       sctpCb.assocCb[assocIdx].intf = XN_INTERFACE;
-      sctpCb.assocCb[assocIdx].destId = CU_ID + destIdx +1;
       sctpCb.assocCb[assocIdx].destPort = sctpCb.sctpCfg.xnSctpInfo.destCb[destIdx].destPort;
       sctpCb.assocCb[assocIdx].bReadFdSet = ROK;
       memset(&sctpCb.assocCb[assocIdx].sockFd, -1, sizeof(CmInetFd));
@@ -617,9 +616,9 @@ uint8_t processPolling(sctpSockPollParams *pollParams, CuSctpAssocCb *assocCb, u
          }
          else if(assocCb->connUp && assocCb->intf == XN_INTERFACE)
          {
-            //TODO : Handler for messages on XN interface to be added in future commits
             DU_LOG("\nDEBUG  -->  SCTP : Received message at XN interface");
             ODU_PRINT_MSG(pollParams->mBuf, 0,0);
+            XNAPMsgHdlr(&assocCb->destId, pollParams->mBuf);
             ODU_PUT_MSG_BUF(pollParams->mBuf);
          }
          else
@@ -631,6 +630,43 @@ uint8_t processPolling(sctpSockPollParams *pollParams, CuSctpAssocCb *assocCb, u
   return ROK;
 }/* End of sctpSockPoll() */
 
+/*******************************************************************
+ *
+ * @brief Send message on an SCTP Association
+ *
+ * @details
+ *
+ *    Function : sendOnSctpAssoc
+ *
+ *    Functionality:
+ *        Send message on SCTP association
+ *
+ * @params[in] 
+ * @return ROK     - success
+ *         RFAILED - failure
+ *
+ * ****************************************************************/
+uint8_t sendOnSctpAssoc(CuSctpAssocCb *assocCb, Buffer *mBuf)
+{
+   uint8_t          ret = ROK;
+   MsgLen           len = 0;          /* number of actually sent octets */
+   CmInetMemInfo    memInfo;
+   
+   memset(&memInfo , 0, sizeof(CmInetMemInfo));
+   memInfo.region = CU_APP_MEM_REG;    
+   memInfo.pool   = CU_POOL;
+
+   ret = cmInetSctpSendMsg(&assocCb->sockFd, &assocCb->destIpNetAddr, assocCb->destPort, &memInfo, mBuf, &len, 0, \
+      FALSE, 0, 0/*SCT_PROTID_NONE*/, RWOULDBLOCK);
+
+   if(ret != ROK && ret != RWOULDBLOCK)
+   {
+      DU_LOG("\nERROR  -->  SCTP : Send message failed");
+      return RFAILED;
+   }
+   return ROK;
+}
+
 /*******************************************************************
  *
  * @brief Send message on SCTP socket
@@ -649,27 +685,16 @@ uint8_t processPolling(sctpSockPollParams *pollParams, CuSctpAssocCb *assocCb, u
  * ****************************************************************/
 uint8_t sctpSend(InterfaceType intf, uint32_t destId, Buffer *mBuf)
 {
-   uint8_t          ret = ROK, assocIdx = 0;
-   MsgLen           len = 0;          /* number of actually sent octets */
-   CmInetMemInfo    memInfo;                        
-  
-   memset(&memInfo , 0, sizeof(CmInetMemInfo));
-   memInfo.region = CU_APP_MEM_REG;               
-   memInfo.pool   = CU_POOL;
+   uint8_t  assocIdx = 0;
 
    for(assocIdx=0; assocIdx < sctpCb.numAssoc; assocIdx++)
    {
       if((sctpCb.assocCb[assocIdx].intf == intf) && (sctpCb.assocCb[assocIdx].destId == destId))
       {
-         ret = cmInetSctpSendMsg(&sctpCb.assocCb[assocIdx].sockFd, &sctpCb.assocCb[assocIdx].destIpNetAddr, \
-                  sctpCb.assocCb[assocIdx].destPort, &memInfo, mBuf, &len, 0, FALSE, 0, 0/*SCT_PROTID_NONE*/, RWOULDBLOCK);
-
-         if(ret != ROK && ret != RWOULDBLOCK)
-         {
-            DU_LOG("\nERROR  -->  SCTP : Send message failed");
-            return RFAILED;
-         }
-         return ROK;
+         if(sendOnSctpAssoc(&sctpCb.assocCb[assocIdx], mBuf) == ROK)
+            return ROK;
+         else
+            break;
       }
    }
    DU_LOG("\nERROR  -->  SCTP : Dest ID [%d] at Interface [%d] not found in SCTP DestCb list. Failed to send message", destId, intf);