示例#1
0
/****************************************************************************
 ** FunctionName  : UCMJELogCltrFormat
 ** Description   : This is the JE Log Controller formatting funtion
 ** Input         : pLogMessageInfo
 		  : pTempLogField
 		  : pTotalFields
 ** Output        : NONE
 ** Return value  : OF_SUCCESS/OF_FAILURE
 ****************************************************************************/
int32_t
UCMJELogCltrFormat (UCMLogMessage_t * pLogMessageInfo,
                    void * pTempLogField, uint32_t * pTotalFields)
{
  UCMLogMessage_t *pJELogMsgInfo = pLogMessageInfo;
  UCMJELogInfo_t *pJESpcificLogMsg = NULL;
  UCMLogCltrDbLogField_t *pJELogDbField = NULL;

	CM_DEBUG_PRINT("Formating Log Message for Data Base");
  if ((!pLogMessageInfo) || (!pTempLogField))
  {
    CM_DEBUG_PRINT ("Invalid Input");
    return OF_FAILURE;
  }

  pJELogDbField = (UCMLogCltrDbLogField_t *) pTempLogField;

  /* should be the message family id */
  pJELogDbField->ulTableIndex = CM_LOG_FAMILY_JE;
  pJELogDbField->ulFieldId = CM_JE_TABLE_DB_MSG_ID;
  pJELogDbField->ulFieldType = CM_LOG_CLTR_DB_FID_TYPE_INTEGER;
  pJELogDbField->pucFieldVal = (unsigned char *) (pJELogMsgInfo->ulMsgId);
  pJELogDbField->ulFieldLen = sizeof (uint32_t);
  pJELogDbField++;
  (*pTotalFields)++;            /* incrmenting for each field */
#if 0
  pJELogDbField->ulTableIndex = CM_LOG_FAMILY_JE;
  pJELogDbField->ulFieldId = CM_JE_TABLE_DB_SEVERITY;
  pJELogDbField->ulFieldType = CM_LOG_CLTR_DB_FID_TYPE_SHORT_INTEGER;
  pJELogDbField->pucFieldVal =
    (unsigned char *) ((uint32_t) pJELogMsgInfo->usSeverity);
  pJELogDbField->ulFieldLen = sizeof (uint16_t);
  pJELogDbField++;
  (*pTotalFields)++;
#endif
  pJELogDbField->ulTableIndex = CM_LOG_FAMILY_JE;
  pJELogDbField->ulFieldId = CM_JE_TABLE_DB_MSGDESC;
  pJELogDbField->ulFieldType = CM_LOG_CLTR_DB_FID_TYPE_STRING;
  pJELogDbField->pucFieldVal = (pJELogMsgInfo->pMesgDesc);
  pJELogDbField->ulFieldLen = of_strlen (pJELogMsgInfo->pMesgDesc);
  pJELogDbField++;
  (*pTotalFields)++;

  /* Message Family specific information */
  pJESpcificLogMsg =
    (UCMJELogInfo_t *) pJELogMsgInfo->MessageFamilySpecificInfo;

  pJELogDbField->ulTableIndex = CM_LOG_FAMILY_JE;
  pJELogDbField->ulFieldId = CM_JE_TABLE_DB_UCMADMIN;
  pJELogDbField->ulFieldType = CM_LOG_CLTR_DB_FID_TYPE_STRING;
  pJELogDbField->pucFieldVal = (pJESpcificLogMsg->admin_name);
  pJELogDbField->ulFieldLen = of_strlen (pJESpcificLogMsg->admin_name);
  pJELogDbField++;
  (*pTotalFields)++;

  pJELogDbField->ulTableIndex = CM_LOG_FAMILY_JE;
  pJELogDbField->ulFieldId = CM_JE_TABLE_DB_UCMROLE;
  pJELogDbField->ulFieldType = CM_LOG_CLTR_DB_FID_TYPE_STRING;
  pJELogDbField->pucFieldVal = (pJESpcificLogMsg->admin_role);
  pJELogDbField->ulFieldLen = of_strlen (pJESpcificLogMsg->admin_role);
  pJELogDbField++;
  (*pTotalFields)++;

  pJELogDbField->ulTableIndex = CM_LOG_FAMILY_JE;
  pJELogDbField->ulFieldId = CM_JE_TABLE_DB_DMPATH;
  pJELogDbField->ulFieldType = CM_LOG_CLTR_DB_FID_TYPE_STRING;
  pJELogDbField->pucFieldVal = (pJESpcificLogMsg->dmpath_a);
  pJELogDbField->ulFieldLen = of_strlen (pJESpcificLogMsg->dmpath_a);
  pJELogDbField++;
  (*pTotalFields)++;

  pJELogDbField->ulTableIndex = CM_LOG_FAMILY_JE;
  pJELogDbField->ulFieldId = CM_JE_TABLE_DB_COMMAND;
  pJELogDbField->ulFieldType = CM_LOG_CLTR_DB_FID_TYPE_STRING;
  pJELogDbField->pucFieldVal = (pJESpcificLogMsg->aCommand);
  pJELogDbField->ulFieldLen = of_strlen (pJESpcificLogMsg->aCommand);
  pJELogDbField++;
  (*pTotalFields)++;

  pJELogDbField->ulTableIndex = CM_LOG_FAMILY_JE;
  pJELogDbField->ulFieldId = CM_JE_TABLE_DB_DMINSTANCE;
  pJELogDbField->ulFieldType = CM_LOG_CLTR_DB_FID_TYPE_STRING;
  pJELogDbField->pucFieldVal = (pJESpcificLogMsg->aInstance);
  pJELogDbField->ulFieldLen = of_strlen (pJESpcificLogMsg->aInstance);
  pJELogDbField++;
  (*pTotalFields)++;

  pJELogDbField->ulTableIndex = CM_LOG_FAMILY_JE;
  pJELogDbField->ulFieldId = CM_JE_TABLE_DB_CONFIGDATA;
  pJELogDbField->ulFieldType = CM_LOG_CLTR_DB_FID_TYPE_STRING;
  pJELogDbField->pucFieldVal = (pJESpcificLogMsg->aCfgData);
  pJELogDbField->ulFieldLen = of_strlen (pJESpcificLogMsg->aCfgData);
  pJELogDbField++;
  (*pTotalFields)++;

  pJELogDbField->ulTableIndex = CM_LOG_FAMILY_JE;
  pJELogDbField->ulFieldId = CM_JE_TABLE_DB_TABLENAME;
  pJELogDbField->ulFieldType = CM_LOG_CLTR_DB_FID_TYPE_STRING;
  pJELogDbField->pucFieldVal = (pJESpcificLogMsg->aTableName);
  pJELogDbField->ulFieldLen = of_strlen (pJESpcificLogMsg->aTableName);
  pJELogDbField++;
  (*pTotalFields)++;
  return OF_SUCCESS;

}
示例#2
0
/****************************************************************************
 ** FunctionName  : UCMJEMCFormatFn
 ** Description   : This is the JE Syslog message formatting function
 ** Input         : pJELogMessage
 		  : pLogBuf
 		  : pulLen_p
 ** Output        : NONE
 ** Return value  : OF_SUCCESS/OF_FAILURE
 *****************************************************************************/
int32_t
UCMJEMCFormatFn (UCMLogMessage_t * pJELogMessage,
                 unsigned char * pLogBuf, uint32_t * pulLen_p)
{

  uint32_t ulTempLen;
  uint32_t ulLen;
  uint32_t ulTotLen = 0;
  UCMJELogInfo_t *pJESpecificInfo = NULL;
#ifdef CM_COMMON_DEBUG
  unsigned char *pTmp=pLogBuf;
#endif

	CM_DEBUG_PRINT("Formating Log Message for Sys Log");
  if ((!pJELogMessage) || (!pLogBuf) || (!pulLen_p))
  {
    CM_DEBUG_PRINT ("Invalid Input");
    return OF_FAILURE;
  }

  ulTempLen = *pulLen_p;
  ulLen = snprintf (pLogBuf, CM_MSGID_DESCRIPTION_LEN + 1, "message=\"%s\"",
                      pJELogMessage->pMesgDesc);
  if (ulLen >= ulTempLen)
  {
    *pulLen_p = ulTotLen;
    return OF_SUCCESS;
  }
  ulTempLen = ulTempLen - ulLen;
  pLogBuf += ulLen;
  ulTotLen += ulLen;

  pJESpecificInfo =
    (UCMJELogInfo_t *) (pJELogMessage->MessageFamilySpecificInfo);

  if (of_strlen (pJESpecificInfo->admin_name) > 0)
  {
    ulLen =
      snprintf (pLogBuf, ulTempLen, "AdminName=\"%s\"",
                  pJESpecificInfo->admin_name);
    if (ulLen >= ulTempLen)
    {
      *pulLen_p = ulTotLen;
      return OF_SUCCESS;
    }
    ulTempLen = ulTempLen - ulLen;
    pLogBuf += ulLen;
    ulTotLen += ulLen;
  }

  if (of_strlen (pJESpecificInfo->admin_role) > 0)
  {
    ulLen =
      snprintf (pLogBuf, ulTempLen, "AdminRole=\"%s\"",
                  pJESpecificInfo->admin_role);
    if (ulLen >= ulTempLen)
    {
      *pulLen_p = ulTotLen;
      return OF_SUCCESS;
    }
    ulTempLen = ulTempLen - ulLen;
    pLogBuf += ulLen;
    ulTotLen += ulLen;
  }

  if (of_strlen (pJESpecificInfo->dmpath_a) > 0)
  {
    ulLen =
      snprintf (pLogBuf, ulTempLen, "DMPath=\"%s\"",
                  pJESpecificInfo->dmpath_a);
    if (ulLen >= ulTempLen)
    {
      *pulLen_p = ulTotLen;
      return OF_SUCCESS;
    }
    ulTempLen = ulTempLen - ulLen;
    pLogBuf += ulLen;
    ulTotLen += ulLen;
  }

  if (of_strlen (pJESpecificInfo->aCommand) > 0)
  {
    ulLen =
      snprintf (pLogBuf, ulTempLen, "Command=\"%s\"",
                  pJESpecificInfo->aCommand);
    if (ulLen >= ulTempLen)
    {
      *pulLen_p = ulTotLen;
      return OF_SUCCESS;
    }
    ulTempLen = ulTempLen - ulLen;
    pLogBuf += ulLen;
    ulTotLen += ulLen;
  }

  if (of_strlen (pJESpecificInfo->aInstance) > 0)
  {
    ulLen =
      snprintf (pLogBuf, ulTempLen, "Instance=\"%s\"",
                  pJESpecificInfo->aInstance);
    if (ulLen >= ulTempLen)
    {
      *pulLen_p = ulTotLen;
      return OF_SUCCESS;
    }
    ulTempLen = ulTempLen - ulLen;
    pLogBuf += ulLen;
    ulTotLen += ulLen;
  }

  if (of_strlen (pJESpecificInfo->aCfgData) > 0)
  {
    ulLen =
      snprintf (pLogBuf, ulTempLen, "ConfigData=\"%s\"",
                  pJESpecificInfo->aCfgData);
    if (ulLen >= ulTempLen)
    {
      *pulLen_p = ulTotLen;
      return OF_SUCCESS;
    }
    ulTempLen = ulTempLen - ulLen;
    pLogBuf += ulLen;
    ulTotLen += ulLen;
  }
#if 0
  if (pJESpecificInfo->pReason)
  {
    ulLen =
      snprintf (pLogBuf, ulTempLen, "reason=\"%s\"",
                  pJESpecificInfo->pReason);
    if (ulLen >= ulTempLen)
    {
      *pulLen_p = ulTotLen;
      return OF_SUCCESS;
    }
    ulTempLen = ulTempLen - ulLen;
    pLogBuf += ulLen;
    ulTotLen += ulLen;
  }

  if (pJESpecificInfo->pAction)
  {
    ulLen =
      snprintf (pLogBuf, ulTempLen, "action=\"%s\"",
                  pJESpecificInfo->pReason);
    if (ulLen >= ulTempLen)
    {
      *pulLen_p = ulTotLen;
      return OF_SUCCESS;
    }
    ulTempLen = ulTempLen - ulLen;
    pLogBuf += ulLen;
    ulTotLen += ulLen;
  }
#endif

  *pulLen_p = ulTotLen;
	CM_DEBUG_PRINT("LogMessage=%s",pTmp);
  return OF_SUCCESS;

}
示例#3
0
/****************************************************************************
 ** FunctionName  : UCMJEFrameAndSendLogMsg
 ** Description   : This Function frames  JE Log message and send it.
 ** Input         : ulMsgId:
 ** Output        : NONE
 ** Return value  : OF_SUCCESS/OF_FAILURE
 *****************************************************************************/
void UCMJEFrameAndSendLogMsg (uint32_t ulMsgId,char *admin_name_p,char * admin_role_p,
      uint32_t command_ui, char * dm_path_p,  char * pInstance,struct cm_array_of_nv_pair *arr_nv_pair_p)
{
   UCMLogMessage_t *pJELogMessage = NULL;
   UCMJELogInfo_t *pJESpecificInfo = NULL;
   UCMMSGSThrtMsgIdInfo_t *pJEMsgIdInfo = NULL;
   struct cm_dm_data_element *pDMNode = NULL;
   FILE *fp;
   char aSysCmd[128];
   int32_t iMsgRetVal;
   uint32_t uiNvCnt, uiLen=0;
   char *name_p = NULL;

   pDMNode = (struct cm_dm_data_element *)
      cmi_dm_get_dm_node_from_instance_path (dm_path_p, of_strlen (dm_path_p));
   if (!pDMNode)
   {
      CM_JE_DEBUG_PRINT ("pDMNode is NULL");
      return ;
   }


   pJEMsgIdInfo =
      (UCMMSGSThrtMsgIdInfo_t *) of_calloc (1, sizeof (UCMMSGSThrtMsgIdInfo_t));

   if (!pJEMsgIdInfo)
   {
      CM_JE_DEBUG_PRINT ("Memory Allocation Failed for pJEMsgIdInfo");
      return;
   }

   iMsgRetVal = JEMsgsGetMsgInfo (ulMsgId, pJEMsgIdInfo);

   if (iMsgRetVal != OF_SUCCESS)  /* if MsgId not get the message Info */
   {
      CM_JE_DEBUG_PRINT ("Message Id Not found in defined messages");
      of_free (pJEMsgIdInfo);
      return;
   }
   if (pJEMsgIdInfo->usSeverity > JE_LOG_LEVEL)
   {
      CM_JE_DEBUG_PRINT ("Message loglevel >");
      of_free (pJEMsgIdInfo);
      return;
   }
   switch (pJEMsgIdInfo->ulMsgFamilyId)
   {
      case CM_LOG_FAMILY_JE:
         {
            pJELogMessage = (UCMLogMessage_t *)UCMAllocLogMessageBuf (sizeof (UCMJELogInfo_t));
            if (NULL == pJELogMessage)
            {
               of_free (pJEMsgIdInfo);
               return;
            }
            pJESpecificInfo =
               (UCMJELogInfo_t *) pJELogMessage->MessageFamilySpecificInfo;
            if (admin_name_p)
            {
               of_strncpy (pJESpecificInfo->admin_name, admin_name_p,
                     CM_JE_LOGDB_FIELD_UCMADMIN_LEN);
            }

            if (admin_role_p)
            {
               of_strncpy (pJESpecificInfo->admin_role, admin_role_p,
                     CM_JE_LOGDB_FIELD_UCMROLE_LEN);
            }
            if (dm_path_p)
            {
               of_strncpy (pJESpecificInfo->dmpath_a, dm_path_p,
                     CM_JE_LOGDB_FIELD_DMPATH_LEN);
            }

            if (pInstance)
            {
               of_strncpy (pJESpecificInfo->aInstance, pInstance,
                     CM_JE_LOGDB_FIELD_DMINSTANCE_LEN);
            }
            if(arr_nv_pair_p)
            {
#ifdef CM_JE_DISPLAY_FRIENDLY_NAMES_IN_LOGMESGS
               if(dm_path_p)
               {
                  if( JEPrepareLogMessageCfgData(dm_path_p, arr_nv_pair_p, pJESpecificInfo) != OF_SUCCESS)
                     CM_JE_DEBUG_PRINT(" JEPrepareLogMessageCfgData failed");
               } 
               else
#endif
               {
                  for(uiNvCnt=0; uiNvCnt < arr_nv_pair_p->count_ui; uiNvCnt++)
                  {
                     uiLen += arr_nv_pair_p->nv_pairs[uiNvCnt].name_length + 1;
                     uiLen += arr_nv_pair_p->nv_pairs[uiNvCnt].value_length + 1;

                     if(uiLen >= CM_JE_LOGDB_FIELD_NVPAIRS_LEN)
                     {
                        CM_JE_DEBUG_PRINT("Exceeded Max Log Message Length");
                        break; 
                     }
                     if(arr_nv_pair_p->nv_pairs[uiNvCnt].name_length > 0 )  
                     {
                        of_strncat(pJESpecificInfo->aCfgData,name_p,of_strlen((char *)name_p));
                        of_strncat(pJESpecificInfo->aCfgData,"=",1);
                     }
                     if(arr_nv_pair_p->nv_pairs[uiNvCnt].value_length > 0 )  
                     {
                        of_strncat(pJESpecificInfo->aCfgData,arr_nv_pair_p->nv_pairs[uiNvCnt].value_p,
                              of_strlen((char *)arr_nv_pair_p->nv_pairs[uiNvCnt].value_p));
                     }

                     of_strncat(pJESpecificInfo->aCfgData,";",1);
                  }
               }
            }
            switch (command_ui)
            {
               case CM_CMD_ADD_PARAMS:
                  of_strncpy (pJESpecificInfo->aCommand, "Add",
                        CM_JE_LOGDB_FIELD_COMMAND_LEN);
                  break;
               case CM_CMD_SET_PARAMS:
                  of_strncpy (pJESpecificInfo->aCommand, "Modify",
                        CM_JE_LOGDB_FIELD_COMMAND_LEN);
                  break;
               case CM_CMD_DEL_PARAMS:
                  of_strncpy (pJESpecificInfo->aCommand, "Delete",
                        CM_JE_LOGDB_FIELD_COMMAND_LEN);
                  break;
            }
            if (bIpFound == FALSE)
            {
               sprintf(aSysCmd,"cat /var/state/dhcp/dhclient.leases | grep fixed-address | cut -d \" \" -f 4 | cut -d \";\" -f 1 >%s", CM_VORTIQA_DEVIP_FILE);
               system(aSysCmd);
               fp = fopen (CM_VORTIQA_DEVIP_FILE, "r");
               if (!fp)
               {
                  perror ("fopen");
                  CM_JE_DEBUG_PRINT("device ip file open  failed");
               }
               else
               {
                  fgets(aIpAddress_g,128,fp);
                  if (aIpAddress_g[0] != '\0')
                  {
                     CM_JE_DEBUG_PRINT("Ip address %s found", aIpAddress_g);
                     bIpFound=TRUE;
                  }
                  fclose(fp);
               }
            }
            if (bIpFound== TRUE)
            {
               of_strncpy (pJESpecificInfo->aIpAddress, aIpAddress_g,
                     CM_JE_LOGDB_FIELD_COMMAND_LEN);
            }
            CM_JE_DEBUG_PRINT("Ip=%s Admin=%s Role=%s Cmd=%s DMPath=%s Instance=%s ",
                  pJESpecificInfo->aIpAddress,pJESpecificInfo->admin_name,
                  pJESpecificInfo->admin_role, pJESpecificInfo->aCommand,
                  pJESpecificInfo->dmpath_a, pJESpecificInfo->aInstance);
            if(pDMNode->friendly_name_p != NULL)
               of_strncpy(pJESpecificInfo->aTableName,pDMNode->friendly_name_p,of_strlen(pDMNode->friendly_name_p));
            else
               of_strncpy(pJESpecificInfo->aTableName,pDMNode->name_p,of_strlen(pDMNode->name_p));
         }

         break;
   }

   if (pJELogMessage)
   {
      // pJELogMessage->usSeverity = pJEMsgIdInfo->usSeverity;
      pJELogMessage->usCategory = pJEMsgIdInfo->usCategory;
      pJELogMessage->ulMsgId = pJEMsgIdInfo->ulMsgId;
      pJELogMessage->ulMsgFamily = pJEMsgIdInfo->ulMsgFamilyId;
      pJELogMessage->ulMsgSubFamily = pJEMsgIdInfo->ulSubFamilyId;
      if (of_strlen (pJEMsgIdInfo->ucMsgDesc) > 0)
      {
         of_strncpy (pJELogMessage->pMesgDesc, pJEMsgIdInfo->ucMsgDesc,
               CM_JE_LOGDB_FIELD_MSGDESC_LEN);
      }
      CM_JE_DEBUG_PRINT("Id=%d Msg=%s MsgSize=%d",pJELogMessage->ulMsgId, pJEMsgIdInfo->ucMsgDesc,
            pJELogMessage->ulFamilySize);
      UCMLogMessage (pJELogMessage);
   }

   of_free (pJEMsgIdInfo);
   return;
}
示例#4
0
/******************************************************************************
 * Function Name : cm_tnsprt_send_message
 * Description   : This API is used to send the Message buffer across Transport 
 *                 Channel.
 * Input params  : sock_fd_i - Holds the Socket Handle.
 *                 pBuff - Pointer to the message buffer.
 *                 uiLen - Message buffer length.
 * Output params : NONE.
 * Return value  : OF_SUCCESS - On Sending the Message buffer successfully.
 *                 OF_FAILURE - On any failure.
 *****************************************************************************/
int32_t cm_tnsprt_send_message (void * tnsprt_channel_p,
      struct cm_msg_generic_header * gen_hdr_p,
      char * msg_p, uint32_t uiMsgLen)
{
   int32_t return_value;
   char *pBuf = NULL;
   char *pTmp = NULL;
   uint32_t uiTotalLen = 0;
   uint32_t uiAdminRoleLen, uiAdminNameLen;

   if(uiMsgLen == 0)
   {
      CM_TRANS_DEBUG_PRINT ("No message to send");
      return OF_FAILURE;
   }
   if (unlikely ((tnsprt_channel_p == NULL) || (gen_hdr_p == NULL) || (msg_p == NULL)))
   {
      CM_TRANS_DEBUG_PRINT ("Invalid Input");
      return OF_FAILURE;
   }

   //  uiTotalLen = sizeof (uint32_t) + uiMsgLen + sizeof (struct cm_msg_generic_header);
   uiTotalLen = uiOSIntSize_g + uiMsgLen + (6 * uiOSIntSize_g) + of_strlen((char *)gen_hdr_p->admin_role) + of_strlen((char *)gen_hdr_p->admin_name) ;


   /*
Fixme : If msg_p contains enough pre-overhead, we can just use it for 
Generic header. But how do we know whether there is a preoverhead
or not. Workout on that. Until then, we always allocate fresh 
buffer, and copy both generic header and the actual message into
it.
*/
   pBuf = (char *) cm_tnsprt_alloc_message (uiTotalLen);
   if (unlikely (pBuf == NULL))
   {
      CM_TRANS_DEBUG_PRINT ("Unable to allocate memory");
      return OF_FAILURE;
   }

   pTmp = pBuf;
   // pTmp =  of_mbuf_put_32 (pTmp, uiTotalLen);
   pBuf = (char*)of_mbuf_put_32 (pBuf, uiTotalLen);
   //  of_memcpy (pBuf + sizeof(uiTotalLen) , gen_hdr_p,
   //            sizeof (struct cm_msg_generic_header));

   //  of_memcpy (pBuf + 8 , gen_hdr_p,
   //            sizeof (struct cm_msg_generic_header));
   /* For MP to itcm communication, this may be requied in future*/

   /* Copy  command_id */
   pBuf = (char *)of_mbuf_put_32 (pBuf, gen_hdr_p->command_id);

   /* Copy  flags */
   pBuf = (char *)of_mbuf_put_32 (pBuf, gen_hdr_p->flags);

   /* Copy  sequence_id */
   pBuf = (char *)of_mbuf_put_32 (pBuf, gen_hdr_p->sequence_id);

   /* Copy  mgmt_engine_id */
   pBuf = (char *)of_mbuf_put_32 (pBuf, gen_hdr_p->mgmt_engine_id);

   uiAdminRoleLen=of_strlen((char *)gen_hdr_p->admin_role);
   pBuf = (char *)of_mbuf_put_32 (pBuf, uiAdminRoleLen);
   /* Copy  admin_role */

   if ( uiAdminRoleLen > 0 )
   { 
      of_memcpy(pBuf, gen_hdr_p->admin_role, uiAdminRoleLen);
      pBuf += uiAdminRoleLen;
   }

   uiAdminNameLen=of_strlen((char *)gen_hdr_p->admin_name);
   pBuf = (char *)of_mbuf_put_32 (pBuf,uiAdminNameLen);

   /* Copy  admin_name */
   if ( uiAdminNameLen > 0 )
   {
      of_memcpy(pBuf, gen_hdr_p->admin_name,  uiAdminNameLen);
      pBuf += uiAdminNameLen;
   }
   //pBuf += uiAdminNameLen;

   of_memcpy (pBuf , msg_p, uiMsgLen);
   //  of_memcpy (pBuf + 8 + sizeof (struct cm_msg_generic_header), msg_p,
   //            uiMsgLen);

   CM_TRANS_DEBUG_PRINT ("sending %d bytes of message",  uiTotalLen);

   /*verifying whether socket is valid */
   if(((struct cm_tnsprt_channel *) tnsprt_channel_p)->sock_fd_i == 0)
   { 
      CM_TRANS_DEBUG_PRINT ("Invalid Socket FD");
      cm_tnsprt_free_message (pTmp);
      return OF_FAILURE;
   }

   return_value =
      cm_socket_send (((struct cm_tnsprt_channel *) tnsprt_channel_p)->sock_fd_i, pTmp,
            uiTotalLen, MSG_NOSIGNAL);
   //  if (return_value <= 0)
   if(return_value == 0)
   {
      CM_TRANS_DEBUG_PRINT ("Transport Channel socket closed connection");
      cm_tnsprt_free_message (pTmp);
      return OF_FAILURE;
   }
   if(return_value < 0)
   {
      CM_TRANS_DEBUG_PRINT ("Unable to send message on Transport Channel");
      cm_tnsprt_free_message (pTmp);
      return OF_FAILURE;
   }

   cm_tnsprt_free_message (pTmp);
   return OF_SUCCESS;
}
示例#5
0
 int32_t 
JEPrepareLogMessageCfgData(char *dm_path_p, struct cm_array_of_nv_pair *arr_nv_pair_p, UCMJELogInfo_t *pJESpecificInfo)
{
   unsigned char bEnumFound;
   unsigned char bNodeFound;
   struct cm_dm_data_element *pDMNode = NULL;
   struct cm_dm_node_info *tmp_node_info_p = NULL;
   struct cm_array_of_structs *pChildInfoArr = NULL;
   uint32_t uindex_i, uiNvCnt, uiLen=0, uiEnumCnt;
   int32_t return_value;
   char *pTemvalue_p=NULL, *name_p=NULL;

   //   CM_JE_DEBUG_PRINT("Entered");
   if ((!arr_nv_pair_p)||(!dm_path_p))
   {
      CM_JE_DEBUG_PRINT ("invalid input");
      return OF_FAILURE;
   }

   pDMNode = (struct cm_dm_data_element *)
      cmi_dm_get_dm_node_from_instance_path (dm_path_p, of_strlen (dm_path_p));
   if (!pDMNode)
   {
      CM_JE_DEBUG_PRINT ("pDMNode is NULL");
      return OF_FAILURE;
   }

   return_value = cmi_dm_create_child_info_array (pDMNode, &pChildInfoArr);
   if (unlikely (return_value != OF_SUCCESS))
   {
      CM_JE_DEBUG_PRINT ("Child array is NULL");
      return OF_FAILURE;
   }

   for(uiNvCnt=0; uiNvCnt < arr_nv_pair_p->count_ui; uiNvCnt++)
   {
      bEnumFound=FALSE;
      bNodeFound=FALSE;
      for (uindex_i = 0; uindex_i < pChildInfoArr->count_ui; uindex_i++)
      {
         tmp_node_info_p = (struct cm_dm_node_info *) (pChildInfoArr->struct_arr_p) + uindex_i;
         if(of_strcmp(arr_nv_pair_p->nv_pairs[uiNvCnt].name_p,tmp_node_info_p->name_p)==0)
         {
            bNodeFound=TRUE;
            break;
         }
      }
      uiLen += (arr_nv_pair_p->nv_pairs[uiNvCnt].value_length + 1);
      if(bNodeFound == TRUE)
      {
         if(tmp_node_info_p->friendly_name_p != NULL)
         {  
            name_p =tmp_node_info_p->friendly_name_p;
         }
         else
         {
            name_p = arr_nv_pair_p->nv_pairs[uiNvCnt].name_p;
         }
      }
      else
      {
         CM_JE_DEBUG_PRINT ("Node not  found");
         name_p = arr_nv_pair_p->nv_pairs[uiNvCnt].name_p;
      }

      uiLen += (of_strlen((char *)name_p)+1);
      uiLen += (arr_nv_pair_p->nv_pairs[uiNvCnt].value_length +1);
      if(uiLen >= CM_JE_LOGDB_FIELD_NVPAIRS_LEN)
      {
         CM_JE_DEBUG_PRINT("Exceeded Max Log Message Length");
         break; 
      }
      of_strncat(pJESpecificInfo->aCfgData,name_p,of_strlen((char *)name_p)+1);
      of_strncat(pJESpecificInfo->aCfgData,"=",1);

      if((bNodeFound == TRUE) && (tmp_node_info_p->data_attrib.attrib_type == CM_DATA_ATTRIB_STR_ENUM))
      {
         uiEnumCnt=0;
         for (uiEnumCnt=0;
               (uiEnumCnt < tmp_node_info_p->data_attrib.attr.string_enum.count_ui); uiEnumCnt++)
         {
            if (of_strcmp(arr_nv_pair_p->nv_pairs[uiNvCnt].value_p,
                     tmp_node_info_p->data_attrib.attr.string_enum.array[uiEnumCnt])==0)
            {
               if(tmp_node_info_p->data_attrib.attr.string_enum.aFrdArr[uiEnumCnt] != NULL)
               {
                  if(of_strlen(tmp_node_info_p->data_attrib.attr.string_enum.aFrdArr[uiEnumCnt])!=0)
                  {
                     CM_JE_DEBUG_PRINT ("enum found");
                     pTemvalue_p = tmp_node_info_p->data_attrib.attr.string_enum.aFrdArr[uiEnumCnt];
                     uiLen += (of_strlen(pTemvalue_p) +2) ;
                     if(uiLen >= CM_JE_LOGDB_FIELD_NVPAIRS_LEN)
                     {
                        CM_JE_DEBUG_PRINT("Exceeded Max Log Message Length");
                        break; 
                     }
                     of_strncat(pJESpecificInfo->aCfgData,pTemvalue_p, of_strlen(pTemvalue_p)+1);
                     of_strncat(pJESpecificInfo->aCfgData,"(",1);
                     bEnumFound=TRUE;
                  }
               }
               break;
            }
         }
      }

      if(arr_nv_pair_p->nv_pairs[uiNvCnt].value_length > 0 )  
      {
         of_strncat(pJESpecificInfo->aCfgData,arr_nv_pair_p->nv_pairs[uiNvCnt].value_p,
               arr_nv_pair_p->nv_pairs[uiNvCnt].value_length+1);
      }

      if(bEnumFound == TRUE)
      {
         of_strncat(pJESpecificInfo->aCfgData,")",1);
      }

      of_strncat(pJESpecificInfo->aCfgData,";",1);
   }
   CM_JE_DEBUG_PRINT("Success CfgData=%s",pJESpecificInfo->aCfgData);
   return OF_SUCCESS;
}
示例#6
0
/**************************************************************************
 Function Name :
 Input Args    :
 Output Args   :
 Description   :
 Return Values :
 *************************************************************************/
int32_t igwCMDM_TestGetNodeInfo (uint32_t * pTestCount, uint32_t * pFailCount)
{
  uint32_t i;
  int32_t return_value;
  struct cm_dm_node_info *attrib_p;
  struct cm_array_of_uints ArrayOfUints;
  uint32_t uiNodeCount = sizeof (VsgChildNodes) / sizeof (struct cm_dm_data_element);
  of_memset (TestPath, 0, CM_DM_MAX_PATH_LEN + 1);

  printf ("Test Extracting Node Information...");
  /* Retrieve valid node information */
  for (i = 0; i < uiNodeCount; i++)
  {
    *pTestCount = *pTestCount + 1;

    of_strcpy (TestPath, "/vsg/");
    of_strncat (TestPath, VsgChildNodes[i].name_p,
               (CM_DM_MAX_PATH_LEN - of_strlen (TestPath)));
    attrib_p = NULL;
    return_value = UCMCMDM_GetNodeInfo (TestPath, &attrib_p);
    if (return_value == OF_SUCCESS)
    {
      // igwCMDM_PrintAttribs(attrib_p);
      if (igwCMDM_TestCompareAttribs (attrib_p, &(VsgChildNodes[i])) !=
          OF_SUCCESS)
      {
        printf (" Failed to extract info about node : %s\n", TestPath);
        *pFailCount = *pFailCount + 1;
      }
      of_free (attrib_p);
    }
    else
    {
      *pFailCount = *pFailCount + 1;
    }
  }

  /* Retrieve Invalid Node information */
  *pTestCount = *pTestCount + 1;
  of_strncpy (TestPath, "trash", CM_DM_MAX_PATH_LEN);
  return_value = UCMCMDM_GetNodeInfo (TestPath, &attrib_p);
  if (return_value == OF_SUCCESS)
  {
    printf (" Failed to identify invalid node : %s\n", TestPath);
    *pFailCount = *pFailCount + 1;
  }

  /* Retrieve Invalid Node information */
  *pTestCount = *pTestCount + 1;
  of_strcpy (TestPath, "/");
  of_strcat (TestPath, "trash");
  return_value = UCMCMDM_GetNodeInfo (TestPath, &attrib_p);
  if (return_value == OF_SUCCESS)
  {
    printf (" Failed to identify invalid node : %s\n", TestPath);
    *pFailCount = *pFailCount + 1;
  }

  /* Retrieve Invalid Node information */
  *pTestCount = *pTestCount + 1;
  of_strncpy (TestPath, CM_DM_TEST_ROOT_PATH, CM_DM_MAX_PATH_LEN);
  of_strcat (TestPath, "/trash");
  return_value = UCMCMDM_GetNodeInfo (TestPath, &attrib_p);
  if (return_value == OF_SUCCESS)
  {
    printf (" Failed to identify invalid node : %s\n", TestPath);
    *pFailCount = *pFailCount + 1;
  }

  /* Retrieve Invalid Node information */
  *pTestCount = *pTestCount + 1;
  of_strncpy (TestPath, CM_DM_TEST_ROOT_PATH, CM_DM_MAX_PATH_LEN);
  of_strcat (TestPath, "/fw/trash");
  return_value = UCMCMDM_GetNodeInfo (TestPath, &attrib_p);
  if (return_value == OF_SUCCESS)
  {
    printf (" Failed to identify invalid node : %s\n", TestPath);
    *pFailCount = *pFailCount + 1;
  }

  /* Retrieve Invalid Node information */
  *pTestCount = *pTestCount + 1;
  of_strcpy (TestPath, "/vsg/");
  of_strcat (TestPath, "fw///trash");
  return_value = UCMCMDM_GetNodeInfo (TestPath, &attrib_p);
  if (return_value == OF_SUCCESS)
  {
    printf (" Failed to identify invalid node : %s\n", TestPath);
    *pFailCount = *pFailCount + 1;
  }

  /* Retrieve node info by path IDs */
  ArrayOfUints.uint_arr_p = (uint32_t *) of_calloc (2, sizeof (uint32_t));
  if (ArrayOfUints.uint_arr_p == NULL)
  {
    return OF_FAILURE;
  }

  ArrayOfUints.count_ui = 2;
  ArrayOfUints.uint_arr_p[0] = CM_DM_ROOT_NODE_ID;

  for (i = 0; i < uiNodeCount; i++)
  {
    *pTestCount = *pTestCount + 1;
    ArrayOfUints.uint_arr_p[1] = VsgChildNodes[i].id_ui;
    attrib_p = NULL;
    return_value = UCMCMDM_GetNodeInfoByPathIDs (&ArrayOfUints, &attrib_p);
    if (return_value == OF_SUCCESS)
    {
      // igwCMDM_PrintAttribs(attrib_p);
      if (igwCMDM_TestCompareAttribs (attrib_p, &(VsgChildNodes[i])) !=
          OF_SUCCESS)
      {
        printf (" Failed to extract info about node : %s\n", TestPath);
        *pFailCount = *pFailCount + 1;
      }
      of_free (attrib_p);
    }
    else
    {
      *pFailCount = *pFailCount + 1;
    }
  }
  of_free (ArrayOfUints.uint_arr_p);

  printf ("... OK\n");
  return OF_SUCCESS;
}
uint32_t crm_subnet_ucm_validatemandparams(struct cm_array_of_iv_pairs *
    mand_iv_pairs_p,
    struct cm_app_result **  presult_p)
{
  uint32_t count;
  struct cm_app_result *of_subnet_result = NULL;


  CM_CBK_DEBUG_PRINT ("Entered");
  for (count = 0; count < mand_iv_pairs_p->count_ui;
      count++)
  {
    switch (mand_iv_pairs_p->iv_pairs[count].id_ui)
    {
      case CM_DM_SUBNET_CIDRIP_ID:
        if (mand_iv_pairs_p->iv_pairs[count].value_p == NULL)
        {
          CM_CBK_DEBUG_PRINT (" Subnet IP is NULL");
          fill_app_result_struct (&of_subnet_result, NULL, CM_GLU_SUBNET_IP_NULL);
          *presult_p = of_subnet_result;
          return OF_FAILURE;
        }
        break;
      

      case CM_DM_SUBNET_CIDRMASK_ID:
        if (mand_iv_pairs_p->iv_pairs[count].value_p == NULL)
        {
          CM_CBK_DEBUG_PRINT (" Subnet Mask is NULL");
          fill_app_result_struct (&of_subnet_result, NULL, CM_GLU_SUBNET_MASK_NULL);
          *presult_p = of_subnet_result;
          return OF_FAILURE;
        }
        break;

  

     case CM_DM_SUBNET_IP_VERSION_ID:
        if (mand_iv_pairs_p->iv_pairs[count].value_p == NULL)
        {
          CM_CBK_DEBUG_PRINT (" Subnet IP version is NULL");
          fill_app_result_struct (&of_subnet_result, NULL, CM_GLU_SUBNET_IP_VERSION_NULL);
          *presult_p = of_subnet_result;
          return OF_FAILURE;
        }
               break;

   
   
      case CM_DM_SUBNET_NAME_ID:
        if (mand_iv_pairs_p->iv_pairs[count].value_p == NULL)
        {
          CM_CBK_DEBUG_PRINT ("Subnet   name is NULL");
          fill_app_result_struct (&of_subnet_result, NULL, CM_GLU_SUBNET_NAME_NULL);
          *presult_p = of_subnet_result;
          return OF_FAILURE;
        }
        if (of_strlen(mand_iv_pairs_p->iv_pairs[count].value_p) < 0 ||
            of_strlen(mand_iv_pairs_p->iv_pairs[count].value_p) > CRM_MAX_SUBNET_NAME_LEN)
        {
          CM_CBK_DEBUG_PRINT ("Invalid subnet Name");
          fill_app_result_struct (&of_subnet_result, NULL, CM_GLU_SUBNET_NAME_ID_INVALID);
          *presult_p = of_subnet_result;
          return OF_FAILURE;
        }
        break;

      case CM_DM_SUBNET_VNNAME_ID:
        if (mand_iv_pairs_p->iv_pairs[count].value_p == NULL)
        {
          CM_CBK_DEBUG_PRINT ("Subnet VN name  is NULL");
          fill_app_result_struct(&of_subnet_result, NULL, CM_GLU_VN_NAME_NULL);
          *presult_p = of_subnet_result;
          return OF_FAILURE;
        }
        if (of_strlen(mand_iv_pairs_p->iv_pairs[count].value_p) < 0 ||
            of_strlen(mand_iv_pairs_p->iv_pairs[count].value_p) > CRM_MAX_VN_NAME_LEN)
        {
          CM_CBK_DEBUG_PRINT ("Invalid Subent VN name");
          fill_app_result_struct (&of_subnet_result, NULL, CM_GLU_VN_NAME_ID_INVALID);
          *presult_p = of_subnet_result;
          return OF_FAILURE;
        }
        break;


           


   }
  }
  CM_CBK_PRINT_IVPAIR_ARRAY (mand_iv_pairs_p);
  return OF_SUCCESS;
}
示例#8
0
int32_t HttpsGenCertReq( HttpsCertReqInfo_t    *pCertReqInfo,
                         unsigned char              *pPrivbuf,
                         unsigned char              *pCertbuf,
                         HttpsCertReqParams_t  *pParams )
{
  EVP_PKEY                  *pkey         = NULL;
  HX509Req_t                *preq         = NULL;
#ifdef OPENSSL_9_7
  const  EVP_MD             *pDigest;
#else
  EVP_MD                    *pDigest      = NULL;
#endif /*OPENSSL_9_7*/
  int32_t                   iRetVal;
  unsigned char                  aSubAltName[HTTPS_PARAMS_SUB_NAME_LEN];
  bool                   bFlag         = FALSE;
  STACK_OF(X509_EXTENSION)  *skExtensions = NULL;
  X509_EXTENSION            *pSubExt      = NULL;
  unsigned char                  ucCT;
  int32_t                   uileng;

  /**
   * Input Validations...
   */
  if (pCertReqInfo == NULL)
  {
    Trace(HTTPS_ID, TRACE_SEVERE,
          "HttpsGenCertReq:: Invalid parameters\n");
    return OF_FAILURE;
  }

  /**
   * Allocate space for the public-private key pair..
   */

  if ((pkey = EVP_PKEY_new()) == NULL)
  {
    Trace(HTTPS_ID, TRACE_SEVERE,
          "HttpsGenCertReq:: MemAlloc failure\n");
    return OF_FAILURE;
  }

  /**
   * Generate a public-private key pair..
   */
  switch (pCertReqInfo->usCertType)
  {
  case RSA_MD5:
  case RSA_SHA1:
    if ((pCertReqInfo->cr_params.rsa_params.usNumBits < MIN_KEY_LENGTH))
    {
      Trace(HTTPS_ID, TRACE_SEVERE,
            "HttpsGenCertReq : Invalid RSA parameters\n");
      EVP_PKEY_free(pkey);
      return OF_FAILURE;
    }

    if (!EVP_PKEY_assign_RSA(pkey,
            RSA_generate_key(pCertReqInfo->cr_params.rsa_params.usNumBits,
            0x10001, NULL, NULL)))
    {
      Trace(HTTPS_ID, TRACE_SEVERE,
            "HttpsGenCertReq: EVP_PKEY assign failed\n");
      EVP_PKEY_free(pkey);
      return OF_FAILURE;
    }

    ucCT='r';

    if (pCertReqInfo->usCertType == RSA_MD5)
    {
      pDigest = (EVP_MD *) EVP_md5();
    }
    else
    {
      pDigest = (EVP_MD *) EVP_sha1();
    }

    break;
  default:
    Trace(HTTPS_ID, TRACE_SEVERE, "HttpsGenCertReq:: Invalid certificate type\n");
    EVP_PKEY_free(pkey);
    return OF_FAILURE;
  }

  /**
   * Prepare the Certificate Request..
   */
  if ((preq = HttpsCertReqNew()) == NULL)
  {
    Trace(HTTPS_ID, TRACE_SEVERE,
          "HttpsGenCertReq:: X509_req_new failed\n");
    EVP_PKEY_free(pkey);
    return OF_FAILURE;
  }

  /**
   * Version Number..
   */
  if (!ASN1_INTEGER_set(preq->req_info->version, 0L))
  {
    Trace(HTTPS_ID, TRACE_SEVERE,
          "HttpsGenCertReq:: ASN1_INTEGER_set failed\n");
    HttpsCertReqFree(preq);
    EVP_PKEY_free(pkey);
    return OF_FAILURE;
  }

  /**
   * Subject Name...Filled with two RDNs...
   */

  /**
   * RDN # 1 : Country Name...
   */

  if (!Httpsadd_DN_object((HX509Name_t *) preq->req_info->subject, NULL,
                          NULL, (char *) pParams->ucCn, NID_countryName, 2, 2))
  {
    Trace(HTTPS_ID, TRACE_SEVERE,
          "HttpsGenCertReq:: Httpsadd_DN_object failed\n");
    HttpsCertReqFree(preq);
    EVP_PKEY_free(pkey);
    return OF_FAILURE;
  }

#ifdef OPENSSL_9_7
  if (NID_postalCode == 0)
  {
    NID_postalCode = OBJ_create("2.5.4.17", "2.5.4.17",
                                "postal code attribute");
  }
#endif

  /**
   * RDN #New::2: Postal code...
   */
  if (!Httpsadd_DN_object((HX509Name_t *) preq->req_info->subject, NULL,
                          NULL, (char *) pParams->aPostalCode, NID_postalCode, 0,
                          10))
  {
    Trace(HTTPS_ID, TRACE_SEVERE,
          "HttpsGenCertReq:: Httpsadd_DN_object failed\n");
    HttpsCertReqFree(preq);
    EVP_PKEY_free(pkey);
    return OF_FAILURE;
  }

  /**
   * RDN #3: State..
   */
  if (!Httpsadd_DN_object((HX509Name_t *) preq->req_info->subject, NULL,
                          NULL, (char *) pParams->aState, NID_stateOrProvinceName,
                          0, 50))
  {
    Trace(HTTPS_ID, TRACE_SEVERE,
          "HttpsGenCertReq:: Httpsadd_DN_object failed\n");
    HttpsCertReqFree(preq);
    EVP_PKEY_free(pkey);
    return OF_FAILURE;
  }

  /**
   * RDN #New::4: Locality Name...
   */
  if (!Httpsadd_DN_object((HX509Name_t *) preq->req_info->subject, NULL,
                          NULL, (char *) pParams->aCity, NID_localityName, 0, 50))
  {
    Trace(HTTPS_ID, TRACE_SEVERE,
          "HttpsGenCertReq:: Httpsadd_DN_object failed\n");
    HttpsCertReqFree(preq);
    EVP_PKEY_free(pkey);
    return OF_FAILURE;
  }

  /**
   * RDN #5 : Organization ..
   */
  if (!Httpsadd_DN_object((HX509Name_t *) preq->req_info->subject, NULL,
                          NULL, (char *) pParams->aOrg, NID_organizationName,
                          0, 50))
  {
    Trace(HTTPS_ID, TRACE_SEVERE,
          "HttpsGenCertReq:: Httpsadd_DN_object failed\n");
    HttpsCertReqFree(preq);
    EVP_PKEY_free(pkey);
    return OF_FAILURE;
  }

  /**
   * RDN #6 : Department ..
   */
  if (!Httpsadd_DN_object((HX509Name_t *) preq->req_info->subject, NULL,
                          NULL, (char *) pParams->aDept, NID_organizationalUnitName,
                          0, 50))
  {
    Trace(HTTPS_ID, TRACE_SEVERE,
          "HttpsGenCertReq:: Httpsadd_DN_object failed\n");
    HttpsCertReqFree(preq);
    EVP_PKEY_free(pkey);
    return OF_FAILURE;
  }

  /**
   * RDN #7 : Common Name (Subject)...
   */
  if (!Httpsadd_DN_object((HX509Name_t *) preq->req_info->subject, NULL,
                          NULL, (char *) pParams->ucSub, NID_commonName, 0, 50))
  {
    Trace(HTTPS_ID, TRACE_SEVERE,
          "HttpsGenCertReq:: Httpsadd_DN_object failed\n");
    HttpsCertReqFree(preq);
    EVP_PKEY_free(pkey);
    return OF_FAILURE;
  }

  of_memset( aSubAltName, 0, HTTPS_PARAMS_SUB_NAME_LEN);

  if (strlen((char *) pParams->aIpAddr))
  {
    of_strcat((char *) aSubAltName, "IP:");
    of_strcat((char *) aSubAltName, (char *) pParams->aIpAddr);
    bFlag = TRUE;
  }

  if (strlen((char *) pParams->aEmailId))
  {
    if (bFlag)
    {
      of_strcat((char *) aSubAltName, ",email:");
    }
    else
    {
      of_strcat((char *) aSubAltName, "email:");
    }

    of_strcat((char *) aSubAltName, (char *) pParams->aEmailId);
    bFlag = TRUE;
  }

  if (strlen((char *) pParams->aDomain))
  {
    if (bFlag)
    {
      of_strcat((char *) aSubAltName, ",DNS:");
    }
    else
    {
      of_strcat((char *) aSubAltName, "DNS:");
    }

    of_strcat((char *) aSubAltName, (char *) pParams->aDomain);
    bFlag = TRUE;
  }

  /**
   * Adding subject alt name extension to the request.
   */
  if ( of_strlen((char *) aSubAltName))
  {
    skExtensions = sk_X509_EXTENSION_new_null();

    if (skExtensions == NULL)
    {
      Trace(HTTPS_ID, TRACE_SEVERE,
            "HttpsGenCertReq:: sk_X509_EXTENSION_new_null failed\n");
      HttpsCertReqFree(preq);
      EVP_PKEY_free(pkey);
      return OF_FAILURE;
    }
    pSubExt = X509V3_EXT_conf_nid(NULL, NULL, NID_subject_alt_name,
                                  (char *) aSubAltName);

    if (pSubExt)
    {
      sk_X509_EXTENSION_push(skExtensions, pSubExt);
    }

    iRetVal = X509_REQ_add_extensions(preq, skExtensions);

    if (iRetVal == 0)
    {
      Trace(HTTPS_ID, TRACE_SEVERE,
            "HttpsGenCertReq:: X509_REQ_add_extensions failed\n");
      HttpsCertReqFree(preq);
      EVP_PKEY_free(pkey);
      return OF_FAILURE;
    }

    sk_X509_EXTENSION_pop_free(skExtensions, X509_EXTENSION_free);
  } /* strlen sub alt */

  /**
   * Set the public key..
   */
  if (!X509_REQ_set_pubkey(preq, pkey))
  {
    Trace(HTTPS_ID, TRACE_SEVERE,
          "HttpsGenCertReq:: X509_REQ_sign failed\n");
    HttpsCertReqFree(preq);
    EVP_PKEY_free(pkey);
    return OF_FAILURE;
  }

  /**
   * Sign the CertReq Info..
   */
  if (!X509_REQ_sign(preq, pkey, pDigest))
  {
    Trace(HTTPS_ID, TRACE_SEVERE,
          "HttpsGenCertReq:: X509_REQ_sign failed\n");
    HttpsCertReqFree(preq);
    EVP_PKEY_free(pkey);
    return OF_FAILURE;
  }

  /**
   * Write the Private Key into the file...
   */
  if (HttpsWritetoFile(pPrivbuf, HTTPS_PRIV_KEY, pkey, ucCT,
                       pParams->aIdName))
  {
    Trace(HTTPS_ID, TRACE_SEVERE,
          "HttpsGenCertReq:: HttpsWritetoFile failed #1\n");
    HttpsCertReqFree(preq);
    EVP_PKEY_free(pkey);
    return OF_FAILURE;
  }

  /**
   * Write the Certificate Request into the file...
   */
  if (HttpsWritetoFile(pCertbuf, HTTPS_CERT_REQ, preq, ucCT,
                       pParams->aIdName))
  {
    Trace(HTTPS_ID, TRACE_SEVERE,
          "HttpsGenCertReq:: HttpsWritetoFile failed #2\n");
    HttpsDeleteCerts(pParams->aIdName, 's');
    HttpsCertReqFree(preq);
    EVP_PKEY_free(pkey);
    return OF_FAILURE;
  }

  uileng=strlen((char *) pCertbuf);

  if (uileng > 2047)
  {
    Trace(HTTPS_ID, TRACE_SEVERE, "pCertbuf length exceeds 2k\n");
    HttpsDeleteCerts(pParams->aIdName, 's');
    HttpsCertReqFree(preq);
    EVP_PKEY_free(pkey);
    return OF_FAILURE;
  }

  Trace(HTTPS_ID, TRACE_INFO, "Generation of Certificate Request done\n");
  HttpsCertReqFree(preq);
  EVP_PKEY_free(pkey);
  return OF_SUCCESS;
} /* HttpsGenCertReq() */
示例#9
0
int32_t Httpd_FilterHtmlFile( char  *pOrgName,
                              char  *pNewName,
                              char  *pAppData )
{
#ifdef INTOTO_HTTPD_CBK_SUPPORT
  char  path[64]={'\0'};
  char *handle=NULL, *error=NULL;
  int32_t (* pinitfun)(char* ,char* ,char*);
  
  /**
   * This code is used to show port name in bridge page.
   */
  if (of_strncmp(pOrgName, "portcnf*", 8) == 0)
  {
    of_strcpy(pAppData, pOrgName + 8);
    return OF_SUCCESS;
  }

  /**
   * This code is used to either adding or deleting of bridge names.
   */
  if (of_strncmp(pOrgName, "bridgeconf*", 11) == 0)
  {
    if (of_strncmp(pOrgName + 11, "[ATTACH]", 8) == 0)
    {
      of_strncpy(pAppData, pOrgName + 20,
                (of_strchr(pOrgName + 20, '*') - (pOrgName + 20)));
      of_strcpy(pNewName, "rbriadd.htm");
    }
    if (of_strncmp(pOrgName + 11, "[DETACH]", 8) == 0)
    {
      of_strcpy(pAppData, pOrgName + 20);

      of_strcpy(pNewName, "eptdetah.htm");
    }
    return OF_SUCCESS;
  }

  /**
  *  This code is used to display dhcp service leases.
  */
  if (of_strncmp(pOrgName, "viewdhcp*", 9) == 0)
  {
    of_strcpy(pAppData, pOrgName + 9);
    of_strcpy(pNewName, "rlandhcp.htm");
    return OF_SUCCESS;
  }

    if ( of_strncmp (pOrgName, "qos", 3) == 0)
    {
#define INTOTO_MAX_PATH_LENGTH (64) 
#define IGW_ITM_HTTP_LIB_PATH    "/igateway/lib/httpcbk/libitm_httpcbk.so"

  of_strcpy(path,IGW_ITM_HTTP_LIB_PATH);


  if((of_strlen(path) >= INTOTO_MAX_PATH_LENGTH) )
  {
    printf("%s(): Input exceeds the max limit. Buffer overflow!\n\r",
           __FUNCTION__);
    return OF_FAILURE;
  }

  handle = dlopen(path,RTLD_LAZY);
  if(!handle)
  {
    if ((error = dlerror()) != NULL)
    {
      Trace_2(TM_ID,TRACE_SEVERE,"%s(): dlopen failed for path:%s\n\r",
              __FUNCTION__,path);  
      printf("dlopen failed for path:%s\n",path);
      return OF_FAILURE;
    }
    Trace_2(TM_ID,TRACE_SEVERE,"%s(): dlopen failed for path:%s\n\r",
            __FUNCTION__,path);  
    printf("dlopen failed for path:%s\n",path);
    return OF_FAILURE;
  }

  pinitfun = dlsym(handle,"itm_httpd_FilterHtmlFile");
  if ((error = dlerror()) != NULL)
  {
    fprintf (stderr, "itm_httpd_FilterHtmlFile:%s\n",error);
    Trace_2(TM_ID,TRACE_SEVERE,"%s(): dlsym failed for path:%s for "
            "itm_httpd_FilterHtmlFile\n\r",__FUNCTION__,path);  
    printf("dlsym failed for path:%s\n",path);
    dlclose(handle);
    return OF_FAILURE;
  }
   pinitfun(pOrgName,pNewName,pAppData);
  }


#if defined(INTOTO_UPN_SUPPORT) && defined(INTOTO_IPDB_SUPPORT)

  /**
   * UPN related entries.
   */
  /**
   * Modifying the selected upn entry.
   */
  if (of_strncmp(pOrgName, "upnpcfg*", 8) == 0)
  {
    of_strcpy(pAppData, pOrgName + 8);
    of_strcpy(pNewName, "seupnpm.htm");

    return OF_SUCCESS;
  }

  /**
   * Deleting the selected upn entry.
   */
  if (of_strncmp(pOrgName, "upnpdel*", 8) == 0)
  {
    IGWUPNDbArgs_t  UpnDelArgs;
    int32_t         iResult;

    /**
     * Initialize the UpnDelArgs.
     */
    of_memset(&UpnDelArgs, 0, sizeof(UpnDelArgs));
    of_strcpy(UpnDelArgs.DelOpHostRecName, pOrgName + 8);
    UpnDelArgs.ulFlags |= IGWUPN_HOSTREC_NAME;

    /**
     * Delete the selected entry.
     */
    iResult = IGWUPNUiDelHostRecAPI(&UpnDelArgs);

    if (iResult != OF_SUCCESS)
    {
      of_strcpy(pAppData, "Failed to delete the entry");
      of_strcpy(pNewName, "errscrn.htm");
    }
    else
    {
      of_strcpy(pNewName, "seupnp.htm");
    }
    return OF_SUCCESS;
  }

  /**
   * Adding a service record to the given upn entry.
   */
  if (of_strncmp(pOrgName, "upnpaddsrv*", 11) == 0)
  {
    of_strcpy(pAppData, pOrgName + 11);
    of_strcpy(pNewName, "supnsrva.htm");

    return OF_SUCCESS;
  }

  /**
   * Deleting a service record from the given upn entry.
   */
  if (of_strncmp(pOrgName, "upnpdelsrv*", 11) == 0)
  {
    of_strcpy(pAppData, pOrgName + 11);
    of_strcpy(pNewName, "supnsrvd.htm");

    return OF_SUCCESS;
  }

#endif /* INTOTO_UPN_SUPPORT && INTOTO_IPDB_SUPPORT */

#ifdef L2BRIDGE_SUPPORT
  if (of_strncmp(pOrgName, "brstpcfg*", 9) == 0)
  {
    of_strcpy(pAppData, pOrgName + 9);
    of_strcpy(pNewName, "rspantre.htm");
    return OF_SUCCESS;
  }
  if (of_strncmp(pOrgName, "brprtadd*", 9) == 0)
  {
    of_strcpy(pAppData, pOrgName + 9);
    of_strcpy(pNewName, "rbridge.htm");
    return OF_SUCCESS;
  }

#endif


#if defined (INTOTO_ALGV4_BASIC_SUPPORT) && defined (INTOTO_ALGV4_HTTP_SUPPORT)
  IGWALGV4HtpRegHrefHdlrs(pOrgName, pNewName, pAppData);
#endif /* (INTOTO_ALGV4_BASIC_SUPPORT) && (INTOTO_ALGV4_HTTP_SUPPORT) */

#if defined(INTOTO_8021X_SUPPORT) && defined(INTOTO_8021X_HTTP_SUPPORT)
  if (of_strncmp(pOrgName, "configwlan*", 11) == 0)
  {
    of_strcpy(pAppData, pOrgName + 11);
    of_strcpy(pNewName, "wpacfg.htm");
    return OF_SUCCESS;
  }

  if (of_strncmp(pOrgName, "viewwlan*", 9) == 0)
  {
    of_strcpy(pAppData, pOrgName + 9);
    of_strcpy(pNewName, "wpashow.htm");
    return OF_SUCCESS;
  }
#endif /* INTOTO_8021X_SUPPORT && INTOTO_8021X_HTTP_SUPPORT */


#endif /* INTOTO_HTTPD_CBK_SUPPORT */
  return 1;
}