generic-value-map-func.m2i
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:4k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. #############################################################  -*- c -*-
  2. ## generic include for XXX. Do not use directly.
  3. ##
  4. ## $Id: generic-value-map-func.m2i,v 1.7.2.2 2005/04/18 22:14:01 rstory Exp $
  5. ########################################################################
  6. @if $m2c_mark_boundary == 1@
  7. /** START code generated by $RCSfile: generic-value-map-func.m2i,v $ $Revision: 1.7.2.2 $ */
  8. @end@
  9. ########################################################################
  10. ## }
  11. /**
  12.  * map a value from its original native format to the MIB format.
  13.  *
  14.  * @retval MFD_SUCCESS         : success
  15.  * @retval MFD_ERROR           : Any other error
  16.  *
  17.  * @note parameters follow the memset convention (dest, src).
  18.  *
  19.  * @note generation and use of this function can be turned off by re-running
  20.  * mib2c after adding the following line to the file
  21.  * default-node-${node}.m2d :
  22.  *   @eval $@m2c_node_skip_mapping = 1@
  23.  *
  24.  * @remark
  25.  *  If the values for your data type don't exactly match the
  26.  *  possible values defined by the mib, you should map them here.
  27.  *  Otherwise, just do a direct copy.
  28.  */
  29. int
  30. ${node}_map($m2c_node_map_param)
  31. {
  32. @if $m2c_node_needlength == 1@
  33.     int converted_len;
  34.     netsnmp_assert(NULL != raw_$m2c_node_param_val_name);
  35.     netsnmp_assert((NULL != mib_$m2c_node_param_ref_name) && (NULL != mib_$m2c_node_param_ref_lname));
  36. @else@
  37.     netsnmp_assert(NULL != mib_$m2c_node_param_ref_name);
  38. @end@
  39.     
  40.     DEBUGMSGTL(("verbose:${context}:${node}_map","calledn"));
  41.     
  42. @if $m2c_node_needlength == 1@
  43.     /*
  44.      * TODO:241:r: |-> Implement $node non-integer mapping
  45.      * it is hard to autogenerate code for mapping types that are not simple
  46.      * integers, so here is an idea of what you might need to do. It will
  47.      * probably need some tweaking to get right.
  48.      */
  49.     /*
  50.      * if the length of the raw data doesn't directly correspond with
  51.      * the length of the mib data, set converted_len to the
  52.      * space required.
  53.      */
  54.     converted_len = raw_$m2c_node_param_val_lname; /* assume equal */
  55.     if((NULL == *mib_$m2c_node_param_ref_name) || (*mib_$m2c_node_param_ref_lname < converted_len)) {
  56.         if(! allow_realloc) {
  57.             snmp_log(LOG_ERR,"not enough space for value mappingn");
  58.             return SNMP_ERR_GENERR;
  59.         }
  60.         *mib_$m2c_node_param_ref_name = realloc( *mib_$m2c_node_param_ref_name, converted_len * sizeof(**mib_$m2c_node_param_ref_name));
  61.         if(NULL == *mib_$m2c_node_param_ref_name) {
  62.             snmp_log(LOG_ERR,"could not allocate memoryn");
  63.             return SNMP_ERR_GENERR;
  64.         }
  65.     }
  66.     *mib_$m2c_node_param_ref_lname = converted_len;
  67.     memcpy( *mib_$m2c_node_param_ref_name, raw_$m2c_node_param_val_name, converted_len );
  68. ##
  69. @elsif ($node.enums == 1) && ("$node.perltype" eq "INTEGER")@
  70.     /*
  71.      * TODO:241:o: |-> Implement $node enum mapping.
  72.      * uses INTERNAL_* macros defined in the header files
  73.      */
  74.     switch(raw_$m2c_node_param_val_name) {
  75. @    foreach $e $v enum@
  76. @        include m2c_setup_enum.m2i@
  77.         case INTERNAL_$m2c_iname:
  78.              *mib_$m2c_node_param_ref_name = $m2c_ename;
  79.              break;
  80. @    end@ # foreach
  81.              default:
  82.                  snmp_log(LOG_ERR, "couldn't map value %ld for $noden", raw_$m2c_node_param_val_name );
  83.                  return MFD_ERROR;
  84.     }
  85. ##
  86. @else@
  87.     /*
  88.      * TODO:241:o: |-> Implement $node mapping.
  89.      * If the values for your data type don't exactly match the
  90.      * possible values defined by the mib, you should map them here.
  91.      */
  92.     (*mib_$m2c_node_param_ref_name) = raw_$m2c_node_param_val_name;
  93. @end@
  94.     return MFD_SUCCESS;
  95. } /* ${node}_map */
  96. ##
  97. ########################################################################
  98. @if $m2c_mark_boundary == 1@
  99. /** END code generated by $RCSfile: generic-value-map-func.m2i,v $ $Revision: 1.7.2.2 $ */
  100. @end@