generic-value-map-func.m2i
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:4k
源码类别:
SNMP编程
开发平台:
Unix_Linux
- ############################################################# -*- c -*-
- ## generic include for XXX. Do not use directly.
- ##
- ## $Id: generic-value-map-func.m2i,v 1.7.2.2 2005/04/18 22:14:01 rstory Exp $
- ########################################################################
- @if $m2c_mark_boundary == 1@
- /** START code generated by $RCSfile: generic-value-map-func.m2i,v $ $Revision: 1.7.2.2 $ */
- @end@
- ########################################################################
- ## }
- /**
- * map a value from its original native format to the MIB format.
- *
- * @retval MFD_SUCCESS : success
- * @retval MFD_ERROR : Any other error
- *
- * @note parameters follow the memset convention (dest, src).
- *
- * @note generation and use of this function can be turned off by re-running
- * mib2c after adding the following line to the file
- * default-node-${node}.m2d :
- * @eval $@m2c_node_skip_mapping = 1@
- *
- * @remark
- * If the values for your data type don't exactly match the
- * possible values defined by the mib, you should map them here.
- * Otherwise, just do a direct copy.
- */
- int
- ${node}_map($m2c_node_map_param)
- {
- @if $m2c_node_needlength == 1@
- int converted_len;
- netsnmp_assert(NULL != raw_$m2c_node_param_val_name);
- netsnmp_assert((NULL != mib_$m2c_node_param_ref_name) && (NULL != mib_$m2c_node_param_ref_lname));
- @else@
- netsnmp_assert(NULL != mib_$m2c_node_param_ref_name);
- @end@
- DEBUGMSGTL(("verbose:${context}:${node}_map","calledn"));
- @if $m2c_node_needlength == 1@
- /*
- * TODO:241:r: |-> Implement $node non-integer mapping
- * it is hard to autogenerate code for mapping types that are not simple
- * integers, so here is an idea of what you might need to do. It will
- * probably need some tweaking to get right.
- */
- /*
- * if the length of the raw data doesn't directly correspond with
- * the length of the mib data, set converted_len to the
- * space required.
- */
- converted_len = raw_$m2c_node_param_val_lname; /* assume equal */
- if((NULL == *mib_$m2c_node_param_ref_name) || (*mib_$m2c_node_param_ref_lname < converted_len)) {
- if(! allow_realloc) {
- snmp_log(LOG_ERR,"not enough space for value mappingn");
- return SNMP_ERR_GENERR;
- }
- *mib_$m2c_node_param_ref_name = realloc( *mib_$m2c_node_param_ref_name, converted_len * sizeof(**mib_$m2c_node_param_ref_name));
- if(NULL == *mib_$m2c_node_param_ref_name) {
- snmp_log(LOG_ERR,"could not allocate memoryn");
- return SNMP_ERR_GENERR;
- }
- }
- *mib_$m2c_node_param_ref_lname = converted_len;
- memcpy( *mib_$m2c_node_param_ref_name, raw_$m2c_node_param_val_name, converted_len );
- ##
- @elsif ($node.enums == 1) && ("$node.perltype" eq "INTEGER")@
- /*
- * TODO:241:o: |-> Implement $node enum mapping.
- * uses INTERNAL_* macros defined in the header files
- */
- switch(raw_$m2c_node_param_val_name) {
- @ foreach $e $v enum@
- @ include m2c_setup_enum.m2i@
- case INTERNAL_$m2c_iname:
- *mib_$m2c_node_param_ref_name = $m2c_ename;
- break;
- @ end@ # foreach
- default:
- snmp_log(LOG_ERR, "couldn't map value %ld for $noden", raw_$m2c_node_param_val_name );
- return MFD_ERROR;
- }
- ##
- @else@
- /*
- * TODO:241:o: |-> Implement $node mapping.
- * If the values for your data type don't exactly match the
- * possible values defined by the mib, you should map them here.
- */
- (*mib_$m2c_node_param_ref_name) = raw_$m2c_node_param_val_name;
- @end@
- return MFD_SUCCESS;
- } /* ${node}_map */
- ##
- ########################################################################
- @if $m2c_mark_boundary == 1@
- /** END code generated by $RCSfile: generic-value-map-func.m2i,v $ $Revision: 1.7.2.2 $ */
- @end@