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

📄 traceroutectltable.c

📁 snmp的源代码,已经在我的ubuntu下编译通过
💻 C
📖 第 1 页 / 共 5 页
字号:
    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 + -