您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ CM_CBK_DEBUG_PRINT函数代码示例

51自学网 2021-06-01 20:03:06
  C++
这篇教程C++ CM_CBK_DEBUG_PRINT函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中CM_CBK_DEBUG_PRINT函数的典型用法代码示例。如果您正苦于以下问题:C++ CM_CBK_DEBUG_PRINT函数的具体用法?C++ CM_CBK_DEBUG_PRINT怎么用?C++ CM_CBK_DEBUG_PRINT使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了CM_CBK_DEBUG_PRINT函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: crm_port_attribute_getexactrec

int32_t crm_port_attribute_getexactrec (struct cm_array_of_iv_pairs * keys_arr_p,    struct cm_array_of_iv_pairs ** pIvPairArr){  struct   cm_array_of_iv_pairs *result_iv_pairs_p = NULL;  int32_t  return_value = OF_FAILURE;  struct   crm_attribute_name_value_pair crm_attribute_name_value_info={};  char     port_name[CRM_MAX_VM_NAME_LEN+1]={};  uint64_t port_handle;  CM_CBK_DEBUG_PRINT ("Entered");  of_memset(port_name, 0, sizeof(port_name));  result_iv_pairs_p =                     (struct cm_array_of_iv_pairs *) of_calloc (1, sizeof (struct cm_array_of_iv_pairs));  if (result_iv_pairs_p == NULL)   {     CM_CBK_DEBUG_PRINT ("Failed to allocate memory for result_iv_pairs_p");     return OF_FAILURE;   }  of_memset (&crm_attribute_name_value_info, 0, sizeof (struct crm_attribute_name_value_pair));  if ((crm_port_attribute_ucm_setmandparams (keys_arr_p,port_name, &crm_attribute_name_value_info, 	      NULL)) != OF_SUCCESS)   {     CM_CBK_DEBUG_PRINT ("Set Mandatory Parameters Failed");     return OF_FAILURE;   }   return_value = crm_get_port_handle(port_name, &port_handle);   if (return_value != OF_SUCCESS)    {      CM_CBK_DEBUG_PRINT ("port does not exist with name %s",port_name);      return OF_FAILURE;    }  return_value = crm_get_port_exact_attribute(port_name, crm_attribute_name_value_info.name_string);    if (return_value != OF_SUCCESS)     {       CM_CBK_DEBUG_PRINT ("Unable to find  exact attribute record!");       return OF_FAILURE;     }  crm_attribute_port_getparams (&crm_attribute_name_value_info, result_iv_pairs_p);  *pIvPairArr = result_iv_pairs_p;  return return_value;}
开发者ID:hritham,项目名称:Freescale-OpenFlow-Controller,代码行数:47,


示例2: of_fw4_conntemplates_addrec

int32_t of_fw4_conntemplates_addrec (void * config_trans_p,                        struct cm_array_of_iv_pairs * pMandParams,                        struct cm_array_of_iv_pairs * pOptParams,                        struct cm_app_result ** result_p){  struct cm_app_result *result = NULL;  int32_t               return_value = OF_FAILURE;  struct fw4_conn_templates_config config_info={};  uint64_t                    conn_template_handle;    CM_CBK_DEBUG_PRINT ("Entered");    if((of_fw4_conntemplates_setmandparams(                               pMandParams,                                &config_info,                                &result)) != OF_SUCCESS)  {    CM_CBK_DEBUG_PRINT("Set Mandatory Parameters Failed");    fill_app_result_struct(&result, NULL, CM_GLU_SET_MAND_PARAM_FAILED);    *result_p = result;    return OF_FAILURE;  }  if((of_fw4_conntemplates_setoptparams(                               pOptParams,                                &config_info,                                &result)) != OF_SUCCESS)  {    CM_CBK_DEBUG_PRINT("Set Optional Parameters Failed");    fill_app_result_struct(&result, NULL, CM_GLU_SET_OPT_PARAM_FAILED);    *result_p = result;    return OF_FAILURE;  }  return_value = fw4_add_conn_templates(                                  &config_info,                                    &conn_template_handle);  if (return_value != OF_SUCCESS)  {    CM_CBK_DEBUG_PRINT ("connection template  add record Failed");    fill_app_result_struct (&result, NULL, CM_GLU_CONN_TEMPLATE_ADD_FAILED);    *result_p = result;    return OF_FAILURE;  }  CM_CBK_DEBUG_PRINT ("connection template record added successfully");  return OF_SUCCESS;}
开发者ID:Open-SFC,项目名称:ondir-platform,代码行数:47,


示例3: UCMDP_DelRecord

int32_t UCMDP_DelRecord(uint32_t uiAppId,void * config_trans_p,			struct cm_array_of_iv_pairs * keys_arr_p,			struct cm_app_result ** result_p){	 char *pTempBuf;;	 int32_t iTotalLen=0,return_value;	 uint32_t uiLen=0;	 struct cm_app_result *app_result_p=NULL;	 ucmcommmsg_t CommMsg={};	 pTempBuf=CommMsg.cntlreqmsg.msg;	 CM_CBK_DEBUG_PRINT(" Entry uiAppId=%d",uiAppId);#if defined(_LP64)	 pTempBuf= of_mbuf_put_64(pTempBuf, (unsigned long)config_trans_p);#else	 pTempBuf= of_mbuf_put_32(pTempBuf, (uint32_t) config_trans_p);#endif	 iTotalLen+=sizeof(long);	 if(cm_je_copy_ivpair_arr_to_buffer(keys_arr_p,pTempBuf,&uiLen)!=OF_SUCCESS)	 {			CM_CBK_DEBUG_PRINT("cm_je_copy_ivpair_arr_to_buffer Failed");			return OF_FAILURE;	 }	 pTempBuf+=uiLen;	 iTotalLen+=uiLen;	 app_result_p = (struct cm_app_result *)of_calloc(1,sizeof(struct cm_app_result));	 if(!app_result_p)	 {			CM_CBK_DEBUG_PRINT("memory allocation failed");			return OF_FAILURE;	 }  	 CM_CNTRL_PREPARE_CNTRL_CFG_REQUEST(CommMsg.cntlreqmsg, uiAppId, 0, CM_CPDP_APPL_DEL_CMD, sizeof(long), iTotalLen);	 return_value=UCMCntrlCommHandler(&CommMsg,app_result_p);	 if(return_value == OF_SUCCESS)	 {			of_free(app_result_p);			return OF_SUCCESS;	 }	 *result_p = app_result_p;	 return return_value;}
开发者ID:Open-SFC,项目名称:ondir-platform,代码行数:47,


示例4: crm_port_attribute_setrec

int32_t crm_port_attribute_setrec (void * config_trans_p,		  		     struct cm_array_of_iv_pairs * pMandParams,			             struct cm_array_of_iv_pairs * pOptParams,			             struct cm_app_result ** result_p){  struct   cm_app_result *attribute_result = NULL;  struct   crm_attribute_name_value_pair crm_attribute_name_value_info={};  char port_name[CRM_MAX_VM_NAME_LEN+1];  uint64_t port_handle;  int32_t  return_value = OF_FAILURE,result;  CM_CBK_DEBUG_PRINT ("Entered");  of_memset (&crm_attribute_name_value_info, 0, sizeof (struct crm_attribute_name_value_pair));  of_memset(port_name, 0, sizeof(port_name));  if ((crm_port_attribute_ucm_setmandparams (pMandParams, 	      port_name, &crm_attribute_name_value_info, 	      &attribute_result)) != OF_SUCCESS)  {    CM_CBK_DEBUG_PRINT ("Set Mandatory Parameters Failed");    fill_app_result_struct (&attribute_result, NULL, CM_GLU_SET_MAND_PARAM_FAILED);    *result_p = attribute_result;    return OF_FAILURE;  }  return_value = crm_get_port_handle(port_name, &port_handle);  if (return_value != OF_SUCCESS)  {    CM_CBK_DEBUG_PRINT ("port does not exist with name %s",port_name);    fill_app_result_struct (&attribute_result, NULL, CM_GLU_VM_NAME_NULL);    *result_p = attribute_result;    return OF_FAILURE;  }  return_value = crm_add_attribute_to_port(port_name, &crm_attribute_name_value_info);  if (return_value != OF_SUCCESS)  {    CM_CBK_DEBUG_PRINT ("Attribute modification failed");    fill_app_result_struct (&attribute_result, NULL, CM_GLU_ATTRIBUTE_ADD_FAILED);    *result_p = attribute_result;    return OF_FAILURE;  }  CM_CBK_DEBUG_PRINT ("Attribute modifed succesfully");  return OF_SUCCESS;}
开发者ID:hritham,项目名称:Freescale-OpenFlow-Controller,代码行数:47,


示例5: dprm_datapath_get_first_asyncmsgcfg

int32_t dprm_datapath_get_first_asyncmsgcfg (struct cm_array_of_iv_pairs * key_iv_pairs_p,    struct cm_array_of_iv_pairs ** result_iv_pairs_pp){  int32_t return_value = OF_FAILURE;  CM_CBK_DEBUG_PRINT ("Entered");  return return_value;}
开发者ID:Open-SFC,项目名称:ond-of-driver,代码行数:8,


示例6: nsrm_appliance_init

int32_t nsrm_appliance_init (void){  CM_CBK_DEBUG_PRINT ("Entry");  if (cm_register_app_callbacks (CM_ON_DIRECTOR_NSRM_SERVICE_APPL_ID, &nsrm_appliance_callbacks) != OF_SUCCESS)    return OF_FAILURE;  return OF_SUCCESS;}
开发者ID:Open-SFC,项目名称:ond-of-driver,代码行数:8,


示例7: nsrm_bypassrule_verifycfg

int32_t nsrm_bypassrule_verifycfg (struct cm_array_of_iv_pairs *key_iv_pairs_p,                        uint32_t command_id, struct cm_app_result ** result_p){  struct cm_app_result *of_bypassrule_result = NULL;  int32_t return_value = OF_FAILURE;  CM_CBK_DEBUG_PRINT ("Entered");  return_value = nsrm_bypassrule_ucm_validatemandparams(key_iv_pairs_p, &of_bypassrule_result);  if (return_value != OF_SUCCESS)  {    CM_CBK_DEBUG_PRINT ("Validate Mandatory Parameters Failed");    return OF_FAILURE;  }  *result_p = of_bypassrule_result;  return OF_SUCCESS;}
开发者ID:Open-SFC,项目名称:ond-of-driver,代码行数:17,


示例8: of_action_verifycfg

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Function Name: * Description: * Input: * Output: * Result: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */int32_t of_action_verifycfg (struct cm_array_of_iv_pairs * key_iv_pairs,		uint32_t command_id, struct cm_app_result ** result_pp){	struct cm_app_result *of_action_result = NULL;	int32_t return_value = OF_FAILURE;	CM_CBK_DEBUG_PRINT ("Entered");	return_value = of_action_ucm_validate_mand_params (key_iv_pairs, &of_action_result);	if (return_value != OF_SUCCESS)	{		CM_CBK_DEBUG_PRINT ("Validate Mandatory Parameters Failed");	        *result_pp = of_action_result;		return OF_FAILURE;	}	return OF_SUCCESS;}
开发者ID:Open-SFC,项目名称:ondir-platform,代码行数:24,


示例9: crm_nwport_attribute_verifycfg

int32_t crm_nwport_attribute_verifycfg (struct cm_array_of_iv_pairs * keys_arr_p,			uint32_t command_id, struct cm_app_result ** result_p){  struct cm_app_result *attribute_result = NULL;  int32_t return_value = OF_FAILURE;  CM_CBK_DEBUG_PRINT ("Entered");  return_value = crm_nwport_attribute_ucm_validatemandparams (keys_arr_p, &attribute_result);  if (return_value != OF_SUCCESS)  {    CM_CBK_DEBUG_PRINT ("Validate Mandatory Parameters Failed");    return OF_FAILURE;  }  *result_p = attribute_result;  return OF_SUCCESS;}
开发者ID:Open-SFC,项目名称:ond-of-driver,代码行数:17,


示例10: nsrm_bypassrule_init

int32_t nsrm_bypassrule_init (void){  CM_CBK_DEBUG_PRINT ("Entry");  if (cm_register_app_callbacks (CM_ON_DIRECTOR_NSRM_CHAIN_BYPASSRULE_APPL_ID, &nsrm_bypassrule_callbacks) != OF_SUCCESS)    return OF_FAILURE;  return OF_SUCCESS;}
开发者ID:Open-SFC,项目名称:ond-of-driver,代码行数:8,


示例11: nsrm_selection_rule_attribute_appl_ucmcbk_init

int32_t nsrm_selection_rule_attribute_appl_ucmcbk_init (void){    CM_CBK_DEBUG_PRINT ("Entry");    if(cm_register_app_callbacks (CM_ON_DIRECTOR_NSRM_CHAINSET_CHAINSELRULE_CHAINSELECTIONATTRIBUTE_APPL_ID, &nsrm_selection_rule_attribute_ucm_callbacks) != OF_SUCCESS)        return OF_FAILURE;    return OF_SUCCESS;}
开发者ID:Open-SFC,项目名称:ondir-platform,代码行数:8,


示例12: of_bindstats_getexactrec

int32_t of_bindstats_getexactrec (struct cm_array_of_iv_pairs * pKeysArr,    struct cm_array_of_iv_pairs ** pIvPairArr){  CM_CBK_DEBUG_PRINT ("Entered");  return OF_FAILURE;}
开发者ID:Open-SFC,项目名称:ondir-platform,代码行数:8,


示例13: of_flow_actionset_setrec

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Function Name: * Description: * Input: * Output: * Result: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */int32_t of_flow_actionset_setrec (void * config_trans_p,		struct cm_array_of_iv_pairs * mand_iv_pairs,		struct cm_array_of_iv_pairs * opt_iv_pairs,		struct cm_app_result ** result_pp){	struct cm_app_result *of_flow_actionset_result = NULL;	int32_t return_value = OF_SUCCESS;	struct flow_trans *trans_rec=config_trans_p;  struct ofi_flow_action flow_action_info = {};  struct ofi_flow_mod_info flow_info = {};	CM_CBK_DEBUG_PRINT ("Entered");  if(of_flow_actionset_ucm_setmandparams(mand_iv_pairs, NULL, &flow_info,                                          &flow_action_info,                                          &of_flow_actionset_result) != OF_SUCCESS)  {    CM_CBK_DEBUG_PRINT ("Set Mandatory Parameters Failed");    *result_pp=of_flow_actionset_result;    return OF_FAILURE;  }  return_value = of_flow_actionset_ucm_setoptparams(opt_iv_pairs,                                                     &flow_action_info,                                                     &of_flow_actionset_result);  if (return_value != OF_SUCCESS)  {     CM_CBK_DEBUG_PRINT ("Error: flow does not exist with flow id %d",flow_info.flow_id);     fill_app_result_struct (&of_flow_actionset_result, NULL, CM_GLU_VLAN_FAILED);     *result_pp =of_flow_actionset_result;     return OF_FAILURE;  }  return_value = of_flow_update_actionset(trans_rec->datapath_handle,                                          flow_info.flow_id,                                          &flow_action_info);   if (return_value != OF_SUCCESS)  {     CM_CBK_DEBUG_PRINT ("Error: failed to update inst in flow table id=%d",flow_info.flow_id);     fill_app_result_struct(&of_flow_actionset_result, NULL, CM_GLU_VLAN_FAILED);     *result_pp =of_flow_actionset_result;     return OF_FAILURE;  }  return return_value;}
开发者ID:Open-SFC,项目名称:ondir-platform,代码行数:53,


示例14: of_flow_setrec

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Function Name: * Description: * Input: * Output: * Result: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */int32_t of_flow_setrec (void * config_trans_p,		struct cm_array_of_iv_pairs * mand_iv_pairs,		struct cm_array_of_iv_pairs * opt_iv_pairs,		struct cm_app_result ** result_pp){	struct cm_app_result *flow_result = NULL;	int32_t return_value = OF_FAILURE;	struct ofi_flow_mod_info flow_info = { };	struct dprm_datapath_general_info datapath_info={};	uint64_t datapath_handle;	CM_CBK_DEBUG_PRINT ("Entered");   	return OF_SUCCESS;	memset (&flow_info, 0, sizeof (struct ofi_flow_mod_info));	if ((of_flow_ucm_setmandparams (mand_iv_pairs,&datapath_info, &flow_info, &flow_result)) !=			OF_SUCCESS)	{		CM_CBK_DEBUG_PRINT ("Set Mandatory Parameters Failed");		*result_pp=flow_result;		return OF_FAILURE;	}	return_value=dprm_get_datapath_handle(datapath_info.dpid, &datapath_handle);	if (return_value != OF_SUCCESS)	{		CM_CBK_DEBUG_PRINT ("Datapath does not exist with id %llx",datapath_info.dpid);		fill_app_result_struct (&flow_result, NULL, CM_GLU_GROUP_DATAPATH_DOESNOT_EXIST);		*result_pp = flow_result;		return OF_FAILURE;	}    #if 0 //need to check with atmaram	return_value = of_group_unregister_buckets(datapath_handle, flow_info.flow_id);	if (return_value != OF_SUCCESS)	{		CM_CBK_DEBUG_PRINT ("Flow does not exist with name %d",flow_info.flow_id);		fill_app_result_struct (&flow_result, NULL, CM_GLU_FLOW_DOESNOT_EXIST);		*result_pp =flow_result;		return OF_FAILURE;	}    #endif	return OF_SUCCESS;}
开发者ID:Open-SFC,项目名称:ondir-platform,代码行数:53,


示例15: of_action_getnextnrecs

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Function Name: * Description: * Input: * Output: * Result: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */int32_t of_action_getnextnrecs (struct cm_array_of_iv_pairs * key_iv_pairs,		struct cm_array_of_iv_pairs *pPrevRecordKey, uint32_t * pCount,		struct cm_array_of_iv_pairs ** pNextNRecordData_p){	CM_CBK_DEBUG_PRINT ("no next records");	*pCount=0;	return OF_FAILURE;}
开发者ID:Open-SFC,项目名称:ondir-platform,代码行数:15,


示例16: tsc_selectors_modrec

int32_t tsc_selectors_modrec(void * config_trans_p,                             struct cm_array_of_iv_pairs * pMandParams,                             struct cm_array_of_iv_pairs * pOptParams,                             struct cm_app_result ** result_p){  struct cm_app_result          *app_result = NULL;  struct cm_array_of_iv_pairs   *result_iv_pairs_p = NULL;  struct nsc_selector_node_key  *key_p = NULL;    int32_t retval = OF_FAILURE;  CM_CBK_DEBUG_PRINT ("Entered addrec");   key_p = (struct nsc_selector_node_key*)calloc(1,sizeof(struct nsc_selector_node_key));  key_p->vn_name = (char*)calloc(1,128);  if(tsc_selectors_ucm_setmandparams(pMandParams,key_p) != OF_SUCCESS)  {    CM_CBK_DEBUG_PRINT ("Set Mandatory Parameters Failed");    fill_app_result_struct (&app_result, NULL, CM_GLU_SET_MAND_PARAM_FAILED);    free(key_p->vn_name);    free(key_p);    return OF_FAILURE;  }  if(tsc_selectors_ucm_setoptparams(pOptParams,key_p) != OF_SUCCESS)  {    CM_CBK_DEBUG_PRINT ("Set Optional Parameters Failed");    fill_app_result_struct (&app_result, NULL, CM_GLU_SET_OPT_PARAM_FAILED);    free(key_p->vn_name);    free(key_p);    return OF_FAILURE;  }   global_key_p = key_p;   retval = tsc_add_selector_key(key_p);  if(retval != TSC_SUCCESS)  {    CM_CBK_DEBUG_PRINT ("Add Failed");    free(key_p->vn_name);    free(key_p);    return OF_FAILURE;  }  return OF_SUCCESS;}
开发者ID:Open-SFC,项目名称:ond-of-driver,代码行数:46,


示例17: of_fw4_conntemplates_getexactrec

int32_t of_fw4_conntemplates_getexactrec(     struct cm_array_of_iv_pairs * key_iv_pairs_p,     struct cm_array_of_iv_pairs ** pIvPairArr){  struct cm_array_of_iv_pairs *result_iv_pairs_p = NULL;  struct cm_app_result *result = NULL;  struct fw4_conn_templates_config  config_info={};  int32_t return_value = OF_FAILURE;  uint64_t conn_template_handle;  CM_CBK_DEBUG_PRINT ("Entered");  of_memset (&config_info, 0, sizeof(config_info));  if ((of_fw4_conntemplates_setmandparams(key_iv_pairs_p,                                     &config_info,                                     &result)) != OF_SUCCESS)  {    CM_CBK_DEBUG_PRINT("Set Mandatory Parameters Failed");    return OF_FAILURE;  }  return_value = fw4_get_exact_conn_template(&config_info,                                    &conn_template_handle);  if (return_value != OF_SUCCESS)  {    CM_CBK_DEBUG_PRINT ("Error: template doesn't exists");    return OF_FAILURE;  }  CM_CBK_DEBUG_PRINT ("Exact matching record found");  result_iv_pairs_p =    (struct cm_array_of_iv_pairs *) of_calloc (1, sizeof (struct cm_array_of_iv_pairs));  if (result_iv_pairs_p == NULL)  {    CM_CBK_DEBUG_PRINT ("Failed to allocate memory for result_iv_pairs_p");    return OF_FAILURE;  }  of_fw4_conntemplates_getparams(&config_info,                                  result_iv_pairs_p);  *pIvPairArr = result_iv_pairs_p;  return OF_SUCCESS;}
开发者ID:Open-SFC,项目名称:ondir-platform,代码行数:46,


示例18: nsrm_appliance_getfirstnrecs

int32_t nsrm_appliance_getfirstnrecs (struct cm_array_of_iv_pairs * keys_arr_p,                        uint32_t * count_p,                        struct cm_array_of_iv_pairs ** array_of_iv_pair_arr_p){  struct cm_array_of_iv_pairs *result_iv_pairs_p = NULL;  int32_t return_value = OF_FAILURE;  uint32_t uiRecCount = 0;  int32_t uiRecquestedCount = 1, uiReturnedCnt=0;  struct nsrm_nwservice_object_record *nsrm_appliance_config_info=NULL;  CM_CBK_DEBUG_PRINT ("Entered");  nsrm_appliance_config_info = (struct  nsrm_nwservice_object_record*)of_calloc(1,sizeof(struct  nsrm_nwservice_object_record));  nsrm_appliance_config_info->info = (struct nsrm_nwservice_object_config_info*)of_calloc(NSRM_MAX_NWSERVICE_OBJECT_CONFIG_PARAMETERS,sizeof(struct nsrm_nwservice_object_config_info));  nsrm_appliance_config_info->key.name_p = (char*)of_calloc(1,128);  nsrm_appliance_config_info->key.tenant_name_p = (char*)of_calloc(1,128);   return_value = nsrm_get_first_nwservice_objects(uiRecquestedCount,                  &uiReturnedCnt, nsrm_appliance_config_info); if (return_value != OF_SUCCESS) {   CM_CBK_DEBUG_PRINT ("Get first record failed for NSRM appliance  Table");   return OF_FAILURE; }  result_iv_pairs_p = (struct cm_array_of_iv_pairs *) of_calloc (1, sizeof (struct cm_array_of_iv_pairs)); if (result_iv_pairs_p == NULL) {   CM_CBK_DEBUG_PRINT ("Memory allocation failed for result_iv_pairs_p");   of_free(nsrm_appliance_config_info->key.name_p);   of_free(nsrm_appliance_config_info->key.tenant_name_p);   of_free(nsrm_appliance_config_info);   of_free(nsrm_appliance_config_info->info);   return OF_FAILURE; }  nsrm_appliance_ucm_getparams (nsrm_appliance_config_info, &result_iv_pairs_p[uiRecCount]);  uiRecCount++; *array_of_iv_pair_arr_p = result_iv_pairs_p;  of_free(nsrm_appliance_config_info->key.name_p);  of_free(nsrm_appliance_config_info->key.tenant_name_p);  of_free(nsrm_appliance_config_info);  of_free(nsrm_appliance_config_info->info);  return OF_SUCCESS;}
开发者ID:Open-SFC,项目名称:ond-of-driver,代码行数:45,


示例19: of_nem_peth2dpid_getnextnrecs

int32_t of_nem_peth2dpid_getnextnrecs (struct cm_array_of_iv_pairs * key_iv_pairs_p,      struct cm_array_of_iv_pairs *prev_record_key_p, uint32_t * count_p,      struct cm_array_of_iv_pairs ** next_n_record_data_p){   struct cm_array_of_iv_pairs *result_iv_pairs_p = NULL;   struct cm_app_result *app_result_p = NULL;   struct of_nem_dp_peth_info nem_map_info;   uint64_t nem_db_entry_handle;   int32_t ret_val = OF_FAILURE;   uint32_t uiRecCount = 0;   CM_CBK_DEBUG_PRINT ("Entered");   of_memset (&nem_map_info, 0, sizeof (struct of_nem_dp_peth_info));   if ((of_nem_peth2dpid_ucm_setmandparams (prev_record_key_p, &nem_map_info, &app_result_p)) !=         OF_SUCCESS)   {      CM_CBK_DEBUG_PRINT ("Set Mandatory Parameters Failed");      return OF_FAILURE;   }   ret_val=of_nem_peth_2_dpid_db_get_map_entry_handle(nem_map_info.ns_id, nem_map_info.peth_name, &nem_db_entry_handle);   if (ret_val != OF_SUCCESS)   {      CM_CBK_DEBUG_PRINT ("Error: nem entry does not exist with dpid  %llx portname %s",nem_map_info.dp_id, nem_map_info.port_name);      return OF_FAILURE;   }   of_memset (&nem_map_info, 0, sizeof (struct of_nem_dp_peth_info));   ret_val=of_nem_peth_2_dpid_db_get_next_map_entry(&nem_map_info, &nem_db_entry_handle);   if (ret_val != OF_SUCCESS)   {      CM_CBK_DEBUG_PRINT ("failed");      *count_p = 0;      return OF_FAILURE;   }   result_iv_pairs_p =      (struct cm_array_of_iv_pairs *) of_calloc (1, sizeof (struct cm_array_of_iv_pairs));   if (result_iv_pairs_p == NULL)   {      CM_CBK_DEBUG_PRINT ("Memory allocation failed for result_iv_pairs_p");      return OF_FAILURE;   }   CM_CBK_DEBUG_PRINT ("Next Nsid record is : %d ",         nem_map_info.ns_id);   of_nem_peth2dpid_ucm_getparams (&nem_map_info, &result_iv_pairs_p[uiRecCount]);   uiRecCount++;   CM_CBK_DEBUG_PRINT ("Number of records requested were %d ", *count_p);   CM_CBK_DEBUG_PRINT ("Number of records found are %d", uiRecCount+1);   *next_n_record_data_p = result_iv_pairs_p;   *count_p = uiRecCount;   return OF_SUCCESS;}
开发者ID:Open-SFC,项目名称:ondir-platform,代码行数:55,


示例20: of_flowstats_getexactrec

int32_t of_flowstats_getexactrec (struct cm_array_of_iv_pairs * pKeysArr,    struct cm_array_of_iv_pairs ** pIvPairArr){  int32_t return_value = OF_FAILURE;  CM_CBK_DEBUG_PRINT ("Entered");  return return_value;}
开发者ID:Open-SFC,项目名称:ondir-platform,代码行数:9,


示例21: of_flow_actionset_delrec

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Function Name: * Description: * Input: * Output: * Result: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */int32_t of_flow_actionset_delrec (void * config_trans_p,		struct cm_array_of_iv_pairs * key_iv_pairs,		struct cm_app_result ** result_pp){	struct cm_app_result *of_flow_actionset_result = NULL;	int32_t return_value = OF_FAILURE;	struct ofi_flow_mod_info flow_info = { };	struct ofi_flow_action flow_action_info={};	struct flow_trans *trans_rec=config_trans_p;	CM_CBK_DEBUG_PRINT ("Entered");	return OF_FAILURE;	of_memset (&flow_action_info, 0, sizeof (struct ofi_flow_action));	if ( trans_rec->command_id != CM_CMD_DEL_PARAMS)	{		CM_CBK_DEBUG_PRINT ("Delete not supported");		return OF_FAILURE;	}    if ((of_flow_actionset_ucm_setmandparams (key_iv_pairs, NULL,                                     &flow_info, &flow_action_info,                                     &of_flow_actionset_result)) != OF_SUCCESS)	{		CM_CBK_DEBUG_PRINT ("Set Mandatory Parameters Failed");		fill_app_result_struct (&of_flow_actionset_result, NULL, CM_GLU_VLAN_FAILED);		*result_pp =of_flow_actionset_result;		return OF_FAILURE;	}	return_value = of_flow_remove_action_from_list(trans_rec->datapath_handle,                                        flow_info.flow_id,                                        flow_action_info.action_id);	if (return_value != OF_SUCCESS)	{      CM_CBK_DEBUG_PRINT("Error: flow_actionset does not exist with id %d",                          flow_action_info.action_type);      fill_app_result_struct (&of_flow_actionset_result, NULL, CM_GLU_VLAN_FAILED);      *result_pp =of_flow_actionset_result;      return OF_FAILURE;	}	return OF_SUCCESS;}
开发者ID:Open-SFC,项目名称:ondir-platform,代码行数:51,


示例22: of_action_ucm_set_mand_params

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Function Name: * Description: * Input: * Output: * Result: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */int32_t of_action_ucm_set_mand_params (struct cm_array_of_iv_pairs *		mand_iv_pairs,		struct  ofi_group_desc_info *group_info,		struct ofi_bucket *bucket_info,		struct ofi_action *action_info,		struct cm_app_result ** result_pp){	uint32_t param_count;	uint32_t group_id;	uint32_t bucket_id;	char *action_type;	uint32_t action_type_len;	CM_CBK_DEBUG_PRINT ("Entered");	for (param_count = 0; param_count < mand_iv_pairs->count_ui;			param_count++)	{		switch (mand_iv_pairs->iv_pairs[param_count].id_ui)		{			case CM_DM_GROUPDESC_GROUP_ID_ID:				group_id=of_atoi((char *) mand_iv_pairs->iv_pairs[param_count].value_p);				group_info->group_id=group_id;				CM_CBK_DEBUG_PRINT ("group id is %d", group_id);				break;			case  CM_DM_BUCKET_BUCKETID_ID:				bucket_id=of_atoi((char *) mand_iv_pairs->iv_pairs[param_count].value_p);				bucket_info->bucket_id=bucket_id;				CM_CBK_DEBUG_PRINT ("bucket id %d", bucket_id);				break;			case  CM_DM_ACTION_TYPE_ID:				action_type=((char *) mand_iv_pairs->iv_pairs[param_count].value_p);				action_type_len = (mand_iv_pairs->iv_pairs[param_count].value_length);				of_group_set_action_type(action_info,action_type,action_type_len);				//action_info->type=(uint16_t )action_type;				CM_CBK_DEBUG_PRINT ("action type %d %s ",action_info->type,action_type);				break;		}	}	CM_CBK_PRINT_IVPAIR_ARRAY (mand_iv_pairs);	return OF_SUCCESS;}
开发者ID:Open-SFC,项目名称:ondir-platform,代码行数:51,


示例23: nsrm_appliance_addrec

int32_t nsrm_appliance_addrec (void * config_trans_p,                        struct cm_array_of_iv_pairs * pMandParams,                        struct cm_array_of_iv_pairs * pOptParams,                        struct cm_app_result ** result_p){   struct cm_app_result *nsrm_appliance_result = NULL;   int32_t return_value = OF_FAILURE;   struct nsrm_nwservice_object_key *nsrm_appliance_key_info;   struct nsrm_nwservice_object_config_info *nsrm_appliance_config_info = NULL;   CM_CBK_DEBUG_PRINT ("Entered(nsrm_appliance_addrec)");  nsrm_appliance_key_info = (struct nsrm_nwservice_object_key *) of_calloc(1, sizeof(struct nsrm_nwservice_object_key ));  nsrm_appliance_config_info = (struct nsrm_nwservice_object_config_info*)of_calloc(NSRM_MAX_NWSERVICE_OBJECT_CONFIG_PARAMETERS,sizeof(struct nsrm_nwservice_object_config_info));  if ((nsrm_appliance_ucm_setmandparams (pMandParams, nsrm_appliance_key_info, nsrm_appliance_config_info)) != OF_SUCCESS)  {    CM_CBK_DEBUG_PRINT ("Set Mandatory Parameters Failed");    fill_app_result_struct (&nsrm_appliance_result, NULL, CM_GLU_SET_MAND_PARAM_FAILED);    *result_p=nsrm_appliance_result;    of_free(nsrm_appliance_key_info->name_p);    of_free(nsrm_appliance_key_info->tenant_name_p);    of_free(nsrm_appliance_key_info);    return OF_FAILURE;  }    if ((nsrm_appliance_ucm_setoptparams (pOptParams, nsrm_appliance_config_info)) != OF_SUCCESS)  {    CM_CBK_DEBUG_PRINT ("Set Optional Parameters Failed");    fill_app_result_struct (&nsrm_appliance_result, NULL, CM_GLU_SET_OPT_PARAM_FAILED);    *result_p=nsrm_appliance_result;    of_free(nsrm_appliance_key_info->name_p);    of_free(nsrm_appliance_key_info->tenant_name_p);    of_free(nsrm_appliance_key_info);    return OF_FAILURE;  } CM_CBK_DEBUG_PRINT("nsrm_appliance_config_info :%d",nsrm_appliance_config_info[0].value.nwservice_object_form_factor_type_e); CM_CBK_DEBUG_PRINT("nsrm_appliance_config_info :%d",nsrm_appliance_config_info[1].value.admin_status_e);  return_value =nsrm_add_nwservice_object(2, nsrm_appliance_key_info,                                         nsrm_appliance_config_info);  if (return_value != OF_SUCCESS)  {    CM_CBK_DEBUG_PRINT ("nsrm appliance add  Failed");    fill_app_result_struct (&nsrm_appliance_result, NULL, CM_GLU_APPLIANCE_ADD_FAILED);    *result_p = nsrm_appliance_result;    of_free(nsrm_appliance_key_info->name_p);    of_free(nsrm_appliance_key_info->tenant_name_p);    of_free(nsrm_appliance_key_info);    return OF_FAILURE;  }  CM_CBK_DEBUG_PRINT ("NSRM appliance added successfully");  of_free(nsrm_appliance_key_info->name_p);  of_free(nsrm_appliance_key_info->tenant_name_p);  of_free(nsrm_appliance_key_info);  return OF_SUCCESS;}
开发者ID:Open-SFC,项目名称:ond-of-driver,代码行数:59,


示例24: of_cntlrrole_getexactrec

int32_t of_cntlrrole_getexactrec (struct cm_array_of_iv_pairs * pKeysArr,		struct cm_array_of_iv_pairs ** pIvPairArr){	struct   dprm_datapath_general_info datapath_info={};	uint64_t datapath_handle;	int32_t  iRetVal;  	struct   cm_array_of_iv_pairs *result_iv_pairs_p=NULL;        uint8_t  controller_role;	CM_CBK_DEBUG_PRINT ("Entered");	if ((of_cntlrrole_ucm_setmandparams (pKeysArr, &datapath_info, NULL)) !=			OF_SUCCESS)	{		CM_CBK_DEBUG_PRINT ("Set Mandatory Parameters Failed");		return OF_FAILURE;	}	iRetVal = dprm_get_datapath_handle(datapath_info.dpid, &datapath_handle);	if (iRetVal != OF_SUCCESS)	{		CM_CBK_DEBUG_PRINT ("dprm_get_datapath_handle");		return OF_FAILURE;	}	iRetVal = dprm_get_datapath_controller_role(datapath_handle, &controller_role);        if(iRetVal  != DPRM_SUCCESS)        {           CM_CBK_DEBUG_PRINT("Error in getting datapath  ONDirector role");           return OF_FAILURE;        }	CM_CBK_DEBUG_PRINT("ONDirector_role:%d/n",controller_role);	result_iv_pairs_p = (struct cm_array_of_iv_pairs *) of_calloc (1, sizeof (struct cm_array_of_iv_pairs));	if (result_iv_pairs_p == NULL)	{		cntrlrucm_debugmsg("memory allocation failed");		return OF_FAILURE;	}	of_cntlrrole_getparams(controller_role, result_iv_pairs_p);        *pIvPairArr = result_iv_pairs_p;	return OF_SUCCESS;}
开发者ID:Open-SFC,项目名称:ondir-platform,代码行数:44,


示例25: crm_nwport_attribute_getfirstnrecs

int32_t crm_nwport_attribute_getfirstnrecs(struct cm_array_of_iv_pairs * keys_arr_p,		uint32_t * count_p,		struct cm_array_of_iv_pairs ** array_of_iv_pair_arr_p){  struct cm_array_of_iv_pairs *result_iv_pairs_p = NULL;  struct   crm_attribute_name_value_pair crm_attribute_name_value_info={};  struct   crm_attribute_name_value_output_info crm_attribute_output={};  char nwport_name[CRM_MAX_VM_NAME_LEN+1]={};  int32_t return_value = OF_FAILURE;  uint32_t uiRecCount = 0;  CM_CBK_DEBUG_PRINT ("Entered");  of_memset (&crm_attribute_name_value_info, 0, sizeof (struct crm_attribute_name_value_pair));  of_memset(nwport_name, 0, sizeof(nwport_name));  if ((crm_nwport_attribute_ucm_setmandparams (keys_arr_p, nwport_name, &crm_attribute_name_value_info, 					NULL)) != OF_SUCCESS)   {     CM_CBK_DEBUG_PRINT ("Set Mandatory Parameters Failed");     return OF_FAILURE;  }  crm_attribute_output.name_length = CRM_MAX_ATTRIBUTE_NAME_LEN -1;  crm_attribute_output.value_length = CRM_MAX_ATTRIBUTE_VALUE_LEN -1;  return_value = crm_get_port_first_attribute(nwport_name, &crm_attribute_output);  if (return_value != OF_SUCCESS)   {     CM_CBK_DEBUG_PRINT ("crm_get_first_nwport_attribute_name failed!");     return OF_FAILURE;   }   result_iv_pairs_p = (struct cm_array_of_iv_pairs *) of_calloc (1, sizeof (struct cm_array_of_iv_pairs));  if (result_iv_pairs_p == NULL)  {    CM_CBK_DEBUG_PRINT ("Memory allocation failed for result_iv_pairs_p");    return OF_FAILURE;  }  crm_attribute_nwport_getparams(&crm_attribute_output, &result_iv_pairs_p[uiRecCount]);  uiRecCount++;  *array_of_iv_pair_arr_p = result_iv_pairs_p;  *count_p = uiRecCount;    return CRM_SUCCESS;  }
开发者ID:Open-SFC,项目名称:ond-of-driver,代码行数:44,


示例26: UCMDP_EndConfigTransaction

int32_t UCMDP_EndConfigTransaction(uint32_t uiAppId,void * config_trans_p,uint32_t uiCmdId,struct cm_app_result ** result_p){	 char *pTempBuf;;	 struct cm_app_result *app_result_p=NULL;	 int32_t iTotalLen=0,return_value;	 ucmcommmsg_t CommMsg={};	 pTempBuf=CommMsg.cntlreqmsg.msg;	 CM_CBK_DEBUG_PRINT(" Entry uiAppId=%d",uiAppId);#if defined(_LP64)	 pTempBuf= of_mbuf_put_64(pTempBuf, (unsigned long)config_trans_p);#else	 pTempBuf= of_mbuf_put_32(pTempBuf, (uint32_t) config_trans_p);#endif	 iTotalLen+=sizeof(long);	 app_result_p = (struct cm_app_result *)of_calloc(1,sizeof(struct cm_app_result));	 if(!app_result_p)	 {			CM_CBK_DEBUG_PRINT("memory allocation failed");			return OF_FAILURE;	 }	 CM_CNTRL_PREPARE_CNTRL_CFG_REQUEST(CommMsg.cntlreqmsg, uiAppId, uiCmdId, CM_CPDP_APPL_TRANS_END_CMD, sizeof(long), iTotalLen);	 return_value=UCMCntrlCommHandler(&CommMsg,app_result_p);	 if(app_result_p->result_code==OF_FAILURE)	 {			if ( (return_value == CM_APPL_NULL_CALLBACK))			{				 CM_CBK_DEBUG_PRINT("No transaction support. Sending temp trans");				 return OF_SUCCESS;			}			if (return_value == CM_APPL_END_TRANS_FAILED)			{				 *result_p = app_result_p ;				 CM_CBK_DEBUG_PRINT("transaction start failed");			}			return OF_FAILURE;	 }	 of_free(app_result_p);	 return OF_SUCCESS;}
开发者ID:Open-SFC,项目名称:ondir-platform,代码行数:44,


示例27: of_fw4_conntemplates_delrec

int32_t of_fw4_conntemplates_delrec(void * config_transaction_p,                        struct cm_array_of_iv_pairs * keys_arr_p,                        struct cm_app_result ** result_p){  struct cm_app_result *result = NULL;  int32_t return_value = OF_FAILURE;  struct fw4_conn_templates_config  config_info={};  CM_CBK_DEBUG_PRINT ("Entered");  if ((of_fw4_conntemplates_setmandparams(                                keys_arr_p,                                 &config_info,                                 &result)) != OF_SUCCESS)  {    CM_CBK_DEBUG_PRINT ("Set Mandatory Parameters Failed");    fill_app_result_struct (&result, NULL, CM_GLU_SET_MAND_PARAM_FAILED);    *result_p = result;    return OF_FAILURE;  }  if((of_fw4_conntemplates_setoptparams(                               keys_arr_p,                                &config_info,                                &result)) != OF_SUCCESS)  {    CM_CBK_DEBUG_PRINT("Set Optional Parameters Failed");    fill_app_result_struct(&result, NULL, CM_GLU_SET_OPT_PARAM_FAILED);    *result_p = result;    return OF_FAILURE;  }  return_value = fw4_del_conn_templates(&config_info);  if (return_value != OF_SUCCESS)  {    CM_CBK_DEBUG_PRINT ("crm tenant add  Failed");    fill_app_result_struct (&result, NULL, CM_GLU_CONN_TEMPLATE_DEL_FAILED);    *result_p = result;    return OF_FAILURE;  }  CM_CBK_DEBUG_PRINT ("connection template record delete successfully");  return OF_SUCCESS;}
开发者ID:Open-SFC,项目名称:ondir-platform,代码行数:44,


示例28: of_queue_getnextnrecs

int32_t of_queue_getnextnrecs (struct cm_array_of_iv_pairs * pKeysArr,    struct cm_array_of_iv_pairs *pPrevRecordKey, uint32_t * pCount,    struct cm_array_of_iv_pairs ** pNextNRecordData_p){  CM_CBK_DEBUG_PRINT ("Entered");  *pCount=0;  return OF_FAILURE;}
开发者ID:Open-SFC,项目名称:ondir-platform,代码行数:10,


示例29: of_flow_actionset_ucm_setmandparams

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Function Name: * Description: * Input: * Output: * Result: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */int32_t of_flow_actionset_ucm_setmandparams (struct cm_array_of_iv_pairs *mand_iv_pairs,                               struct dprm_datapath_general_info *datapath_info,                               struct  ofi_flow_mod_info *flow_info,                               struct ofi_flow_action *flow_action_info,                               struct cm_app_result ** result_pp){  uint32_t opt_param_cnt;  uint32_t flow_id;  uint64_t uidp_id;  CM_CBK_DEBUG_PRINT ("Entered");  for (opt_param_cnt = 0; opt_param_cnt < mand_iv_pairs->count_ui; opt_param_cnt++)  {      switch (mand_iv_pairs->iv_pairs[opt_param_cnt].id_ui)      {	     case CM_DM_DATAPATH_DATAPATHID_ID:          uidp_id=charTo64bitNum((char *) mand_iv_pairs->iv_pairs[opt_param_cnt].value_p);          CM_CBK_DEBUG_PRINT("dpid is: %llx",uidp_id);          if (datapath_info)          {              datapath_info->dpid = uidp_id;          }          break;         case CM_DM_FLOWMOD_FLOWID_ID:            flow_id = of_atoi((char *) mand_iv_pairs->iv_pairs[opt_param_cnt].value_p);            flow_info->flow_id = flow_id;            CM_CBK_DEBUG_PRINT ("flow id is %d", flow_id);            break;         case CM_DM_ACTIONSET_ACTIONSETID_ID:            flow_action_info->action_id =             of_atoi((char *) mand_iv_pairs->iv_pairs[opt_param_cnt].value_p);            break;         case  CM_DM_ACTIONSET_ACTIONSETTYPE_ID:			            of_flow_set_action_type(flow_action_info,                 (char *)mand_iv_pairs->iv_pairs[opt_param_cnt].value_p,                 mand_iv_pairs->iv_pairs[opt_param_cnt].value_length);            //CM_CBK_DEBUG_PRINT ("flow_actionset type %d %d ",                                flow_action_info->action_type,flow_action_type);            break;       }  }  CM_CBK_PRINT_IVPAIR_ARRAY (mand_iv_pairs);  return OF_SUCCESS;}
开发者ID:Open-SFC,项目名称:ondir-platform,代码行数:50,


示例30: crm_subnet_delrec

int32_t crm_subnet_delrec (void * config_transaction_p,                        struct cm_array_of_iv_pairs * keys_arr_p,                        struct cm_app_result ** result_p){  struct cm_app_result *crm_subnet_result = NULL;  int32_t return_value = OF_FAILURE;  struct crm_subnet_config_info sub_config_info={};  uint64_t output_subnet_handle;     CM_CBK_DEBUG_PRINT ("Entered");  if ((crm_subnet_ucm_setmandparams (keys_arr_p,&sub_config_info , &crm_subnet_result)) !=           OF_SUCCESS)  {    CM_CBK_DEBUG_PRINT ("Set Mandatory Parameters Failed");    fill_app_result_struct (&crm_subnet_result, NULL, CM_GLU_SET_MAND_PARAM_FAILED);    *result_p = crm_subnet_result;    return OF_FAILURE;  }  return_value = crm_subnet_ucm_setoptparams (keys_arr_p,&sub_config_info, &crm_subnet_result);   if (return_value != OF_SUCCESS)   {     CM_CBK_DEBUG_PRINT ("Set Optional Parameters Failed");     fill_app_result_struct (&crm_subnet_result, NULL, CM_GLU_SET_OPT_PARAM_FAILED);     *result_p = crm_subnet_result;     return OF_FAILURE;   }    return_value =crm_del_subnet(sub_config_info.subnet_name);  if (return_value != OF_SUCCESS)  {    CM_CBK_DEBUG_PRINT ("crm subnet add  Failed");    fill_app_result_struct (&crm_subnet_result, NULL, CM_GLU_SUBNET_DEL_FAILED);    *result_p = crm_subnet_result;    return OF_FAILURE;  }  CM_CBK_DEBUG_PRINT ("CRM subnet delete successfully");  return OF_SUCCESS;}
开发者ID:hritham,项目名称:Freescale-OpenFlow-Controller,代码行数:43,



注:本文中的CM_CBK_DEBUG_PRINT函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ CM_InlineModel函数代码示例
C++ CM_ASSERT函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。