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

📄 mtetriggerthresholdtable.c

📁 开发snmp的开发包有两个开放的SNMP开发库
💻 C
📖 第 1 页 / 共 2 页
字号:
             * But SET requests that include an assignment of the             *   'threshold(2)' bit at the same time are valid, so would             *    need to be accepted. Unfortunately, this assignment             *   is only applied in the COMMIT pass, so it's difficult             *   to detect whether this holds or not.             *             * Let's fudge things for now, by processing assignments             *   even if the 'threshold(2)' bit isn't set.             */            switch (tinfo->colnum) {            case COLUMN_MTETRIGGERTHRESHOLDSTARTUP:                ret = netsnmp_check_vb_int_range(request->requestvb,                                                 MTE_THRESH_START_RISE,                                                 MTE_THRESH_START_RISEFALL );                if (ret != SNMP_ERR_NOERROR) {                    netsnmp_set_request_error(reqinfo, request, ret);                    return SNMP_ERR_NOERROR;                }                break;            case COLUMN_MTETRIGGERTHRESHOLDRISING:            case COLUMN_MTETRIGGERTHRESHOLDFALLING:            case COLUMN_MTETRIGGERTHRESHOLDDELTARISING:            case COLUMN_MTETRIGGERTHRESHOLDDELTAFALLING:                ret = netsnmp_check_vb_int(request->requestvb);                if (ret != SNMP_ERR_NOERROR) {                    netsnmp_set_request_error(reqinfo, request, ret);                    return SNMP_ERR_NOERROR;                }                break;            case COLUMN_MTETRIGGERTHRESHOLDOBJECTSOWNER:            case COLUMN_MTETRIGGERTHRESHOLDOBJECTS:            case COLUMN_MTETRIGGERTHRESHOLDRISINGEVENTOWNER:            case COLUMN_MTETRIGGERTHRESHOLDRISINGEVENT:            case COLUMN_MTETRIGGERTHRESHOLDFALLINGEVENTOWNER:            case COLUMN_MTETRIGGERTHRESHOLDFALLINGEVENT:            case COLUMN_MTETRIGGERTHRESHOLDDELTARISINGEVENTOWNER:            case COLUMN_MTETRIGGERTHRESHOLDDELTARISINGEVENT:            case COLUMN_MTETRIGGERTHRESHOLDDELTAFALLINGEVENTOWNER:            case COLUMN_MTETRIGGERTHRESHOLDDELTAFALLINGEVENT:                ret = netsnmp_check_vb_type_and_max_size(                          request->requestvb, ASN_OCTET_STR, MTE_STR1_LEN);                if (ret != SNMP_ERR_NOERROR) {                    netsnmp_set_request_error(reqinfo, request, ret);                    return SNMP_ERR_NOERROR;                }                break;            default:                netsnmp_set_request_error(reqinfo, request,                                          SNMP_ERR_NOTWRITABLE);                return SNMP_ERR_NOERROR;            }            /*             * The Event MIB is somewhat ambiguous as to whether the             *  various trigger table entries can be modified once the             *  main mteTriggerTable entry has been marked 'active'.              * But it's clear from discussion on the DisMan mailing             *  list is that the intention is not.             *             * So check for whether this row is already active,             *  and reject *all* SET requests if it is.             */            entry = (struct mteTrigger *) netsnmp_tdata_extract_entry(request);            if (entry &&                entry->flags & MTE_TRIGGER_FLAG_ACTIVE ) {                netsnmp_set_request_error(reqinfo, request,                                          SNMP_ERR_INCONSISTENTVALUE);                return SNMP_ERR_NOERROR;            }        }        break;    case MODE_SET_RESERVE2:    case MODE_SET_FREE:    case MODE_SET_UNDO:        break;    case MODE_SET_ACTION:        for (request = requests; request; request = request->next) {            entry = (struct mteTrigger *) netsnmp_tdata_extract_entry(request);            if (!entry) {                /*                 * New rows must be created via the RowStatus column                 *   (in the main mteTriggerTable)                 */                netsnmp_set_request_error(reqinfo, request,                                          SNMP_ERR_NOCREATION);                                      /* or inconsistentName? */                return SNMP_ERR_NOERROR;            }        }        break;    case MODE_SET_COMMIT:        /*         * All these assignments are "unfailable", so it's         *  (reasonably) safe to apply them in the Commit phase         */        for (request = requests; request; request = request->next) {            entry = (struct mteTrigger *) netsnmp_tdata_extract_entry(request);            tinfo = netsnmp_extract_table_info(request);            switch (tinfo->colnum) {            case COLUMN_MTETRIGGERTHRESHOLDSTARTUP:                entry->mteTThStartup    = *request->requestvb->val.integer;                break;            case COLUMN_MTETRIGGERTHRESHOLDRISING:                entry->mteTThRiseValue  = *request->requestvb->val.integer;                break;            case COLUMN_MTETRIGGERTHRESHOLDFALLING:                entry->mteTThFallValue  = *request->requestvb->val.integer;                break;            case COLUMN_MTETRIGGERTHRESHOLDDELTARISING:                entry->mteTThDRiseValue = *request->requestvb->val.integer;                break;            case COLUMN_MTETRIGGERTHRESHOLDDELTAFALLING:                entry->mteTThDFallValue = *request->requestvb->val.integer;                break;            case COLUMN_MTETRIGGERTHRESHOLDOBJECTSOWNER:                memset(entry->mteTThObjOwner, 0, sizeof(entry->mteTThObjOwner));                memcpy(entry->mteTThObjOwner, request->requestvb->val.string,                                              request->requestvb->val_len);                break;            case COLUMN_MTETRIGGERTHRESHOLDOBJECTS:                memset(entry->mteTThObjects,  0, sizeof(entry->mteTThObjects));                memcpy(entry->mteTThObjects,  request->requestvb->val.string,                                              request->requestvb->val_len);                break;            case COLUMN_MTETRIGGERTHRESHOLDRISINGEVENTOWNER:                memset(entry->mteTThRiseOwner, 0, sizeof(entry->mteTThRiseOwner));                memcpy(entry->mteTThRiseOwner, request->requestvb->val.string,                                               request->requestvb->val_len);                break;            case COLUMN_MTETRIGGERTHRESHOLDRISINGEVENT:                memset(entry->mteTThRiseEvent, 0, sizeof(entry->mteTThRiseEvent));                memcpy(entry->mteTThRiseEvent, request->requestvb->val.string,                                               request->requestvb->val_len);                break;            case COLUMN_MTETRIGGERTHRESHOLDFALLINGEVENTOWNER:                memset(entry->mteTThFallOwner, 0, sizeof(entry->mteTThFallOwner));                memcpy(entry->mteTThFallOwner, request->requestvb->val.string,                                               request->requestvb->val_len);                break;            case COLUMN_MTETRIGGERTHRESHOLDFALLINGEVENT:                memset(entry->mteTThFallEvent, 0, sizeof(entry->mteTThFallEvent));                memcpy(entry->mteTThFallEvent, request->requestvb->val.string,                                               request->requestvb->val_len);                break;            case COLUMN_MTETRIGGERTHRESHOLDDELTARISINGEVENTOWNER:                memset(entry->mteTThDRiseOwner, 0, sizeof(entry->mteTThDRiseOwner));                memcpy(entry->mteTThDRiseOwner, request->requestvb->val.string,                                                request->requestvb->val_len);                break;            case COLUMN_MTETRIGGERTHRESHOLDDELTARISINGEVENT:                memset(entry->mteTThDRiseEvent, 0, sizeof(entry->mteTThDRiseEvent));                memcpy(entry->mteTThDRiseEvent, request->requestvb->val.string,                                                request->requestvb->val_len);                break;            case COLUMN_MTETRIGGERTHRESHOLDDELTAFALLINGEVENTOWNER:                memset(entry->mteTThDFallOwner, 0, sizeof(entry->mteTThDFallOwner));                memcpy(entry->mteTThDFallOwner, request->requestvb->val.string,                                                request->requestvb->val_len);                break;            case COLUMN_MTETRIGGERTHRESHOLDDELTAFALLINGEVENT:                memset(entry->mteTThDFallEvent, 0, sizeof(entry->mteTThDFallEvent));                memcpy(entry->mteTThDFallEvent, request->requestvb->val.string,                                                request->requestvb->val_len);                break;            }        }        break;    }    return SNMP_ERR_NOERROR;}

⌨️ 快捷键说明

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