📄 traceroutectltable.c
字号:
bzero(newoid, sizeof(oid) * MAX_OID_LEN); header_complex_generate_oid(newoid, &newoid_len, NULL, 0, vars); for (hciptr2 = traceRouteResultsTableStorage; hciptr2 != NULL; hciptr2 = hciptr2->next) { if (snmp_oid_compare(newoid, newoid_len, hciptr2->name, newoid_len) == 0) { StorageDel = header_complex_extract_entry (&traceRouteResultsTableStorage, hciptr2); DEBUGMSGTL(("traceRouteResultsTable", "delete success!\n")); } } vars = NULL; return SNMPERR_SUCCESS;}inttraceRouteProbeHistoryTable_del(struct traceRouteCtlTable_data *thedata){ struct header_complex_index *hciptr2 = NULL; struct traceRouteProbeHistoryTable_data *StorageDel = NULL; netsnmp_variable_list *vars = NULL; netsnmp_variable_list *vars_temp = NULL; oid newoid[MAX_OID_LEN]; size_t newoid_len = 0; snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->traceRouteCtlOwnerIndex, thedata->traceRouteCtlOwnerIndexLen); /* traceRouteCtlOwnerIndex */ snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->traceRouteCtlTestName, thedata->traceRouteCtlTestNameLen); /* traceRouteCtlOperationName */ bzero(newoid, sizeof(oid) * MAX_OID_LEN); header_complex_generate_oid(newoid, &newoid_len, NULL, 0, vars); for (hciptr2 = traceRouteProbeHistoryTableStorage; hciptr2 != NULL; hciptr2 = hciptr2->next) { if (snmp_oid_compare(newoid, newoid_len, hciptr2->name, newoid_len) == 0) { StorageDel = header_complex_extract_entry (&traceRouteProbeHistoryTableStorage, hciptr2); DEBUGMSGTL(("traceRouteProbeHistoryTable", "delete success!\n")); } } vars = NULL; return SNMPERR_SUCCESS;}inttraceRouteHopsTable_del(struct traceRouteCtlTable_data *thedata){ struct header_complex_index *hciptr2 = NULL; struct traceRouteHopsTable_data *StorageDel = NULL; netsnmp_variable_list *vars = NULL; netsnmp_variable_list *vars_temp = NULL; oid newoid[MAX_OID_LEN]; size_t newoid_len = 0; snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->traceRouteCtlOwnerIndex, thedata->traceRouteCtlOwnerIndexLen); /* traceRouteCtlOwnerIndex */ snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->traceRouteCtlTestName, thedata->traceRouteCtlTestNameLen); /* traceRouteCtlTestName */ bzero(newoid, sizeof(oid) * MAX_OID_LEN); header_complex_generate_oid(newoid, &newoid_len, NULL, 0, vars); for (hciptr2 = traceRouteHopsTableStorage; hciptr2 != NULL; hciptr2 = hciptr2->next) { if (snmp_oid_compare(newoid, newoid_len, hciptr2->name, newoid_len) == 0) { StorageDel = header_complex_extract_entry(&traceRouteHopsTableStorage, hciptr2); DEBUGMSGTL(("traceRouteHopsTable", "delete success!\n")); } } vars = NULL; return SNMPERR_SUCCESS;}/* * send trap */intsend_traceRoute_trap(struct traceRouteCtlTable_data *item, oid * trap_oid, size_t trap_oid_len){ static oid objid_snmptrap[] = { 1, 3, 6, 1, 6, 3, 1, 1, 4, 1, 0 }; /* snmpTrapIOD.0 */ struct traceRouteResultsTable_data *StorageTmp = NULL; struct traceRouteHopsTable_data *StorageHops = NULL; netsnmp_variable_list *var_list = NULL; netsnmp_variable_list *vars = NULL; netsnmp_variable_list *var_hops = NULL; oid newoid[MAX_OID_LEN]; size_t newoid_len = 0; oid indexoid[MAX_OID_LEN]; size_t indexoid_len = 0; struct header_complex_index *hciptr; oid tempoid[MAX_OID_LEN]; size_t tempoid_len = 0; oid traceRouteCtlTargetAddress[] = { 1, 3, 6, 1, 2, 1, 81, 1, 2, 1, 4 }; oid traceRouteHopsIpTgAddress[] = { 1, 3, 6, 1, 2, 1, 81, 1, 5, 1, 3 }; snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->traceRouteCtlOwnerIndex, item->traceRouteCtlOwnerIndexLen); /* traceRouteCtlOwnerIndex */ snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->traceRouteCtlTestName, item->traceRouteCtlTestNameLen); /* traceRouteCtlTestName */ /* * snmpTrap oid */ snmp_varlist_add_variable(&var_list, objid_snmptrap, sizeof(objid_snmptrap) / sizeof(oid), ASN_OBJECT_ID, (u_char *) trap_oid, trap_oid_len * sizeof(oid)); /* * traceRouteCtlTargetAddress */ bzero(newoid, MAX_OID_LEN * sizeof(oid)); header_complex_generate_oid(newoid, &newoid_len, traceRouteCtlTargetAddress, sizeof(traceRouteCtlTargetAddress) / sizeof(oid), vars); snmp_varlist_add_variable(&var_list, newoid, newoid_len, ASN_OCTET_STR, (u_char *) item->traceRouteCtlTargetAddress, item->traceRouteCtlTargetAddressLen); for (hciptr = traceRouteHopsTableStorage; hciptr != NULL; hciptr = hciptr->next) { bzero(indexoid, MAX_OID_LEN * sizeof(oid)); header_complex_generate_oid(indexoid, &indexoid_len, NULL, 0, vars); if (snmp_oid_compare (indexoid, indexoid_len, hciptr->name, indexoid_len) == 0) { StorageHops = (struct traceRouteHopsTable_data *) header_complex_get_from_oid(traceRouteHopsTableStorage, hciptr->name, hciptr->namelen); bzero(tempoid, MAX_OID_LEN * sizeof(oid)); header_complex_generate_oid(tempoid, &tempoid_len, traceRouteHopsIpTgAddress, sizeof(traceRouteHopsIpTgAddress) / sizeof(oid), vars); snmp_varlist_add_variable(&var_hops, NULL, 0, ASN_UNSIGNED, (char *) &StorageHops->traceRouteHopsHopIndex, sizeof(StorageHops->traceRouteHopsHopIndex)); /* traceRouteCtlTestName */ bzero(newoid, MAX_OID_LEN * sizeof(oid)); header_complex_generate_oid(newoid, &newoid_len, tempoid, tempoid_len, var_hops); snmp_varlist_add_variable(&var_list, newoid, newoid_len, ASN_OCTET_STR, (u_char *) StorageHops-> traceRouteHopsIpTgtAddress, StorageHops-> traceRouteHopsIpTgtAddressLen); var_hops = NULL; } } /* * XXX: stuff based on event table */ DEBUGMSG(("pingTest:send_ping_trap", "success!\n")); send_v2trap(var_list); snmp_free_varbind(vars); vars = NULL; snmp_free_varbind(var_list); var_list = NULL;}intwrite_traceRouteCtlTargetAddressType(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 size_t tmpvar; struct traceRouteCtlTable_data *StorageTmp = NULL; static size_t tmplen; size_t newlen = name_len - (sizeof(traceRouteCtlTable_variables_oid) / sizeof(oid) + 3 - 1); if ((StorageTmp = header_complex(traceRouteCtlTableStorage, NULL, &name[sizeof(traceRouteCtlTable_variables_oid) / sizeof(oid) + 3 - 1], &newlen, 1, NULL, NULL)) == NULL) return SNMP_ERR_NOSUCHNAME; /* remove if you support creation here */ if (StorageTmp && StorageTmp->storageType == ST_READONLY) { return SNMP_ERR_NOTWRITABLE; } if (StorageTmp && StorageTmp->traceRouteCtlRowStatus == RS_ACTIVE) { return SNMP_ERR_NOTWRITABLE; } switch (action) { case RESERVE1: if (var_val_type != ASN_INTEGER) { snmp_log(LOG_ERR, "write to traceRouteCtlTargetAddressType not ASN_INTEGER\n"); return SNMP_ERR_WRONGTYPE; } 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 objid 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->traceRouteCtlTargetAddressType; StorageTmp->traceRouteCtlTargetAddressType = *((long *) var_val); break; case UNDO: /* * Back out any changes made in the ACTION case */ StorageTmp->traceRouteCtlTargetAddressType = 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_traceRouteCtlTargetAddress(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; static size_t tmplen; struct traceRouteCtlTable_data *StorageTmp = NULL; size_t newlen = name_len - (sizeof(traceRouteCtlTable_variables_oid) / sizeof(oid) + 3 - 1); if ((StorageTmp = header_complex(traceRouteCtlTableStorage, NULL, &name[sizeof(traceRouteCtlTable_variables_oid) / sizeof(oid) + 3 - 1], &newlen, 1, NULL, NULL)) == NULL) return SNMP_ERR_NOSUCHNAME; /* remove if you support creation here */ if (StorageTmp && StorageTmp->storageType == ST_READONLY) { return SNMP_ERR_NOTWRITABLE; } if (StorageTmp && StorageTmp->traceRouteCtlRowStatus == RS_ACTIVE) { return SNMP_ERR_NOTWRITABLE; } switch (action) { case RESERVE1: if (var_val_type != ASN_OCTET_STR) { snmp_log(LOG_ERR, "write to traceRouteCtlTargetAddress not ASN_OCTET_STR\n"); return SNMP_ERR_WRONGTYPE; } 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 long_ret f
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -