106 lines
3.5 KiB
C
106 lines
3.5 KiB
C
############################################################# -*- c -*-
|
|
## generic include for XXX. Do not use directly.
|
|
##
|
|
########################################################################
|
|
@if $m2c_mark_boundary == 1@
|
|
/** START code generated by generic-ctx-get.m2i */
|
|
@end@
|
|
########################################################################
|
|
##/*
|
|
## This include will generate the code needed to assign data from
|
|
## a generated data context to a parameter reference.
|
|
##
|
|
## EXAMPLE (prototype generated elsewhere)
|
|
## int
|
|
## ifName_get(ifXTable_ctx * ctx, char **ifName_ptr_ptr,
|
|
## size_t * ifName_len_ptr) {
|
|
##
|
|
##
|
|
## m2c_node_lh : temp_ifName / (*ifName_ptr_ptr)
|
|
## m2c_node_lhs: temp_ifName_len / (*ifName_len_ptr);
|
|
## m2c_ctx_rh : ctx->data.
|
|
## node : ifName
|
|
##
|
|
## if (temp_ifName_len < ctx->data.ifName_len) {
|
|
## temp_ifName = malloc(ctx->data.ifName_len);
|
|
## }
|
|
## temp_ifName_len = ctx->data.ifName_len;
|
|
## memcpy(temp_ifName, ctx->data.ifName, temp_ifName_len);
|
|
##*/
|
|
@if "$m2c_data_context" ne "generated"@
|
|
/** WARNING: this code might not work for $m2c_data_context */
|
|
@end@
|
|
##/* set up for length/copy conversions for various cases.
|
|
## length mod applies to left hand side. copy mod applies to right hand side
|
|
##
|
|
##*/
|
|
@if ("$m2c_ctx_rhu" ne "elements") && ("$m2c_ctx_rhu" ne "bytes")@
|
|
@ print Invalid rh units '$m2c_ctx_rhu'@
|
|
@ exit@
|
|
@end@
|
|
@if ("$m2c_ctx_lhu" ne "elements") && ("$m2c_ctx_lhu" ne "bytes")@
|
|
@ print Invalid lh units '$m2c_ctx_lhu'@
|
|
@ exit@
|
|
@end@
|
|
@if "$m2c_ctx_rhu" ne "$m2c_ctx_lhu"@
|
|
##/* elements = bytes, length mod="/sizeof", copy mult="" */
|
|
@ if "$m2c_ctx_lhu" eq "elements"@
|
|
@ eval $m2c_ctx_lm = "/ sizeof($m2c_ctx_rh[0])"@
|
|
@ eval $m2c_ctx_cm = ""@
|
|
@ else@
|
|
##/* bytes = elements, length mod="*sizeof", copy mult="sizeof" */
|
|
@ eval $m2c_ctx_lm = "* sizeof($m2c_ctx_rh[0])"@
|
|
@ eval $m2c_ctx_cm = "* sizeof($m2c_ctx_rh[0])"@
|
|
@ end@
|
|
@else@
|
|
##/* elements = elements, length mod="", copy mult="sizeof" */
|
|
@ if "$m2c_ctx_lhu" eq "elements"@
|
|
@ eval $m2c_ctx_lm = ""@
|
|
@ eval $m2c_ctx_cm = "* sizeof($m2c_ctx_rh[0])"@
|
|
@ else@
|
|
##/* bytes = bytes, length mod="", copy mult="" */
|
|
@ eval $m2c_ctx_lm = ""@
|
|
@ eval $m2c_ctx_cm = ""@
|
|
@ end@
|
|
@end@
|
|
@if $m2c_node_needlength == 1@
|
|
/*
|
|
* make sure there is enough space for $node data
|
|
*/
|
|
if ((NULL == $m2c_ctx_lh) ||
|
|
($m2c_ctx_lhs <
|
|
($m2c_ctx_rhs$m2c_ctx_lm))) {
|
|
@ if $m2c_node_realloc == 0@
|
|
snmp_log(LOG_ERR,"not enough space for value ($m2c_ctx_rh)\n");
|
|
return MFD_ERROR;
|
|
@ else@
|
|
/*
|
|
* allocate space for $node data
|
|
*/
|
|
@ if $m2c_node_realloc == 1@
|
|
$m2c_ctx_lh = realloc($m2c_ctx_lh, $m2c_ctx_rhs$m2c_ctx_cm );
|
|
@ else@
|
|
$m2c_ctx_lh = malloc($m2c_ctx_rhs$m2c_ctx_cm);
|
|
@ end@
|
|
if(NULL == $m2c_ctx_lh) {
|
|
snmp_log(LOG_ERR,"could not allocate memory ($m2c_ctx_rh)\n");
|
|
return MFD_ERROR;
|
|
}
|
|
@ end@
|
|
}
|
|
$m2c_ctx_lhs = $m2c_ctx_rhs$m2c_ctx_lm;
|
|
memcpy( $m2c_ctx_lh, $m2c_ctx_rh, $m2c_ctx_rhs$m2c_ctx_cm );
|
|
@else@
|
|
@ if $node.decl =~ /U64/i@ # ASN_COUNTER64
|
|
${m2c_ctx_lh}.high = ${m2c_ctx_rh}.high;
|
|
${m2c_ctx_lh}.low = ${m2c_ctx_rh}.low;
|
|
@ else@
|
|
$m2c_ctx_lh = $m2c_ctx_rh;
|
|
@ end@
|
|
@end@ # length
|
|
##
|
|
########################################################################
|
|
@if $m2c_mark_boundary == 1@
|
|
/** END code generated by generic-ctx-get.m2i */
|
|
@end@
|