############################################################# -*- c -*- ## generic include for XXX. Do not use directly. ## ######################################################################## @if $m2c_mark_boundary == 1@ /** START code generated by node-get.m2i */ @end@ ######################################################################## ## @include m2c_setup_node.m2i@ @eval $m2c_node_realloc = 2@ // malloc /** * Extract the current value of the $node data. * * Set a value using the data context for the row. * @if $m2c_node_get_comments ne ""@ $m2c_node_get_comments * @end@ * @param rowreq_ctx * Pointer to the row request context. * @param $m2c_node_param_ref_name * Pointer to storage for a $node.decl variable @if $m2c_node_needlength == 1@ * @param $m2c_node_param_ref_lname * Pointer to a size_t. On entry, it will contain the size (in bytes) * pointed to by $node. * On exit, this value should contain the data size (in bytes). @end@ * * @retval MFD_SUCCESS : success * @retval MFD_SKIP : skip this node (no value for now) * @retval MFD_ERROR : Any other error @if $m2c_node_needlength == 1@ * * @note If you need more than (*$m2c_node_param_ref_lname) bytes of memory, * allocate it using malloc() and update $m2c_node_param_ref_name. * DO NOT free the previous pointer. * The MFD helper will release the memory you allocate. * * @remark If you call this function yourself, you are responsible * for checking if the pointer changed, and freeing any * previously allocated memory. (Not necessary if you pass * in a pointer to static memory, obviously.) @end@ */ int ${node}_get( ${context}_rowreq_ctx *rowreq_ctx, $m2c_node_param_ref ) { @ifconf syntax-$node.syntax-get.m2i@ @ include syntax-$node.syntax-get.m2i@ @else@ @ include generic-get-decl.m2i@ DEBUGMSGTL(("verbose:${context}:${node}_get","called\n")); netsnmp_assert(NULL != rowreq_ctx); /* * TODO:231:o: |-> Extract the current value of the $node data. @if $m2c_node_needlength == 0@ * copy $m2c_node_lh from $m2c_data_item_base @else@ * copy $m2c_node_lh data and $m2c_node_lhs from $m2c_data_item_base @end@ */ @ if ("$m2c_data_context" eq "generated") && ($m2c_node_skip_get != 1)@ @ include generic-ctx-get.m2i@ @ else@ @ if ($m2c_node_skip_get != 1)@ /* * TODO:235:M: |-> Remove log message/SKIP once you've set $node data */ snmp_log(LOG_ERR,"${context} node $node not implemented: skipping\n"); @ end@ return MFD_SKIP; @ end@ ## ------------------------------------------------------------------ @ if $node.decl =~ /long/i@ # ASN_INTEGER ASN_COUNTER ASN_GAUGE @ include generic-get-long.m2i@ @ elsif $node.decl =~ /char/i@ # ASN_OCTET_STR ASN_OPAQUE @ include generic-get-char.m2i@ @ elsif $node.decl =~ /oid/i@ # ASN_OBJECT_ID @ include generic-get-oid.m2i@ @ elsif $node.decl =~ /U64/i@ # ASN_COUNTER64 @ include generic-get-U64.m2i@ @ else@ @ print ERROR: unknown node.decl: $node.decl@ @ exit@ @ end@ ## ------------------------------------------------------------------ @ if ($m2c_node_skip_mapping != 1) && ("$m2c_data_context" ne "generated")@ @ include generic-value-map.m2i@ @ end@ @ include generic-get-decl-bot.m2i@ // copy value out @end@ # no syntax include return MFD_SUCCESS; } /* ${node}_get */ ## ######################################################################## @if $m2c_mark_boundary == 1@ /** END code generated by node-get.m2i */ @end@