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

📄 inetcidrroutetable.c

📁 开发snmp的开发包有两个开放的SNMP开发库
💻 C
📖 第 1 页 / 共 5 页
字号:
 *        Pointer to storage for a long variable * * @retval MFD_SUCCESS         : success * @retval MFD_SKIP            : skip this node (no value for now) * @retval MFD_ERROR           : Any other error */intinetCidrRouteMetric5_get(inetCidrRouteTable_rowreq_ctx * rowreq_ctx,                         long *inetCidrRouteMetric5_val_ptr){   /** we should have a non-NULL pointer */    netsnmp_assert(NULL != inetCidrRouteMetric5_val_ptr);    DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteMetric5_get",                "called\n"));    netsnmp_assert(NULL != rowreq_ctx);    /*     * TODO:231:o: |-> Extract the current value of the inetCidrRouteMetric5 data->     * copy (* inetCidrRouteMetric5_val_ptr ) from rowreq_ctx->data     */    /*     * TODO:235:M: |-> Remove log message/SKIP once you've set inetCidrRouteMetric5 data     */    (*inetCidrRouteMetric5_val_ptr) = rowreq_ctx->data->rt_metric5;    return MFD_SUCCESS;}                               /* inetCidrRouteMetric5_get *//*--------------------------------------------------------------------- * IP-FORWARD-MIB::inetCidrRouteEntry.inetCidrRouteStatus * inetCidrRouteStatus is subid 17 of inetCidrRouteEntry. * Its status is Current, and its access level is Create. * OID: .1.3.6.1.2.1.4.24.7.1.17 * Description:The row status variable, used according to row                  installation and removal conventions.                 A row entry cannot be modified when the status is                 marked as active(1). * * Attributes: *   accessible 1     isscalar 0     enums  1      hasdefval 0 *   readable   1     iscolumn 1     ranges 0      hashint   0 *   settable   1 * * Enum range: 3/8. Values:  active(1), notInService(2), notReady(3), createAndGo(4), createAndWait(5), destroy(6) * * Its syntax is RowStatus (based on perltype INTEGER) * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long) *//** * Extract the current value of the inetCidrRouteStatus data-> * * Set a value using the data context for the row. * * @param rowreq_ctx *        Pointer to the row request context. * @param inetCidrRouteStatus_val_ptr *        Pointer to storage for a long variable * * @retval MFD_SUCCESS         : success * @retval MFD_SKIP            : skip this node (no value for now) * @retval MFD_ERROR           : Any other error */intinetCidrRouteStatus_get(inetCidrRouteTable_rowreq_ctx * rowreq_ctx,                        u_long * inetCidrRouteStatus_val_ptr){   /** we should have a non-NULL pointer */    netsnmp_assert(NULL != inetCidrRouteStatus_val_ptr);    /** WARNING: this code might not work for netsnmp_route_entry */    (*inetCidrRouteStatus_val_ptr) = rowreq_ctx->row_status;    return MFD_SUCCESS;}                               /* inetCidrRouteStatus_get *//** @} *//********************************************************************** ********************************************************************** *** *** Table inetCidrRouteTable *** ********************************************************************** **********************************************************************//* * IP-FORWARD-MIB::inetCidrRouteTable is subid 7 of ipForward. * Its status is Current. * OID: .1.3.6.1.2.1.4.24.7, length: 9 */    /*     * 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     * +-------------+        +==============+     * |    row    |f|<-------||  object    ||     * |  create   |1|      E ||  lookup    ||     * +-------------+        +==============+     *     E |   | S                 | S     *       |   +------------------>|     *       |                +==============+     *       |              E ||   check    ||     *       |<---------------||   values   ||     *       |                +==============+     *       |                       | 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     *                               |     *                          (err && f1)------------------->+     *                               |                         |     *                        +--------------+         +--------------+     *                        |    post      |<--------|      row     |     *                        |   request    |       U |    release   |     *                        +--------------+         +--------------+     *     *//** * 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. * * Note that the undo context has been allocated with * inetCidrRouteTable_allocate_data(), but may need extra * initialization similar to what you may have done in * inetCidrRouteTable_rowreq_ctx_init(). * 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 (inetCidrRouteTable_rowreq_ctx) * * @retval MFD_SUCCESS : success * @retval MFD_ERROR   : error. set will fail. */intinetCidrRouteTable_undo_setup(inetCidrRouteTable_rowreq_ctx * rowreq_ctx){    int             rc = MFD_SUCCESS;    DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteTable_undo_setup",                "called\n"));    /** we should have a non-NULL pointer */    netsnmp_assert(NULL != rowreq_ctx);    /*     * TODO:451:M: |-> Setup inetCidrRouteTable undo.     * set up inetCidrRouteTable undo information, in preparation for a set.     * Undo storage is in (* inetCidrRouteStatus_val_ptr )*     */    rowreq_ctx->row_status_undo = rowreq_ctx->row_status;    rc = netsnmp_access_route_entry_copy(rowreq_ctx->undo,                                         rowreq_ctx->data);    return rc;}                               /* inetCidrRouteTable_undo_setup *//** * Undo a set request. * * This function will be called before the individual node undo * functions are called. If you need to do any undo that is not * related to a specific column, you can do it here. * * Note that an individual node's undo function will only be called * if that node is being set to a new value. * * If there is anything  specific to a particular column (e.g. releasing * memory for a string), you should do that setup in the node's undo * function, so it won't be done unless it is necessary. * * @param rowreq_ctx *        Pointer to the table context (inetCidrRouteTable_rowreq_ctx) * * @retval MFD_SUCCESS : success * @retval MFD_ERROR   : error. set will fail. */intinetCidrRouteTable_undo(inetCidrRouteTable_rowreq_ctx * rowreq_ctx){    int             rc = MFD_SUCCESS;    DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteTable_undo",                "called\n"));    /** we should have a non-NULL pointer */    netsnmp_assert(NULL != rowreq_ctx);    /*     * TODO:451:M: |-> inetCidrRouteTable undo.     * inetCidrRouteTable undo information, in response to a failed set.     * Undo storage is in (* inetCidrRouteStatus_val_ptr )*     */    rowreq_ctx->row_status = rowreq_ctx->row_status_undo;    rc = netsnmp_access_route_entry_copy(rowreq_ctx->data,                                         rowreq_ctx->undo);    return rc;}                               /* inetCidrRouteTable_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 (inetCidrRouteTable_rowreq_ctx) * * @retval MFD_SUCCESS : success * @retval MFD_ERROR   : error */intinetCidrRouteTable_undo_cleanup(inetCidrRouteTable_rowreq_ctx * rowreq_ctx){    int             rc = MFD_SUCCESS;    DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteTable_undo_cleanup", "called\n"));    /** we should have a non-NULL pointer */    netsnmp_assert(NULL != rowreq_ctx);    /*     * TODO:452:M: |-> Cleanup inetCidrRouteTable undo.     * Undo storage is in (* inetCidrRouteStatus_val_ptr )*     */    return rc;}                               /* inetCidrRouteTable_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 COLUMN_*_FLAG bits can be found in * inetCidrRouteTable.h. * A new row will have the MFD_ROW_CREATED bit set in rowreq_flags. * * @param rowreq_ctx *        Pointer to the users context. * * @retval MFD_SUCCESS : success * @retval MFD_ERROR   : error */intinetCidrRouteTable_commit(inetCidrRouteTable_rowreq_ctx * rowreq_ctx){    int             rc = MFD_SUCCESS;    int             save_flags;    DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteTable_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 inetCidrRouteTable 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.     */    /*     * did anything change?     */    if (0 == save_flags) {        DEBUGMSGTL(("ipAddressTable:ipAddressTable_commit",                    "no change\n"));        return MFD_SUCCESS;    }    /*     * pass everything to data access     */    if (save_flags & COLUMN_INETCIDRROUTESTATUS_FLAG) {        if (rowreq_ctx->rowreq_flags & MFD_ROW_CREATED) {            if (ROWSTATUS_DESTROY == rowreq_ctx->row_status) {                rowreq_ctx->rowreq_flags |= MFD_ROW_DELETED;                return MFD_SUCCESS;            }            netsnmp_assert(ROWSTATUS_ACTIVE == rowreq_ctx->row_status);            rowreq_ctx->data->flags |= NETSNMP_ACCESS_ROUTE_CREATE;        } else if (ROWSTATUS_DESTROY == rowreq_ctx->row_status) {            rowreq_ctx->data->flags |= NETSNMP_ACCESS_ROUTE_DELETE;        } else            rowreq_ctx->data->flags |= NETSNMP_ACCESS_ROUTE_CHANGE;    } else        rowreq_ctx->data->flags |= NETSNMP_ACCESS_ROUTE_CHANGE;    /*     * do it     * let data access know what columns are set     */    rowreq_ctx->data->flags |=        (save_flags & NETSNMP_ACCESS_ROUTE_RESERVED_BITS);

⌨️ 快捷键说明

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