Lines Matching +full:sub +full:-
1 /*-
83 uint32_t sub, uint32_t iidx __unused, enum snmp_op op) in op_snmp_target() argument
87 if (val->var.subs[sub - 1] == LEAF_snmpTargetSpinLock) { in op_snmp_target()
92 val->v.integer = target_lock; in op_snmp_target()
97 if (val->v.integer != target_lock) in op_snmp_target()
113 switch (val->var.subs[sub - 1]) { in op_snmp_target()
115 val->v.uint32 = ctx_stats->unavail_contexts; in op_snmp_target()
118 val->v.uint32 = ctx_stats->unknown_contexts; in op_snmp_target()
130 uint32_t sub, uint32_t iidx __unused, enum snmp_op op) in op_snmp_target_addrs() argument
137 if ((addrs = target_get_address(&val->var, sub)) == NULL) in op_snmp_target_addrs()
142 if ((addrs = target_get_next_address(&val->var, sub)) == NULL) in op_snmp_target_addrs()
144 target_append_index(&val->var, sub, addrs->name); in op_snmp_target_addrs()
148 if ((addrs = target_get_address(&val->var, sub)) == NULL && in op_snmp_target_addrs()
149 (val->var.subs[sub - 1] != LEAF_snmpTargetAddrRowStatus || in op_snmp_target_addrs()
150 val->v.integer != RowStatus_createAndWait)) in op_snmp_target_addrs()
155 addrs->type == StorageType_readOnly) in op_snmp_target_addrs()
157 if (addrs->status == RowStatus_active && in op_snmp_target_addrs()
158 val->v.integer != RowStatus_destroy) in op_snmp_target_addrs()
162 switch (val->var.subs[sub - 1]) { in op_snmp_target_addrs()
166 if (val->v.octetstring.len != SNMP_UDP_ADDR_SIZ) in op_snmp_target_addrs()
168 ctx->scratch->ptr1 = malloc(SNMP_UDP_ADDR_SIZ); in op_snmp_target_addrs()
169 if (ctx->scratch->ptr1 == NULL) in op_snmp_target_addrs()
171 memcpy(ctx->scratch->ptr1, addrs->address, in op_snmp_target_addrs()
173 memcpy(addrs->address, val->v.octetstring.octets, in op_snmp_target_addrs()
178 if (val->v.octetstring.len >= SNMP_TAG_SIZ) in op_snmp_target_addrs()
180 ctx->scratch->int1 = strlen(addrs->taglist) + 1; in op_snmp_target_addrs()
181 ctx->scratch->ptr1 = malloc(ctx->scratch->int1); in op_snmp_target_addrs()
182 if (ctx->scratch->ptr1 == NULL) in op_snmp_target_addrs()
184 strlcpy(ctx->scratch->ptr1, addrs->taglist, in op_snmp_target_addrs()
185 ctx->scratch->int1); in op_snmp_target_addrs()
186 memcpy(addrs->taglist, val->v.octetstring.octets, in op_snmp_target_addrs()
187 val->v.octetstring.len); in op_snmp_target_addrs()
188 addrs->taglist[val->v.octetstring.len] = '\0'; in op_snmp_target_addrs()
192 if (val->v.octetstring.len >= SNMP_ADM_STR32_SIZ) in op_snmp_target_addrs()
194 ctx->scratch->int1 = strlen(addrs->paramname) + 1; in op_snmp_target_addrs()
195 ctx->scratch->ptr1 = malloc(ctx->scratch->int1); in op_snmp_target_addrs()
196 if (ctx->scratch->ptr1 == NULL) in op_snmp_target_addrs()
198 strlcpy(ctx->scratch->ptr1, addrs->paramname, in op_snmp_target_addrs()
199 ctx->scratch->int1); in op_snmp_target_addrs()
200 memcpy(addrs->paramname, val->v.octetstring.octets, in op_snmp_target_addrs()
201 val->v.octetstring.len); in op_snmp_target_addrs()
202 addrs->paramname[val->v.octetstring.len] = '\0'; in op_snmp_target_addrs()
206 ctx->scratch->int1 = addrs->retry; in op_snmp_target_addrs()
207 addrs->retry = val->v.integer; in op_snmp_target_addrs()
211 ctx->scratch->int1 = addrs->timeout; in op_snmp_target_addrs()
212 addrs->timeout = val->v.integer / 10; in op_snmp_target_addrs()
220 if (val->v.integer != RowStatus_active && in op_snmp_target_addrs()
221 val->v.integer != RowStatus_destroy) in op_snmp_target_addrs()
223 if (val->v.integer == RowStatus_active && in op_snmp_target_addrs()
224 (addrs->address[0] == 0 || in op_snmp_target_addrs()
225 strlen(addrs->taglist) == 0 || in op_snmp_target_addrs()
226 strlen(addrs->paramname) == 0)) in op_snmp_target_addrs()
228 ctx->scratch->int1 = addrs->status; in op_snmp_target_addrs()
229 addrs->status = val->v.integer; in op_snmp_target_addrs()
232 if (val->v.integer != RowStatus_createAndWait || in op_snmp_target_addrs()
233 target_decode_index(&val->var, sub, aname) < 0) in op_snmp_target_addrs()
237 addrs->status = RowStatus_destroy; in op_snmp_target_addrs()
239 addrs->type = StorageType_volatile; in op_snmp_target_addrs()
241 addrs->type = StorageType_readOnly; in op_snmp_target_addrs()
247 switch (val->var.subs[sub - 1]) { in op_snmp_target_addrs()
251 free(ctx->scratch->ptr1); in op_snmp_target_addrs()
254 if ((addrs = target_get_address(&val->var, sub)) == NULL) in op_snmp_target_addrs()
256 if (val->v.integer == RowStatus_destroy) in op_snmp_target_addrs()
258 else if (val->v.integer == RowStatus_active) in op_snmp_target_addrs()
267 if ((addrs = target_get_address(&val->var, sub)) == NULL) in op_snmp_target_addrs()
270 switch (val->var.subs[sub - 1]) { in op_snmp_target_addrs()
272 memcpy(addrs->address, ctx->scratch->ptr1, in op_snmp_target_addrs()
274 free(ctx->scratch->ptr1); in op_snmp_target_addrs()
278 strlcpy(addrs->taglist, ctx->scratch->ptr1, in op_snmp_target_addrs()
279 ctx->scratch->int1); in op_snmp_target_addrs()
280 free(ctx->scratch->ptr1); in op_snmp_target_addrs()
284 strlcpy(addrs->paramname, ctx->scratch->ptr1, in op_snmp_target_addrs()
285 ctx->scratch->int1); in op_snmp_target_addrs()
286 free(ctx->scratch->ptr1); in op_snmp_target_addrs()
290 addrs->retry = ctx->scratch->int1; in op_snmp_target_addrs()
294 addrs->timeout = ctx->scratch->int1; in op_snmp_target_addrs()
298 if (ctx->scratch->int1 == RowStatus_destroy) in op_snmp_target_addrs()
310 switch (val->var.subs[sub - 1]) { in op_snmp_target_addrs()
314 return (string_get(val, addrs->address, SNMP_UDP_ADDR_SIZ)); in op_snmp_target_addrs()
316 val->v.integer = addrs->timeout; in op_snmp_target_addrs()
319 val->v.integer = addrs->retry; in op_snmp_target_addrs()
322 return (string_get(val, addrs->taglist, -1)); in op_snmp_target_addrs()
324 return (string_get(val, addrs->paramname, -1)); in op_snmp_target_addrs()
326 val->v.integer = addrs->type; in op_snmp_target_addrs()
329 val->v.integer = addrs->status; in op_snmp_target_addrs()
340 uint32_t sub, uint32_t iidx __unused, enum snmp_op op) in op_snmp_target_params() argument
347 if ((param = target_get_param(&val->var, sub)) == NULL) in op_snmp_target_params()
352 if ((param = target_get_next_param(&val->var, sub)) == NULL) in op_snmp_target_params()
354 target_append_index(&val->var, sub, param->name); in op_snmp_target_params()
358 if ((param = target_get_param(&val->var, sub)) == NULL && in op_snmp_target_params()
359 (val->var.subs[sub - 1] != LEAF_snmpTargetParamsRowStatus || in op_snmp_target_params()
360 val->v.integer != RowStatus_createAndWait)) in op_snmp_target_params()
365 param->type == StorageType_readOnly) in op_snmp_target_params()
367 if (param->status == RowStatus_active && in op_snmp_target_params()
368 val->v.integer != RowStatus_destroy) in op_snmp_target_params()
372 switch (val->var.subs[sub - 1]) { in op_snmp_target_params()
374 if (val->v.integer != SNMP_MPM_SNMP_V1 && in op_snmp_target_params()
375 val->v.integer != SNMP_MPM_SNMP_V2c && in op_snmp_target_params()
376 val->v.integer != SNMP_MPM_SNMP_V3) in op_snmp_target_params()
378 ctx->scratch->int1 = param->mpmodel; in op_snmp_target_params()
379 param->mpmodel = val->v.integer; in op_snmp_target_params()
383 if (val->v.integer != SNMP_SECMODEL_SNMPv1 && in op_snmp_target_params()
384 val->v.integer != SNMP_SECMODEL_SNMPv2c && in op_snmp_target_params()
385 val->v.integer != SNMP_SECMODEL_USM) in op_snmp_target_params()
387 ctx->scratch->int1 = param->sec_model; in op_snmp_target_params()
388 param->sec_model = val->v.integer; in op_snmp_target_params()
392 if (val->v.octetstring.len >= SNMP_ADM_STR32_SIZ) in op_snmp_target_params()
394 ctx->scratch->int1 = strlen(param->secname) + 1; in op_snmp_target_params()
395 ctx->scratch->ptr1 = malloc(ctx->scratch->int1); in op_snmp_target_params()
396 if (ctx->scratch->ptr1 == NULL) in op_snmp_target_params()
398 strlcpy(ctx->scratch->ptr1, param->secname, in op_snmp_target_params()
399 ctx->scratch->int1); in op_snmp_target_params()
400 memcpy(param->secname, val->v.octetstring.octets, in op_snmp_target_params()
401 val->v.octetstring.len); in op_snmp_target_params()
402 param->secname[val->v.octetstring.len] = '\0'; in op_snmp_target_params()
406 if (val->v.integer != SNMP_noAuthNoPriv && in op_snmp_target_params()
407 val->v.integer != SNMP_authNoPriv && in op_snmp_target_params()
408 val->v.integer != SNMP_authPriv) in op_snmp_target_params()
410 ctx->scratch->int1 = param->sec_level; in op_snmp_target_params()
411 param->sec_level = val->v.integer; in op_snmp_target_params()
419 if (val->v.integer != RowStatus_active && in op_snmp_target_params()
420 val->v.integer != RowStatus_destroy) in op_snmp_target_params()
422 if (val->v.integer == RowStatus_active && in op_snmp_target_params()
423 (param->sec_model == 0 || in op_snmp_target_params()
424 param->sec_level == 0 || in op_snmp_target_params()
425 strlen(param->secname) == 0)) in op_snmp_target_params()
427 ctx->scratch->int1 = param->status; in op_snmp_target_params()
428 param->status = val->v.integer; in op_snmp_target_params()
431 if (val->v.integer != RowStatus_createAndWait || in op_snmp_target_params()
432 target_decode_index(&val->var, sub, pname) < 0) in op_snmp_target_params()
436 param->status = RowStatus_destroy; in op_snmp_target_params()
438 param->type = StorageType_volatile; in op_snmp_target_params()
440 param->type = StorageType_readOnly; in op_snmp_target_params()
446 switch (val->var.subs[sub - 1]) { in op_snmp_target_params()
448 free(ctx->scratch->ptr1); in op_snmp_target_params()
451 if ((param = target_get_param(&val->var, sub)) == NULL) in op_snmp_target_params()
453 if (val->v.integer == RowStatus_destroy) in op_snmp_target_params()
462 if ((param = target_get_param(&val->var, sub)) == NULL && in op_snmp_target_params()
463 (val->var.subs[sub - 1] != LEAF_snmpTargetParamsRowStatus || in op_snmp_target_params()
464 val->v.integer != RowStatus_createAndWait)) in op_snmp_target_params()
466 switch (val->var.subs[sub - 1]) { in op_snmp_target_params()
468 param->mpmodel = ctx->scratch->int1; in op_snmp_target_params()
471 param->sec_model = ctx->scratch->int1; in op_snmp_target_params()
474 strlcpy(param->secname, ctx->scratch->ptr1, in op_snmp_target_params()
475 sizeof(param->secname)); in op_snmp_target_params()
476 free(ctx->scratch->ptr1); in op_snmp_target_params()
479 param->sec_level = ctx->scratch->int1; in op_snmp_target_params()
482 if (ctx->scratch->int1 == RowStatus_destroy) in op_snmp_target_params()
495 switch (val->var.subs[sub - 1]) { in op_snmp_target_params()
497 val->v.integer = param->mpmodel; in op_snmp_target_params()
500 val->v.integer = param->sec_model; in op_snmp_target_params()
503 return (string_get(val, param->secname, -1)); in op_snmp_target_params()
505 val->v.integer = param->sec_level; in op_snmp_target_params()
508 val->v.integer = param->type; in op_snmp_target_params()
511 val->v.integer = param->status; in op_snmp_target_params()
522 uint32_t sub, uint32_t iidx __unused, enum snmp_op op) in op_snmp_notify() argument
529 if ((notify = target_get_notify(&val->var, sub)) == NULL) in op_snmp_notify()
534 if ((notify = target_get_next_notify(&val->var, sub)) == NULL) in op_snmp_notify()
536 target_append_index(&val->var, sub, notify->name); in op_snmp_notify()
540 if ((notify = target_get_notify(&val->var, sub)) == NULL && in op_snmp_notify()
541 (val->var.subs[sub - 1] != LEAF_snmpNotifyRowStatus || in op_snmp_notify()
542 val->v.integer != RowStatus_createAndGo)) in op_snmp_notify()
547 notify->type == StorageType_readOnly) in op_snmp_notify()
551 switch (val->var.subs[sub - 1]) { in op_snmp_notify()
553 if (val->v.octetstring.len >= SNMP_TAG_SIZ) in op_snmp_notify()
555 ctx->scratch->int1 = strlen(notify->taglist) + 1; in op_snmp_notify()
556 ctx->scratch->ptr1 = malloc(ctx->scratch->int1); in op_snmp_notify()
557 if (ctx->scratch->ptr1 == NULL) in op_snmp_notify()
559 strlcpy(ctx->scratch->ptr1, notify->taglist, in op_snmp_notify()
560 ctx->scratch->int1); in op_snmp_notify()
561 memcpy(notify->taglist, val->v.octetstring.octets, in op_snmp_notify()
562 val->v.octetstring.len); in op_snmp_notify()
563 notify->taglist[val->v.octetstring.len] = '\0'; in op_snmp_notify()
572 if (val->v.integer != RowStatus_active && in op_snmp_notify()
573 val->v.integer != RowStatus_destroy) in op_snmp_notify()
575 ctx->scratch->int1 = notify->status; in op_snmp_notify()
576 notify->status = val->v.integer; in op_snmp_notify()
579 if (val->v.integer != RowStatus_createAndGo || in op_snmp_notify()
580 target_decode_index(&val->var, sub, nname) < 0) in op_snmp_notify()
584 notify->status = RowStatus_destroy; in op_snmp_notify()
586 notify->type = StorageType_volatile; in op_snmp_notify()
588 notify->type = StorageType_readOnly; in op_snmp_notify()
594 switch (val->var.subs[sub - 1]) { in op_snmp_notify()
596 free(ctx->scratch->ptr1); in op_snmp_notify()
599 notify = target_get_notify(&val->var, sub); in op_snmp_notify()
602 if (val->v.integer == RowStatus_destroy) in op_snmp_notify()
605 notify->status = RowStatus_active; in op_snmp_notify()
613 if ((notify = target_get_notify(&val->var, sub)) == NULL) in op_snmp_notify()
616 switch (val->var.subs[sub - 1]) { in op_snmp_notify()
618 strlcpy(notify->taglist, ctx->scratch->ptr1, in op_snmp_notify()
619 ctx->scratch->int1); in op_snmp_notify()
620 free(ctx->scratch->ptr1); in op_snmp_notify()
623 if (ctx->scratch->int1 == RowStatus_destroy) in op_snmp_notify()
636 switch (val->var.subs[sub - 1]) { in op_snmp_notify()
638 return (string_get(val, notify->taglist, -1)); in op_snmp_notify()
640 val->v.integer = snmpNotifyType_trap; in op_snmp_notify()
643 val->v.integer = notify->type; in op_snmp_notify()
646 val->v.integer = notify->status; in op_snmp_notify()
656 target_append_index(struct asn_oid *oid, uint sub, const char *name) in target_append_index() argument
660 oid->len = sub + strlen(name); in target_append_index()
662 oid->subs[sub + i] = name[i]; in target_append_index()
666 target_decode_index(const struct asn_oid *oid, uint sub, char *name) in target_decode_index() argument
670 if (oid->len - sub != oid->subs[sub] + 1 || oid->subs[sub] >= in target_decode_index()
672 return (-1); in target_decode_index()
674 for (i = 0; i < oid->subs[sub]; i++) in target_decode_index()
675 name[i] = oid->subs[sub + i + 1]; in target_decode_index()
682 target_get_address(const struct asn_oid *oid, uint sub) in target_get_address() argument
687 if (target_decode_index(oid, sub, aname) < 0) in target_get_address()
692 if (strcmp(aname, addrs->name) == 0) in target_get_address()
699 target_get_next_address(const struct asn_oid * oid, uint sub) in target_get_next_address() argument
704 if (oid->len - sub == 0) in target_get_next_address()
707 if (target_decode_index(oid, sub, aname) < 0) in target_get_next_address()
712 if (strcmp(aname, addrs->name) == 0) in target_get_next_address()
719 target_get_param(const struct asn_oid *oid, uint sub) in target_get_param() argument
724 if (target_decode_index(oid, sub, pname) < 0) in target_get_param()
729 if (strcmp(pname, param->name) == 0) in target_get_param()
736 target_get_next_param(const struct asn_oid *oid, uint sub) in target_get_next_param() argument
741 if (oid->len - sub == 0) in target_get_next_param()
744 if (target_decode_index(oid, sub, pname) < 0) in target_get_next_param()
749 if (strcmp(pname, param->name) == 0) in target_get_next_param()
756 target_get_notify(const struct asn_oid *oid, uint sub) in target_get_notify() argument
761 if (target_decode_index(oid, sub, nname) < 0) in target_get_notify()
766 if (strcmp(nname, notify->name) == 0) in target_get_notify()
773 target_get_next_notify(const struct asn_oid *oid, uint sub) in target_get_next_notify() argument
778 if (oid->len - sub == 0) in target_get_next_notify()
781 if (target_decode_index(oid, sub, nname) < 0) in target_get_next_notify()
786 if (strcmp(nname, notify->name) == 0) in target_get_next_notify()