📄 expexpressiontable.c
字号:
&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 + -