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

📄 mtetriggertable.c

📁 开发snmp的开发包有两个开放的SNMP开发库
💻 C
📖 第 1 页 / 共 2 页
字号:
                break;            default:                netsnmp_set_request_error(reqinfo, request,                                          SNMP_ERR_NOTWRITABLE);                return SNMP_ERR_NOERROR;            }            /*             * Once a row has been made active, it cannot be             *   modified except to delete it.  There's no good             *   reason for this, but that's what the MIB says.             *             * The published version of the Event MIB even forbids             *   enabling (or disabling) an active row, which             *   would make this object completely pointless!             * Fortunately this ludicrous decision has since been corrected.             */            if (entry &&                entry->flags & MTE_TRIGGER_FLAG_ACTIVE ) {                /* check for the acceptable assignments */                if ((tinfo->colnum == COLUMN_MTETRIGGERENABLED) ||                    (tinfo->colnum == COLUMN_MTETRIGGERENTRYSTATUS &&                         *request->requestvb->val.integer != RS_NOTINSERVICE))                    continue;                /* Otherwise, reject this request */                netsnmp_set_request_error(reqinfo, request,                                          SNMP_ERR_INCONSISTENTVALUE);                return SNMP_ERR_NOERROR;            }        }        break;    case MODE_SET_RESERVE2:        for (request = requests; request; request = request->next) {            tinfo = netsnmp_extract_table_info(request);            switch (tinfo->colnum) {            case COLUMN_MTETRIGGERENTRYSTATUS:                switch (*request->requestvb->val.integer) {                case RS_CREATEANDGO:                case RS_CREATEANDWAIT:                    /*                     * Create an (empty) new row structure                     */                    memset(mteOwner, 0, sizeof(mteOwner));                    memcpy(mteOwner, tinfo->indexes->val.string,                                     tinfo->indexes->val_len);                    memset(mteTName, 0, sizeof(mteTName));                    memcpy(mteTName,                           tinfo->indexes->next_variable->val.string,                           tinfo->indexes->next_variable->val_len);                    row = mteTrigger_createEntry(mteOwner, mteTName, 0);                    if (!row) {                        netsnmp_set_request_error(reqinfo, request,                                                  SNMP_ERR_RESOURCEUNAVAILABLE);                        return SNMP_ERR_NOERROR;                    }                    netsnmp_insert_tdata_row( request, row );                }            }        }        break;    case MODE_SET_FREE:        for (request = requests; request; request = request->next) {            tinfo = netsnmp_extract_table_info(request);            switch (tinfo->colnum) {            case COLUMN_MTETRIGGERENTRYSTATUS:                switch (*request->requestvb->val.integer) {                case RS_CREATEANDGO:                case RS_CREATEANDWAIT:                    /*                     * Tidy up after a failed row creation request                     */                     entry = (struct mteTrigger *)                                netsnmp_tdata_extract_entry(request);                    if (entry &&                      !(entry->flags & MTE_TRIGGER_FLAG_VALID)) {                        row = (netsnmp_tdata_row *)                                netsnmp_tdata_extract_row(request);                        mteTrigger_removeEntry( row );                    }                }            }        }        break;    case MODE_SET_ACTION:        for (request = requests; request; request = request->next) {            tinfo = netsnmp_extract_table_info(request);            entry = (struct mteTrigger *) netsnmp_tdata_extract_entry(request);            if (!entry) {                /*                 * New rows must be created via the RowStatus column                 */                netsnmp_set_request_error(reqinfo, request,                                          SNMP_ERR_NOCREATION);                                      /* or inconsistentName? */                return SNMP_ERR_NOERROR;            }        }        break;    case MODE_SET_UNDO:        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_MTETRIGGERCOMMENT:                memset(entry->mteTriggerComment, 0,                       sizeof(entry->mteTriggerComment));                memcpy(entry->mteTriggerComment,                       request->requestvb->val.string,                       request->requestvb->val_len);                break;            case COLUMN_MTETRIGGERTEST:                entry->mteTriggerTest = request->requestvb->val.string[0];                break;            case COLUMN_MTETRIGGERSAMPLETYPE:                if (*request->requestvb->val.integer == MTE_SAMPLE_DELTA)                    entry->flags |=  MTE_TRIGGER_FLAG_DELTA;                else                    entry->flags &= ~MTE_TRIGGER_FLAG_DELTA;                break;            case COLUMN_MTETRIGGERVALUEID:                memset(entry->mteTriggerValueID, 0,                       sizeof(entry->mteTriggerValueID));                memcpy(entry->mteTriggerValueID,                       request->requestvb->val.string,                       request->requestvb->val_len);                entry->mteTriggerValueID_len = request->requestvb->val_len/sizeof(oid);                break;            case COLUMN_MTETRIGGERVALUEIDWILDCARD:                if (*request->requestvb->val.integer == TV_TRUE)                    entry->flags |=  MTE_TRIGGER_FLAG_VWILD;                else                    entry->flags &= ~MTE_TRIGGER_FLAG_VWILD;                break;            case COLUMN_MTETRIGGERTARGETTAG:                memset(entry->mteTriggerTarget, 0,                       sizeof(entry->mteTriggerTarget));                memcpy(entry->mteTriggerTarget,                       request->requestvb->val.string,                       request->requestvb->val_len);                break;            case COLUMN_MTETRIGGERCONTEXTNAME:                memset(entry->mteTriggerContext, 0,                       sizeof(entry->mteTriggerContext));                memcpy(entry->mteTriggerContext,                       request->requestvb->val.string,                       request->requestvb->val_len);                break;            case COLUMN_MTETRIGGERCONTEXTNAMEWILDCARD:                if (*request->requestvb->val.integer == TV_TRUE)                    entry->flags |=  MTE_TRIGGER_FLAG_CWILD;                else                    entry->flags &= ~MTE_TRIGGER_FLAG_CWILD;                break;            case COLUMN_MTETRIGGERFREQUENCY:                entry->mteTriggerFrequency = *request->requestvb->val.integer;                break;            case COLUMN_MTETRIGGEROBJECTSOWNER:                memset(entry->mteTriggerOOwner, 0,                       sizeof(entry->mteTriggerOOwner));                memcpy(entry->mteTriggerOOwner,                       request->requestvb->val.string,                       request->requestvb->val_len);                break;            case COLUMN_MTETRIGGEROBJECTS:                memset(entry->mteTriggerObjects, 0,                       sizeof(entry->mteTriggerObjects));                memcpy(entry->mteTriggerObjects,                       request->requestvb->val.string,                       request->requestvb->val_len);                break;            case COLUMN_MTETRIGGERENABLED:                if (*request->requestvb->val.integer == TV_TRUE)                    entry->flags |=  MTE_TRIGGER_FLAG_ENABLED;                else                    entry->flags &= ~MTE_TRIGGER_FLAG_ENABLED;                break;            case COLUMN_MTETRIGGERENTRYSTATUS:                switch (*request->requestvb->val.integer) {                case RS_ACTIVE:                    entry->flags |= MTE_TRIGGER_FLAG_ACTIVE;                    mteTrigger_enable( entry );                    break;                case RS_CREATEANDGO:                    entry->flags |= MTE_TRIGGER_FLAG_ACTIVE;                    entry->flags |= MTE_TRIGGER_FLAG_VALID;                    entry->session =                        netsnmp_iquery_pdu_session(reqinfo->asp->pdu);                    mteTrigger_enable( entry );                    break;                case RS_CREATEANDWAIT:                    entry->flags |= MTE_TRIGGER_FLAG_VALID;                    entry->session =                        netsnmp_iquery_pdu_session(reqinfo->asp->pdu);                    break;                case RS_DESTROY:                    row = (netsnmp_tdata_row *)                               netsnmp_tdata_extract_row(request);                    mteTrigger_removeEntry(row);                }                break;            }        }        break;    }    return SNMP_ERR_NOERROR;}

⌨️ 快捷键说明

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