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

📄 netsnmphoststable.c

📁 snmp的源代码,已经在我的ubuntu下编译通过
💻 C
📖 第 1 页 / 共 2 页
字号:
                break;            case COLUMN_NETSNMPHOSTADDRESS:                {                    char           *retval;                    size_t          retval_len = 0;                    struct undoInfo *ui = NULL;                    int             ret;                    /** first, get the old value */                    retval =                        get_netSnmpHostAddress(ci->data_context,                                               &retval_len);                    if (retval) {                        ui = SNMP_MALLOC_STRUCT(undoInfo);                        ui->len = retval_len;                        memdup((u_char **) & ui->ptr,                               (u_char *) retval, ui->len);                    }                    /** check the new value, possibly against the                        older value for a valid state transition */                    ret =                        check_netSnmpHostAddress(request->requestvb->type,                                                 (char *) request->                                                 requestvb->val.string,                                                 request->requestvb->                                                 val_len, retval,                                                 retval_len);                    if (ret != 0) {                        netsnmp_set_request_error(reqinfo, request, ret);                        netSnmpHostsTable_free_undoInfo(ui);                    } else if (ui) {                        /** remember information for undo purposes later */                        netsnmp_oid_stash_add_data(&undoStorage,                                                   suffix, suffix_len, ui);                    }                }                break;            case COLUMN_NETSNMPHOSTSTORAGE:                {                    long           *retval;                    size_t          retval_len = 0;                    struct undoInfo *ui = NULL;                    int             ret;                    /** first, get the old value */                    retval =                        get_netSnmpHostStorage(ci->data_context,                                               &retval_len);                    if (retval) {                        ui = SNMP_MALLOC_STRUCT(undoInfo);                        ui->len = retval_len;                        memdup((u_char **) & ui->ptr,                               (u_char *) retval, ui->len);                    }                    /** check the new value, possibly against the                        older value for a valid state transition */                    ret =                        check_netSnmpHostStorage(request->requestvb->type,                                                 (long *) request->                                                 requestvb->val.string,                                                 request->requestvb->                                                 val_len, retval,                                                 retval_len);                    if (ret != 0) {                        netsnmp_set_request_error(reqinfo, request, ret);                        netSnmpHostsTable_free_undoInfo(ui);                    } else if (ui) {                        /** remember information for undo purposes later */                        netsnmp_oid_stash_add_data(&undoStorage,                                                   suffix, suffix_len, ui);                    }                }                break;            case COLUMN_NETSNMPHOSTROWSTATUS:                {                    long           *retval;                    size_t          retval_len = 0;                    struct undoInfo *ui = NULL;                    int             ret;                    /** first, get the old value */                    retval =                        get_netSnmpHostRowStatus(ci->data_context,                                                 &retval_len);                    if (retval) {                        ui = SNMP_MALLOC_STRUCT(undoInfo);                        ui->len = retval_len;                        memdup((u_char **) & ui->ptr,                               (u_char *) retval, ui->len);                    }                    /** check the new value, possibly against the                        older value for a valid state transition */                    ret =                        check_netSnmpHostRowStatus(request->requestvb->                                                   type,                                                   (long *) request->                                                   requestvb->val.string,                                                   request->requestvb->                                                   val_len, retval,                                                   retval_len);                    if (ret != 0) {                        netsnmp_set_request_error(reqinfo, request, ret);                        netSnmpHostsTable_free_undoInfo(ui);                    } else if (ui) {                        /** remember information for undo purposes later */                        netsnmp_oid_stash_add_data(&undoStorage,                                                   suffix, suffix_len, ui);                    }                }                break;            default:                netsnmp_set_request_error(reqinfo, request,                                          SNMP_ERR_NOTWRITABLE);                break;            }            break;        case MODE_SET_ACTION:            /** save a variable copy */            switch (table_info->colnum) {            case COLUMN_NETSNMPHOSTADDRESSTYPE:                {                    int             ret;                    ret = set_netSnmpHostAddressType(ci->data_context,                                                     (long *) request->                                                     requestvb->val.string,                                                     request->requestvb->                                                     val_len);                    if (ret) {                        netsnmp_set_request_error(reqinfo, request, ret);                    }                }                break;            case COLUMN_NETSNMPHOSTADDRESS:                {                    int             ret;                    ret = set_netSnmpHostAddress(ci->data_context,                                                 (char *) request->                                                 requestvb->val.string,                                                 request->requestvb->                                                 val_len);                    if (ret) {                        netsnmp_set_request_error(reqinfo, request, ret);                    }                }                break;            case COLUMN_NETSNMPHOSTSTORAGE:                {                    int             ret;                    ret = set_netSnmpHostStorage(ci->data_context,                                                 (long *) request->                                                 requestvb->val.string,                                                 request->requestvb->                                                 val_len);                    if (ret) {                        netsnmp_set_request_error(reqinfo, request, ret);                    }                }                break;            case COLUMN_NETSNMPHOSTROWSTATUS:                {                    int             ret;                    ret = set_netSnmpHostRowStatus(ci->data_context,                                                   (long *) request->                                                   requestvb->val.string,                                                   request->requestvb->                                                   val_len);                    if (ret) {                        netsnmp_set_request_error(reqinfo, request, ret);                    }                    if (*request->requestvb->val.integer == RS_DESTROY) {                        ci->new_row = -1;                    }                }                break;            }            break;        case MODE_SET_COMMIT:            if (!ci->have_committed) {                    /** do this once per row only */                netSnmpHostsTable_commit_row(&ci->data_context,                                             ci->new_row);                ci->have_committed = 1;            }            break;        case MODE_SET_UNDO:             /** save a variable copy */            switch (table_info->colnum) {            case COLUMN_NETSNMPHOSTADDRESSTYPE:                {                    int             retval;                    struct undoInfo *ui;                    ui = netsnmp_oid_stash_get_data(undoStorage,                                                    suffix, suffix_len);                    retval =                        set_netSnmpHostAddressType(ci->data_context,                                                   ui->ptr, ui->len);                    if (retval) {                        netsnmp_set_request_error(reqinfo, request,                                                  SNMP_ERR_UNDOFAILED);                    }                }                break;            case COLUMN_NETSNMPHOSTADDRESS:                {                    int             retval;                    struct undoInfo *ui;                    ui = netsnmp_oid_stash_get_data(undoStorage,                                                    suffix, suffix_len);                    retval =                        set_netSnmpHostAddress(ci->data_context, ui->ptr,                                               ui->len);                    if (retval) {                        netsnmp_set_request_error(reqinfo, request,                                                  SNMP_ERR_UNDOFAILED);                    }                }                break;            case COLUMN_NETSNMPHOSTSTORAGE:                {                    int             retval;                    struct undoInfo *ui;                    ui = netsnmp_oid_stash_get_data(undoStorage,                                                    suffix, suffix_len);                    retval =                        set_netSnmpHostStorage(ci->data_context, ui->ptr,                                               ui->len);                    if (retval) {                        netsnmp_set_request_error(reqinfo, request,                                                  SNMP_ERR_UNDOFAILED);                    }                }                break;            case COLUMN_NETSNMPHOSTROWSTATUS:                {                    int             retval;                    struct undoInfo *ui;                    ui = netsnmp_oid_stash_get_data(undoStorage,                                                    suffix, suffix_len);                    retval =                        set_netSnmpHostRowStatus(ci->data_context, ui->ptr,                                                 ui->len);                    if (retval) {                        netsnmp_set_request_error(reqinfo, request,                                                  SNMP_ERR_UNDOFAILED);                    }                }                break;            }            break;        case MODE_SET_FREE:            break;        default:            snmp_log(LOG_ERR,                     "problem encountered in netSnmpHostsTable_handler: unsupported mode\n");        }    }    /** clean up after all requset processing has ended */    switch (reqinfo->mode) {    case MODE_SET_UNDO:    case MODE_SET_FREE:    case MODE_SET_COMMIT:        /** clear out the undo cache */        netsnmp_oid_stash_free(&undoStorage,                               netSnmpHostsTable_free_undoInfo);        netsnmp_oid_stash_free(&commitStorage, netsnmp_oid_stash_no_free);    }    return SNMP_ERR_NOERROR;}

⌨️ 快捷键说明

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