104 lines
3.6 KiB
C
104 lines
3.6 KiB
C
############################################################# -*- c -*-
|
|
## generic include for XXX. Do not use directly.
|
|
##
|
|
########################################################################
|
|
@if $m2c_mark_boundary == 1@
|
|
/** START code generated by generic-value-map-func.m2i */
|
|
@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
|
|
* ${m2c_defaults_dir}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","called\n"));
|
|
|
|
@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 mapping\n");
|
|
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 memory\n");
|
|
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_$context.uc_$m2c_iname:
|
|
*mib_$m2c_node_param_ref_name = $m2c_ename;
|
|
break;
|
|
|
|
@ end@ # foreach
|
|
default:
|
|
snmp_log(LOG_ERR, "couldn't map value %ld for $node\n", 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 generic-value-map-func.m2i */
|
|
@end@
|