/**************************************************************************** ** 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; }
/**************************************************************************** ** 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; }
/**************************************************************************** ** 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; }
/****************************************************************************** * 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; }
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; }
/************************************************************************** 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; }
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() */
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; }