version 1.17, 2019/10/26 19:34:15 |
version 1.18, 2020/01/17 09:49:47 |
|
|
int non_repeaters = 0; |
int non_repeaters = 0; |
int max_repetitions = 10; |
int max_repetitions = 10; |
struct ber_oid walk_end = {{0}, 0}; |
struct ber_oid walk_end = {{0}, 0}; |
|
struct ber_oid *walk_skip = NULL; |
|
size_t walk_skip_len = 0; |
enum smi_oid_lookup oid_lookup = smi_oidl_short; |
enum smi_oid_lookup oid_lookup = smi_oidl_short; |
enum smi_output_string output_string = smi_os_default; |
enum smi_output_string output_string = smi_os_default; |
|
|
|
|
errx(1, "-Cr invalid argument"); |
errx(1, "-Cr invalid argument"); |
i = strtolp - optarg - 1; |
i = strtolp - optarg - 1; |
break; |
break; |
|
case 's': |
|
if (strcmp(snmp_app->name, "walk") && |
|
strcmp(snmp_app->name, "bulkwalk")) |
|
usage(); |
|
if ((walk_skip = recallocarray( |
|
walk_skip, walk_skip_len, |
|
walk_skip_len + 1, |
|
sizeof(*walk_skip))) == NULL) |
|
errx(1, "malloc"); |
|
if (smi_string2oid(argv[optind], |
|
&(walk_skip[walk_skip_len])) != 0) |
|
errx(1, "%s: %s", |
|
"Unknown Object Identifier", |
|
argv[optind]); |
|
walk_skip_len++; |
|
optind++; |
|
break; |
case 't': |
case 't': |
if (strcmp(snmp_app->name, "walk")) |
if (strcmp(snmp_app->name, "walk")) |
usage(); |
usage(); |
|
|
struct timespec start, finish; |
struct timespec start, finish; |
struct snmp_agent *agent; |
struct snmp_agent *agent; |
const char *oids; |
const char *oids; |
int n = 0, prev_cmp; |
int n = 0, prev_cmp, skip_cmp; |
int errorstatus, errorindex; |
int errorstatus, errorindex; |
int class; |
int class; |
|
size_t i; |
unsigned type; |
unsigned type; |
|
|
if (strcmp(snmp_app->name, "bulkwalk") == 0 && version < SNMP_V2C) |
if (strcmp(snmp_app->name, "bulkwalk") == 0 && version < SNMP_V2C) |
|
|
n++; |
n++; |
} |
} |
while (1) { |
while (1) { |
|
for (i = 0; i < walk_skip_len; i++) { |
|
skip_cmp = ober_oid_cmp(&(walk_skip[i]), &noid); |
|
if (skip_cmp == 0 || skip_cmp == 2) { |
|
bcopy(&(walk_skip[i]), &noid, sizeof(noid)); |
|
noid.bo_id[noid.bo_n -1]++; |
|
break; |
|
} |
|
} |
bcopy(&noid, &loid, sizeof(loid)); |
bcopy(&noid, &loid, sizeof(loid)); |
if (strcmp(snmp_app->name, "bulkwalk") == 0) { |
if (strcmp(snmp_app->name, "bulkwalk") == 0) { |
if ((pdu = snmp_getbulk(agent, &noid, 1, |
if ((pdu = snmp_getbulk(agent, &noid, 1, |
|
|
if (value->be_class == BER_CLASS_CONTEXT && |
if (value->be_class == BER_CLASS_CONTEXT && |
value->be_type == BER_TYPE_EOC) |
value->be_type == BER_TYPE_EOC) |
break; |
break; |
|
for (i = 0; i < walk_skip_len; i++) { |
|
skip_cmp = ober_oid_cmp(&(walk_skip[i]), &noid); |
|
if (skip_cmp == 0 || skip_cmp == 2) |
|
break; |
|
} |
|
if (i < walk_skip_len) |
|
continue; |
prev_cmp = ober_oid_cmp(&loid, &noid); |
prev_cmp = ober_oid_cmp(&loid, &noid); |
if (walk_check_increase && prev_cmp == -1) |
if (walk_check_increase && prev_cmp == -1) |
errx(1, "OID not increasing"); |
errx(1, "OID not increasing"); |