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

📄 expexpressiontable.c

📁 snmp的源代码,已经在我的ubuntu下编译通过
💻 C
📖 第 1 页 / 共 3 页
字号:
                                           &StorageTmp->pdu_securityLevel,                                           &tmpint);                cptr =                    read_config_store_data(ASN_OBJECT_ID, cptr,                                           (void *) (&StorageTmp->                                                     pdu_tDomain),                                           &StorageTmp->pdu_tDomainLen);                cptr =                    read_config_store_data(ASN_OCTET_STR, cptr,                                           &StorageTmp->pdu_transport,                                           &StorageTmp->pdu_transportLen);                cptr =                    read_config_store_data(ASN_OCTET_STR, cptr,                                           &StorageTmp->pdu_community,                                           &StorageTmp->pdu_community_len);                cptr =                    read_config_store_data(ASN_OCTET_STR, cptr,                                           &StorageTmp->pdu_securityName,                                           &StorageTmp->                                           pdu_securityNameLen);            }            snmpd_store_config(line);        }    }    DEBUGMSGTL(("expExpressionTable", "storage done.\n"));    return SNMPERR_SUCCESS;}/* * var_expExpressionTable(): *   Handle this table separately from the scalar value case. *   The workings of this are basically the same as for var_expExpressionTable above. */unsigned char  *var_expExpressionTable(struct variable *vp,                       oid * name,                       size_t *length,                       int exact,                       size_t *var_len, WriteMethod ** write_method){    struct expExpressionTable_data *StorageTmp = NULL;    DEBUGMSGTL(("expExpressionTable",                "var_expExpressionTable: Entering...  \n"));    /*     * this assumes you have registered all your data properly     */    if ((StorageTmp =         header_complex(expExpressionTableStorage, vp, name, length, exact,                        var_len, write_method)) == NULL) {        if (vp->magic == EXPEXPRESSIONENTRYSTATUS)            *write_method = write_expExpressionEntryStatus;        return NULL;    }    switch (vp->magic) {    case EXPEXPRESSION:        *write_method = write_expExpression;        *var_len = StorageTmp->expExpressionLen;        return (u_char *) StorageTmp->expExpression;    case EXPEXPRESSIONVALUETYPE:        *write_method = write_expExpressionValueType;        *var_len = sizeof(StorageTmp->expExpressionValueType);        return (u_char *) & StorageTmp->expExpressionValueType;    case EXPEXPRESSIONCOMMENT:        *write_method = write_expExpressionComment;        *var_len = StorageTmp->expExpressionCommentLen;        return (u_char *) StorageTmp->expExpressionComment;    case EXPEXPRESSIONDELTALNTERVAL:        *write_method = write_expExpressionDeltaInterval;        *var_len = sizeof(StorageTmp->expExpressionDeltaInterval);        return (u_char *) & StorageTmp->expExpressionDeltaInterval;    case EXPEXPRESSIONPREFIX:        *var_len = StorageTmp->expExpressionPrefixLen * sizeof(oid);        return (u_char *) StorageTmp->expExpressionPrefix;    case EXPEXPRESSIONERRORS:        *var_len = sizeof(StorageTmp->expExpressionErrors);        return (u_char *) & StorageTmp->expExpressionErrors;    case EXPEXPRESSIONENTRYSTATUS:        *write_method = write_expExpressionEntryStatus;        *var_len = sizeof(StorageTmp->expExpressionEntryStatus);        return (u_char *) & StorageTmp->expExpressionEntryStatus;    default:        ERROR_MSG("");    }    return NULL;}intwrite_expExpression(int action,                    u_char * var_val,                    u_char var_val_type,                    size_t var_val_len,                    u_char * statP, oid * name, size_t name_len){    static char    *tmpvar;    struct expExpressionTable_data *StorageTmp = NULL;    static size_t   tmplen;    size_t          newlen =        name_len -        (sizeof(expExpressionTable_variables_oid) / sizeof(oid) + 3 - 1);    DEBUGMSGTL(("expExpressionTable",                "write_expExpression entering action=%d...  \n", action));    if ((StorageTmp =         header_complex(expExpressionTableStorage, NULL,                        &name[sizeof(expExpressionTable_variables_oid) /                              sizeof(oid) + 3 - 1], &newlen, 1, NULL,                        NULL)) == NULL)        return SNMP_ERR_NOSUCHNAME;     /* remove if you support creation here */    switch (action) {    case RESERVE1:        if (var_val_type != ASN_OCTET_STR) {            snmp_log(LOG_ERR,                     "write to expExpression not ASN_OCTET_STR\n");            return SNMP_ERR_WRONGTYPE;        }        if (StorageTmp->storageType != ST_NONVOLATILE)            return SNMP_ERR_NOTWRITABLE;        break;    case RESERVE2:        /*         * memory reseveration, final preparation...          */        break;    case FREE:        /*         * Release any resources that have been allocated          */        break;    case ACTION:        /*         * The variable has been stored in string for         * you to use, and you have just been asked to do something with         * it.  Note that anything done here must be reversable in the UNDO case          */        tmpvar = StorageTmp->expExpression;        tmplen = StorageTmp->expExpressionLen;        memdup((u_char **) & StorageTmp->expExpression, var_val,               var_val_len);        StorageTmp->expExpressionLen = var_val_len;        break;    case UNDO:        /*         * Back out any changes made in the ACTION case          */        SNMP_FREE(StorageTmp->expExpression);        StorageTmp->expExpression = tmpvar;        StorageTmp->expExpressionLen = tmplen;        break;    case COMMIT:        /*         * Things are working well, so it's now safe to make the change         * permanently.  Make sure that anything done here can't fail!          */        SNMP_FREE(tmpvar);        break;    }    return SNMP_ERR_NOERROR;}intwrite_expExpressionValueType(int action,                             u_char * var_val,                             u_char var_val_type,                             size_t var_val_len,                             u_char * statP, oid * name, size_t name_len){    static int      tmpvar;    struct expExpressionTable_data *StorageTmp = NULL;    size_t          newlen =        name_len -        (sizeof(expExpressionTable_variables_oid) / sizeof(oid) + 3 - 1);    DEBUGMSGTL(("expExpressionTable",                "write_expExpressionValueType entering action=%d...  \n",                action));    if ((StorageTmp =         header_complex(expExpressionTableStorage, NULL,                        &name[sizeof(expExpressionTable_variables_oid) /                              sizeof(oid) + 3 - 1], &newlen, 1, NULL,                        NULL)) == NULL)        return SNMP_ERR_NOSUCHNAME;     /* remove if you support creation here */    switch (action) {    case RESERVE1:        if (var_val_type != ASN_INTEGER) {            snmp_log(LOG_ERR,                     "write to expExpressionValueType not ASN_INTEGER\n");            return SNMP_ERR_WRONGTYPE;        }        if (StorageTmp->storageType != ST_NONVOLATILE)            return SNMP_ERR_NOTWRITABLE;        break;    case RESERVE2:        /*         * memory reseveration, final preparation...          */        break;    case FREE:        /*         * Release any resources that have been allocated          */        break;    case ACTION:        /*         * The variable has been stored in string for         * you to use, and you have just been asked to do something with         * it.  Note that anything done here must be reversable in the UNDO case          */        tmpvar = StorageTmp->expExpressionValueType;        StorageTmp->expExpressionValueType = *((long *) var_val);        break;    case UNDO:        /*         * Back out any changes made in the ACTION case          */        StorageTmp->expExpressionValueType = tmpvar;        break;    case COMMIT:        /*         * Things are working well, so it's now safe to make the change         * permanently.  Make sure that anything done here can't fail!          */        break;    }    return SNMP_ERR_NOERROR;}intwrite_expExpressionComment(int action,                           u_char * var_val,                           u_char var_val_type,                           size_t var_val_len,                           u_char * statP, oid * name, size_t name_len){    static char    *tmpvar;    struct expExpressionTable_data *StorageTmp = NULL;    static size_t   tmplen;    size_t          newlen =        name_len -        (sizeof(expExpressionTable_variables_oid) / sizeof(oid) + 3 - 1);    DEBUGMSGTL(("expExpressionTable",                "write_expExpression entering action=%d...  \n", action));    if ((StorageTmp =         header_complex(expExpressionTableStorage, NULL,                        &name[sizeof(expExpressionTable_variables_oid) /                              sizeof(oid) + 3 - 1], &newlen, 1, NULL,                        NULL)) == NULL)        return SNMP_ERR_NOSUCHNAME;     /* remove if you support creation here */    switch (action) {    case RESERVE1:        if (var_val_type != ASN_OCTET_STR) {            snmp_log(LOG_ERR,                     "write to expExpressionComment not ASN_OCTET_STR\n");            return SNMP_ERR_WRONGTYPE;        }        if (StorageTmp->storageType != ST_NONVOLATILE)            return SNMP_ERR_NOTWRITABLE;        break;    case RESERVE2:        /*         * memory reseveration, final preparation...          */        break;    case FREE:        /*         * Release any resources that have been allocated          */        break;    case ACTION:        /*         * The variable has been stored in string for         * you to use, and you have just been asked to do something with         * it.  Note that anything done here must be reversable in the UNDO case          */        tmpvar = StorageTmp->expExpressionComment;        tmplen = StorageTmp->expExpressionCommentLen;        memdup((u_char **) & StorageTmp->expExpressionComment, var_val,               var_val_len);        StorageTmp->expExpressionCommentLen = var_val_len;        break;    case UNDO:        /*         * Back out any changes made in the ACTION case          */        SNMP_FREE(StorageTmp->expExpressionComment);        StorageTmp->expExpressionComment = tmpvar;        StorageTmp->expExpressionCommentLen = tmplen;        break;    case COMMIT:        /*         * Things are working well, so it's now safe to make the change         * permanently.  Make sure that anything done here can't fail!          */        SNMP_FREE(tmpvar);        break;    }    return SNMP_ERR_NOERROR;}intwrite_expExpressionDeltaInterval(int action,                                 u_char * var_val,                                 u_char var_val_type,                                 size_t var_val_len,                                 u_char * statP, oid * name,                                 size_t name_len){    static int      tmpvar;    struct expExpressionTable_data *StorageTmp = NULL;    size_t          newlen =        name_len -        (sizeof(expExpressionTable_variables_oid) / sizeof(oid) + 3 - 1);    DEBUGMSGTL(("expExpressionTable",                "write_expExpressionValueType entering action=%d...  \n",                action));    if ((StorageTmp =

⌨️ 快捷键说明

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