This file is indexed.

/usr/share/snmp/mib2c-data/generic-value-map-func.m2i is in libsnmp-base 5.4.3~dfsg-2.4ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
#############################################################  -*- c -*-
## generic include for XXX. Do not use directly.
##
## $Id: generic-value-map-func.m2i 12095 2005-04-18 22:14:01Z rstory $
########################################################################
@if $m2c_mark_boundary == 1@
/** START code generated by $RCSfile$ $Revision: 12095 $ */
@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 $RCSfile$ $Revision: 12095 $ */
@end@