summaryrefslogtreecommitdiff
path: root/local/mib2c-conf.d/mfd-data-access.m2c
diff options
context:
space:
mode:
Diffstat (limited to 'local/mib2c-conf.d/mfd-data-access.m2c')
-rw-r--r--local/mib2c-conf.d/mfd-data-access.m2c331
1 files changed, 331 insertions, 0 deletions
diff --git a/local/mib2c-conf.d/mfd-data-access.m2c b/local/mib2c-conf.d/mfd-data-access.m2c
new file mode 100644
index 0000000..bcff9bb
--- /dev/null
+++ b/local/mib2c-conf.d/mfd-data-access.m2c
@@ -0,0 +1,331 @@
+##//######################################################### -*- c -*-
+##//generic include for XXX. Do not use directly.
+##
+##//$Id$
+##//####################################################################
+##//####################################################################
+##
+## lower conf files get confused with multiple processing types, so
+## set single options
+@eval $mfd_data_access_processing_type = "$m2c_processing_type"@
+@eval $m2c_processing_type = 'h'@
+@open ${name}_data_access.h@
+@eval $hack = "Id"@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version $Revision$ of $RCSfile$
+ *
+ * $$hack:$
+ */
+@if $m2c_mark_boundary == 1@
+/** START code generated by $RCSfile$ $Revision$ */
+@end@
+@eval $m2c_save = "$name"@
+@eval $name = "${name}_DATA_ACCESS"@
+@include generic-header-top.m2i@
+@eval $name = "$m2c_save"@
+
+/* *********************************************************************
+ * function declarations
+ */
+
+/* *********************************************************************
+ * Table declarations
+ */
+@foreach $table table@
+@ include m2c_setup_table.m2i@
+@ include details-table.m2i@
+
+##@ eval $m2c_tmp=""@
+##@ foreach $node index@
+##@ include m2c_setup_node.m2i@
+##@ eval $m2c_tmp="$m2c_tmp, $m2c_node_param_val"@
+##@ end@ // for each index
+
+ int ${context}_init_data(${context}_registration * ${context}_reg);
+
+@ include mfd-access-${m2c_table_access}-defines.m2i@
+ int ${context}_row_prep( ${context}_rowreq_ctx *rowreq_ctx);
+
+@ if ($m2c_table_row_creation == 1) || ($m2c_table_persistent == 1)@
+int ${context}_validate_index( ${context}_registration * ${context}_reg,
+ ${context}_rowreq_ctx *rowreq_ctx);
+@ foreach $node externalindex@
+@ include m2c_setup_node.m2i@
+ int ${context}_${node}_check_index( ${context}_rowreq_ctx *rowreq_ctx ); /* external */
+@ end@ # foreach externalindex
+@ foreach $node internalindex@
+@ include m2c_setup_node.m2i@
+int ${node}_check_index( ${context}_rowreq_ctx *rowreq_ctx ); /* internal */
+@ end@ # foreach internalindex
+@ end@ # row creation/persistent
+@end@
+
+@eval $m2c_save = "$name"@
+@eval $name = "${name}_DATA_ACCESS"@
+@include generic-header-bottom.m2i@
+@eval $name = "$m2c_save"@
+##//##################################################################
+##//Do the .c file
+##//##################################################################
+@eval $m2c_processing_type = 'c'@
+@open ${name}_data_access.c@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version $Revision$ of $RCSfile$
+ *
+ * $$hack:$
+ */
+@include generic-source-includes.m2i@
+
+#include "${name}_data_access.h"
+
+/** @ingroup interface
+ * @addtogroup data_access data_access: Routines to access data
+ *
+ * These routines are used to locate the data used to satisfy
+ * requests.
+ *
+ * @{
+ */
+@foreach $table table@
+@ include m2c_setup_table.m2i@
+@ include details-table.m2i@
+
+/**
+ * initialization for ${context} data access
+ *
+ * This function is called during startup to allow you to
+ * allocate any resources you need for the data table.
+ *
+ * @param ${context}_reg
+ * Pointer to ${context}_registration
+ *
+ * @retval MFD_SUCCESS : success.
+ * @retval MFD_ERROR : unrecoverable error.
+ */
+int
+${context}_init_data(${context}_registration * ${context}_reg)
+{
+ DEBUGMSGTL(("verbose:${context}:${context}_init_data","called\n"));
+
+ /*
+ * TODO:303:o: Initialize $context data.
+ */
+@ifconf ${table}_init_data.m2i@
+@ include ${table}_init_data.m2i@
+@else@
+@ if $m2c_include_examples == 1@
+$example_start
+ /*
+ * if you are the sole writer for the file, you could
+ * open it here. However, as stated earlier, we are assuming
+ * the worst case, which in this case means that the file is
+ * written to by someone else, and might not even exist when
+ * we start up. So we can't do anything here.
+ */
+$example_end
+@ end@
+
+ return MFD_SUCCESS;
+@end@ #ifconf
+} /* ${context}_init_data */
+
+@ include mfd-access-${m2c_table_access}-defines.m2i@
+/**
+ * prepare row for processing.
+ *
+ * When the agent has located the row for a request, this function is
+ * called to prepare the row for processing. If you fully populated
+ * the data context during the index setup phase, you may not need to
+ * do anything.
+ *
+ * @param rowreq_ctx pointer to a context.
+ *
+ * @retval MFD_SUCCESS : success.
+ * @retval MFD_ERROR : other error.
+ */
+int
+${context}_row_prep( ${context}_rowreq_ctx *rowreq_ctx)
+{
+ DEBUGMSGTL(("verbose:${context}:${context}_row_prep","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * TODO:390:o: Prepare row for request.
+ * If populating row data was delayed, this is the place to
+ * fill in the row for this request.
+ */
+
+ return MFD_SUCCESS;
+} /* ${context}_row_prep */
+
+##//####################################################################
+@ if ($m2c_table_row_creation == 1) || ($m2c_table_persistent == 1)@
+/*
+ * TODO:420:r: Implement $context index validation.
+ */
+@ foreach $node externalindex@
+@ include m2c_setup_node.m2i@
+@ if $m2c_report_progress == 1@
+@ print | | +-> Processing index $node@
+@ end@
+@ include details-node.m2i@
+/**
+ * check validity of ${node} external index portion
+ *
+ * NOTE: this is not the place to do any checks for the sanity
+ * of multiple indexes. Those types of checks should be done in the
+ * ${context}_validate_index() function.
+ *
+ * @retval MFD_SUCCESS : the incoming value is legal
+ * @retval MFD_ERROR : the incoming value is NOT legal
+ */
+int
+${context}_${node}_check_index( ${context}_rowreq_ctx *rowreq_ctx )
+{
+ DEBUGMSGTL(("verbose:${context}:${context}_${node}_check_index","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * TODO:424:M: |-> Check $context external index $node.
+ * check that index value in the table context (rowreq_ctx)
+ * for the external index $node is legal.
+ */
+
+ return MFD_SUCCESS; /* external index $node ok */
+} /* ${context}_${node}_check_index */
+
+@ end@ # foreach externalindex
+@ foreach $node internalindex@
+@ include m2c_setup_node.m2i@
+@ if $m2c_report_progress == 1@
+@ print | | +-> Processing index $node@
+@ end@
+@ include details-node.m2i@
+/**
+ * check validity of ${node} index portion
+ *
+ * @retval MFD_SUCCESS : the incoming value is legal
+ * @retval MFD_ERROR : the incoming value is NOT legal
+ *
+ * @note this is not the place to do any checks for the sanity
+ * of multiple indexes. Those types of checks should be done in the
+ * ${context}_validate_index() function.
+ *
+ * @note Also keep in mind that if the index refers to a row in this or
+ * some other table, you can't check for that row here to make
+ * decisions, since that row might not be created yet, but may
+ * be created during the processing this request. If you have
+ * such checks, they should be done in the check_dependencies
+ * function, because any new/deleted/changed rows should be
+ * available then.
+ *
+ * The following checks have already been done for you:
+@if $node.enums == 1@
+ * The value is one of $m2c_evals
+@elsif $node.ranges == 1@
+@ if ("$node.decl" eq "long") || ("$node.decl" eq "u_long")@
+@ eval $m2c_tmp_ns = "value"@
+@ else@
+@ eval $m2c_tmp_ns = "length"@
+@ end@
+ * The $m2c_tmp_ns is in (one of) the range set(s): $m2c_evals
+@end@
+ *
+ * If there a no other checks you need to do, simply return MFD_SUCCESS.
+ */
+int
+${node}_check_index( ${context}_rowreq_ctx *rowreq_ctx )
+{
+ DEBUGMSGTL(("verbose:${context}:${node}_check_index","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * TODO:426:M: |-> Check $context index $node.
+ * check that index value in the table context is legal.
+ * (rowreq_ctx->tbl_index.$node)
+ */
+
+ return MFD_SUCCESS; /* $node index ok */
+} /* ${node}_check_index */
+
+@ end@ # foreach internalindex
+/**
+ * verify specified index is valid.
+ *
+ * This check is independent of whether or not the values specified for
+ * the columns of the new row are valid. Column values and row consistency
+ * will be checked later. At this point, only the index values should be
+ * checked.
+ *
+ * All of the individual index validation functions have been called, so this
+ * is the place to make sure they are valid as a whole when combined. If
+ * you only have one index, then you probably don't need to do anything else
+ * here.
+ *
+ * @note Keep in mind that if the indexes refer to a row in this or
+ * some other table, you can't check for that row here to make
+ * decisions, since that row might not be created yet, but may
+ * be created during the processing this request. If you have
+ * such checks, they should be done in the check_dependencies
+ * function, because any new/deleted/changed rows should be
+ * available then.
+ *
+ *
+ * @param ${context}_reg
+ * Pointer to the user registration data
+ * @param ${context}_rowreq_ctx
+ * Pointer to the users context.
+ * @retval MFD_SUCCESS : success
+ * @retval MFD_CANNOT_CREATE_NOW : index not valid right now
+ * @retval MFD_CANNOT_CREATE_EVER : index never valid
+ */
+int
+${context}_validate_index( ${context}_registration * ${context}_reg,
+ ${context}_rowreq_ctx *rowreq_ctx)
+{
+ int rc = MFD_SUCCESS;
+
+ DEBUGMSGTL(("verbose:${context}:${context}_validate_index","called\n"));
+
+ /** we should have a non-NULL pointer */
+ netsnmp_assert( NULL != rowreq_ctx );
+
+ /*
+ * TODO:430:M: |-> Validate potential $context index.
+ */
+ if(1) {
+ snmp_log(LOG_WARNING,"invalid index for a new row in the "
+ "${context} table.\n");
+ /*
+ * determine failure type.
+ *
+ * If the index could not ever be created, return MFD_NOT_EVER
+ * If the index can not be created under the present circumstances
+ * (even though it could be created under other circumstances),
+ * return MFD_NOT_NOW.
+ */
+ if(0) {
+ return MFD_CANNOT_CREATE_EVER;
+ }
+ else {
+ return MFD_CANNOT_CREATE_NOW;
+ }
+ }
+
+ return rc;
+} /* ${context}_validate_index */
+
+@ end@ # persistent/row creation
+@end@
+##
+/** @} */
+##//####################################################################
+@if $m2c_mark_boundary == 1@
+/** END code generated by $RCSfile$ $Revision$ */
+@end@
+@eval $m2c_processing_type = "$mfd_data_access_processing_type"@