⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parent-set.m2i

📁 snmp的源代码,已经在我的ubuntu下编译通过
💻 M2I
字号:
#############################################################  -*- c -*-## generic include for XXX. Do not use directly.#### $Id: parent-set.m2i,v 1.24.2.2 2005/01/06 17:26:27 rstory Exp $########################################################################@if $m2c_mark_boundary == 1@/** START code generated by $RCSfile: parent-set.m2i,v $ $Revision: 1.24.2.2 $ */@end@##########################################################################//######################################################################//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@if $m2c_processing_type eq 'h'@@   if $m2c_table_row_creation == 1@int ${context}_validate_index( ${context}_registration_ptr ${context}_reg,                               ${context}_rowreq_ctx *rowreq_ctx);@   end@int ${context}_undo_setup( ${context}_rowreq_ctx *rowreq_ctx);int ${context}_undo_cleanup( ${context}_rowreq_ctx *rowreq_ctx);int ${context}_commit( ${context}_rowreq_ctx *rowreq_ctx);int ${context}_undo_commit( ${context}_rowreq_ctx *rowreq_ctx);@   if $m2c_irreversible_commit == 1@int ${context}_irreversible_commit( ${context}_rowreq_ctx *rowreq_ctx);@   end@@end@ // m2c_processing_type eq 'h'##########################################################################//######################################################################//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@if $m2c_processing_type eq 'c'@#### MASTER COPY OF THIS FLOWCHART IS IN agent/helpers/baby_steps.c##    /*     * NOTE: if you update this chart, please update the versions in     *       local/mib2c-conf.d/parent-set.m2i     *       agent/mibgroup/helpers/baby_steps.c     * while you're at it.     */    /*     ***********************************************************************     * Baby Steps Flow Chart (2004.06.05)                                  *     *                                                                     *     * +--------------+    +================+    U = unconditional path    *     * |optional state|    ||required state||    S = path for success      *     * +--------------+    +================+    E = path for error        *     ***********************************************************************     *     *                        +--------------+     *                        |     pre      |     *                        |   request    |     *                        +--------------+     *                               | U@if $m2c_table_row_creation == 1@     * +-------------+        +==============+     * |    row    |f|<-------||  object    ||     * |  create   |1|      E ||  lookup    ||     * +-------------+        +==============+     *     E |   | S                 | S     *       |   +------------------>|     *       |                +==============+     *       |              E ||   check    ||     *       |<---------------||   values   ||@else@     *                        +==============+     *       +----------------||  object    ||     *       |              E ||  lookup    ||     *       |                +==============+     *       |                       | S     *       |                +==============+     *       |              E ||   check    ||     *       |<---------------||   values   ||@end@ # row creation     *       |                +==============+     *       |                       | S     *       |                +==============+     *       |       +<-------||   undo     ||     *       |       |      E ||   setup    ||     *       |       |        +==============+     *       |       |               | S     *       |       |        +==============+     *       |       |        ||    set     ||-------------------------->+     *       |       |        ||   value    || E                         |     *       |       |        +==============+                           |     *       |       |               | S                                 |     *       |       |        +--------------+                           |     *       |       |        |    check     |-------------------------->|     *       |       |        |  consistency | E                         |     *       |       |        +--------------+                           |     *       |       |               | S                                 |     *       |       |        +==============+         +==============+  |     *       |       |        ||   commit   ||-------->||     undo   ||  |     *       |       |        ||            || E       ||    commit  ||  |     *       |       |        +==============+         +==============+  |     *       |       |               | S                     U |<--------+     *       |       |        +--------------+         +==============+     *       |       |        | irreversible |         ||    undo    ||     *       |       |        |    commit    |         ||     set    ||     *       |       |        +--------------+         +==============+     *       |       |               | U                     U |     *       |       +-------------->|<------------------------+     *       |                +==============+     *       |                ||   undo     ||     *       |                ||  cleanup   ||     *       |                +==============+     *       +---------------------->| U@if $m2c_table_row_creation == 1@     *                               |     *                          (err && f1)------------------->+     *                               |                         |     *                        +--------------+         +--------------+     *                        |    post      |<--------|      row     |     *                        |   request    |       U |    release   |     *                        +--------------+         +--------------+@else@     *                        +--------------+     *                        |    post      |     *                        |   request    |     *                        +--------------+@end@ # row creation     *     */@if $m2c_table_row_creation == 1@/** * 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,  *  * * * @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_ptr ${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@ # row creation##----------------------------------------------------------------------/** * Setup up context with information needed to undo a set request. * * This function will be called before the individual node undo setup * functions are called. If you need to do any undo setup that is not * related to a specific column, you can do it here. *@if $m2c_undo_embed == 0@@   if $m2c_data_init == 1@ * Note that the undo context has been allocated with * ${context}_allocate_data(), but may need extra * initialization similar to what you may have done in * ${context}_rowreq_ctx_init().@   end@@end@ * Note that an individual node's undo_setup function will only be called * if that node is being set to a new value. * * If there is any setup specific to a particular column (e.g. allocating * memory for a string), you should do that setup in the node's undo_setup * function, so it won't be done unless it is necessary. * * @param rowreq_ctx *        Pointer to the table context (${context}_rowreq_ctx) * * @retval MFD_SUCCESS : success * @retval MFD_ERROR   : error. set will fail. */int${context}_undo_setup( ${context}_rowreq_ctx *rowreq_ctx){    int rc = MFD_SUCCESS;    DEBUGMSGTL(("verbose:${context}:${context}_undo_setup","called\n"));    /** we should have a non-NULL pointer */    netsnmp_assert( NULL != rowreq_ctx );    /*     * TODO:451:M: |-> Setup $context undo.     * set up $context undo information, in preparation for a set.     */    return rc;} /* ${context}_undo_setup *//** * Cleanup up context undo information. * * This function will be called after set/commit processing. If you * allocated any resources in undo_setup, this is the place to release * those resources. * * This function is called regardless of the success or failure of the set * request. If you need to perform different steps for cleanup depending * on success or failure, you can add a flag to the rowreq_ctx. * * @param rowreq_ctx *        Pointer to the table context (${context}_rowreq_ctx) * * @retval MFD_SUCCESS : success * @retval MFD_ERROR   : error */int${context}_undo_cleanup( ${context}_rowreq_ctx *rowreq_ctx){    int rc = MFD_SUCCESS;    DEBUGMSGTL(("verbose:${context}:${context}_undo_cleanup","called\n"));    /** we should have a non-NULL pointer */    netsnmp_assert( NULL != rowreq_ctx );    /*     * TODO:452:M: |-> Cleanup $context undo.     */    return rc;} /* ${context}_undo_cleanup */##----------------------------------------------------------------------/** * commit new values. * * At this point, you should have done everything you can to ensure that * this commit will not fail. * * Should you need different behavior depending on which columns were * set, rowreq_ctx->column_set_flags will indicate which writeable columns were * set. The definitions for the FLAG_* bits can be found in@if $m2c_create_fewer_files != 1@ * ${context}_oids.h.@else@ * ${context}.h.@end@ * A new row will have the MFD_ROW_CREATED bit set in rowreq_flags. * * @param ${context}_rowreq_ctx *        Pointer to the users context. * * @retval MFD_SUCCESS : success * @retval MFD_ERROR   : error */int${context}_commit( ${context}_rowreq_ctx *rowreq_ctx){    int rc = MFD_SUCCESS;    int             save_flags;    DEBUGMSGTL(("verbose:${context}:${context}_commit","called\n"));    /** we should have a non-NULL pointer */    netsnmp_assert( NULL != rowreq_ctx );    /*     * save flags, then clear until we actually do something     */    save_flags = rowreq_ctx->column_set_flags;    rowreq_ctx->column_set_flags = 0;    /*     * commit $context data     * 1) check the column's flag in save_flags to see if it was set.     * 2) clear the flag when you handle that column     * 3) set the column's flag in column_set_flags if it needs undo     *    processing in case of a failure.     */##$example_start@   foreach $node nonindex@@      include m2c_setup_node.m2i@@      if $node.settable == 0@@          next@@      end@    if (save_flags & FLAG_$node.uc) {       save_flags &= ~FLAG_$node.uc; /* clear $node */       /*        * TODO:482:o: |-> commit column $node.        */       rc = -1;       if(-1 == rc) {           snmp_log(LOG_ERR,"$context column $node commit failed\n");       }       else {            /*             * set flag, in case we need to undo $node             */            rowreq_ctx->column_set_flags |= FLAG_$node.uc;       }    }@   end@ # foreach $node    if (save_flags) {       snmp_log(LOG_ERR, "unhandled columns (0x%x) in commit\n", save_flags);       return MFD_ERROR;    }##$example_end    return rc;} /* ${context}_commit *//** * undo commit new values. * * Should you need different behavior depending on which columns were * set, rowreq_ctx->column_set_flags will indicate which writeable columns were * set. The definitions for the FLAG_* bits can be found in@if $m2c_create_fewer_files != 1@ * ${context}_oids.h.@else@ * ${context}.h.@end@ * A new row will have the MFD_ROW_CREATED bit set in rowreq_flags. * * @param ${context}_rowreq_ctx *        Pointer to the users context. * * @retval MFD_SUCCESS : success * @retval MFD_ERROR   : error */int${context}_undo_commit( ${context}_rowreq_ctx *rowreq_ctx){    int rc = MFD_SUCCESS;    DEBUGMSGTL(("verbose:${context}:${context}_undo_commit","called\n"));    /** we should have a non-NULL pointer */    netsnmp_assert( NULL != rowreq_ctx );    /*     * TODO:485:M: |-> Undo $context commit.     * check the column's flag in rowreq_ctx->column_set_flags to see     * if it was set during commit, then undo it.     *     * eg: if (rowreq_ctx->column_set_flags & FLAG_$node.uc) {}     */##$example_start##$example_end    return rc;} /* ${context}_undo_commit */@if $m2c_irreversible_commit == 1@##----------------------------------------------------------------------/** * perform commit actions that are not reversible * * THERE IS NO ATTEMPT AT RECOVERY FOR ERRORS FROM THIS STATE! * * @param ${context}_rowreq_ctx *        Pointer to the users context. * * @retval MFD_SUCCESS : success * @retval MFD_ERROR   : other error */int${context}_irreversible_commit( ${context}_rowreq_ctx *rowreq_ctx){    int rc;    DEBUGMSGTL(("verbose:${context}:${context}_irreversible_commit","called\n"));    /** we should have a non-NULL pointer */    netsnmp_assert( NULL != rowreq_ctx );    /*     * TODO:495:o: Irreversible $context commit.     */##$example_start##$example_end    return MFD_SUCCESS;} /* ${context}_irreversible_commit */@end@ // irreversable commit##########################################################################@end@ // m2c_processing_type eq 'c'########################################################################@if $m2c_mark_boundary == 1@/** END code generated by $RCSfile: parent-set.m2i,v $ $Revision: 1.24.2.2 $ */@end@

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -