Lines Matching refs:elem

406 asn1_parse(register const u_char *p, u_int len, struct be *elem)
411 elem->asnlen = 0;
412 elem->type = BE_ANY;
435 elem->form = form;
436 elem->class = class;
437 elem->id = id;
464 elem->id = id = (id << 7) | *p;
474 elem->asnlen = *p;
476 if (elem->asnlen & ASN_BIT8) {
477 u_int32_t noct = elem->asnlen % ASN_BIT8;
478 elem->asnlen = 0;
485 elem->asnlen = (elem->asnlen << ASN_SHIFT8) | *p++;
487 if (len < elem->asnlen) {
488 printf("[len%d<asnlen%u]", len, elem->asnlen);
510 elem->type = BE_STR;
511 elem->data.str = p;
516 elem->type = BE_INT;
519 TCHECK2(*p, elem->asnlen);
522 for (i = elem->asnlen; i-- > 0; p++)
524 elem->data.integer = data;
529 elem->type = BE_OID;
530 elem->data.raw = (caddr_t)p;
534 elem->type = BE_NULL;
535 elem->data.raw = NULL;
539 elem->type = BE_OCTET;
540 elem->data.raw = (caddr_t)p;
550 elem->type = BE_INETADDR;
551 elem->data.raw = (caddr_t)p;
558 TCHECK2(*p, elem->asnlen);
559 elem->type = BE_UNS;
561 for (i = elem->asnlen; i-- > 0; p++)
563 elem->data.uns = data;
569 TCHECK2(*p, elem->asnlen);
570 elem->type = BE_UNS64;
572 for (i = elem->asnlen; i-- > 0; p++) {
577 elem->data.uns64.high = high;
578 elem->data.uns64.low = low;
583 elem->type = BE_OCTET;
584 elem->data.raw = (caddr_t)p;
594 elem->type = BE_NOSUCHOBJECT;
595 elem->data.raw = NULL;
599 elem->type = BE_NOSUCHINST;
600 elem->data.raw = NULL;
604 elem->type = BE_ENDOFMIBVIEW;
605 elem->data.raw = NULL;
613 TCHECK2(*p, elem->asnlen);
614 elem->type = BE_OCTET;
615 elem->data.raw = (caddr_t)p;
625 elem->type = BE_SEQ;
626 elem->data.raw = (caddr_t)p;
630 elem->type = BE_OCTET;
631 elem->data.raw = (caddr_t)p;
638 elem->type = BE_PDU;
639 elem->data.raw = (caddr_t)p;
643 elem->type = BE_OCTET;
644 elem->data.raw = (caddr_t)p;
651 p += elem->asnlen;
652 len -= elem->asnlen;
653 return elem->asnlen + hdr;
666 asn1_print(struct be *elem)
668 u_char *p = (u_char *)elem->data.raw;
669 u_int32_t asnlen = elem->asnlen;
672 switch (elem->type) {
731 printf("%d", elem->data.integer);
735 printf("%u", elem->data.uns);
742 if (elem->data.uns64.high == 0) {
743 printf("%u", elem->data.uns64.low);
746 d = elem->data.uns64.high * 4294967296.0; /* 2^32 */
747 if (elem->data.uns64.high <= 0x1fffff) {
748 d += elem->data.uns64.low;
756 d += (elem->data.uns64.low & 0xfffff000);
763 elem->data.uns64.low & 0xfff);
782 const u_char *p = elem->data.str;
786 p = elem->data.str;
803 printf("Seq(%u)", elem->asnlen);
818 printf("[%s]", Class[EXCEPTIONS].Id[elem->id]);
823 Class[CONTEXT].Id[elem->id], elem->asnlen);
854 struct be elem;
858 i = asn1_parse(p, length, &elem);
861 if (asn1_print(&elem) < 0)
863 if (elem.type == BE_SEQ || elem.type == BE_PDU) {
865 asn1_decode(elem.data.raw, elem.asnlen);
899 smi_decode_oid(struct be *elem, unsigned int *oid,
902 u_char *p = (u_char *)elem->data.raw;
903 u_int32_t asnlen = elem->asnlen;
951 struct be *elem)
960 ok = (elem->asnlen == smiRange->minValue.value.unsigned32);
962 ok = (elem->asnlen >= smiRange->minValue.value.unsigned32
963 && elem->asnlen <= smiRange->maxValue.value.unsigned32);
968 ok = (elem->data.integer >= smiRange->minValue.value.integer32
969 && elem->data.integer <= smiRange->maxValue.value.integer32);
973 ok = (elem->data.uns >= smiRange->minValue.value.unsigned32
974 && elem->data.uns <= smiRange->maxValue.value.unsigned32);
1000 static int smi_check_range(SmiType *smiType, struct be *elem)
1009 ok = smi_check_a_range(smiType, smiRange, elem);
1020 ok = smi_check_range(parentType, elem);
1027 static SmiNode *smi_print_variable(struct be *elem, int *status)
1033 *status = smi_decode_oid(elem, oid, sizeof(oid)/sizeof(unsigned int),
1039 *status = asn1_print(elem);
1057 smi_print_value(SmiNode *smiNode, u_char pduid, struct be *elem)
1066 return asn1_print(elem);
1069 if (elem->type == BE_NOSUCHOBJECT
1070 || elem->type == BE_NOSUCHINST
1071 || elem->type == BE_ENDOFMIBVIEW) {
1072 return asn1_print(elem);
1094 return asn1_print(elem);
1097 if (! smi_check_type(smiType->basetype, elem->type)) {
1101 if (! smi_check_range(smiType, elem)) {
1113 switch (elem->type) {
1118 smi_decode_oid(elem, oid,
1145 == elem->data.integer) {
1147 printf("(%d)", elem->data.integer);
1157 return asn1_print(elem);
1202 struct be elem;
1210 if ((count = asn1_parse(np, length, &elem)) < 0)
1212 if (elem.type != BE_SEQ) {
1214 asn1_print(&elem);
1220 length = elem.asnlen;
1221 np = (u_char *)elem.data.raw;
1230 if ((count = asn1_parse(np, length, &elem)) < 0)
1232 if (elem.type != BE_SEQ) {
1234 asn1_print(&elem);
1240 length = elem.asnlen;
1241 np = (u_char *)elem.data.raw;
1244 if ((count = asn1_parse(np, length, &elem)) < 0)
1246 if (elem.type != BE_OID) {
1248 asn1_print(&elem);
1252 smiNode = smi_print_variable(&elem, &status);
1254 status = asn1_print(&elem);
1266 if ((count = asn1_parse(np, length, &elem)) < 0)
1270 if (elem.type != BE_NULL) {
1272 if (asn1_print(&elem) < 0)
1276 if (elem.type != BE_NULL) {
1278 status = smi_print_value(smiNode, pduid, &elem);
1280 status = asn1_print(&elem);
1298 struct be elem;
1302 if ((count = asn1_parse(np, length, &elem)) < 0)
1304 if (elem.type != BE_INT) {
1306 asn1_print(&elem);
1310 printf("R=%d ", elem.data.integer);
1315 if ((count = asn1_parse(np, length, &elem)) < 0)
1317 if (elem.type != BE_INT) {
1319 asn1_print(&elem);
1325 && elem.data.integer != 0) {
1328 DECODE_ErrorStatus(elem.data.integer));
1330 printf(" N=%d", elem.data.integer);
1331 } else if (elem.data.integer != 0) {
1333 printf(" %s", DECODE_ErrorStatus(elem.data.integer));
1334 error = elem.data.integer;
1340 if ((count = asn1_parse(np, length, &elem)) < 0)
1342 if (elem.type != BE_INT) {
1344 asn1_print(&elem);
1349 && elem.data.integer != 0)
1350 printf("[errorIndex(%d)!=0]", elem.data.integer);
1352 printf(" M=%d", elem.data.integer);
1353 else if (elem.data.integer != 0) {
1356 elem.data.integer);
1358 printf("@%d", elem.data.integer);
1359 error = elem.data.integer;
1378 struct be elem;
1384 if ((count = asn1_parse(np, length, &elem)) < 0)
1386 if (elem.type != BE_OID) {
1388 asn1_print(&elem);
1391 if (asn1_print(&elem) < 0)
1399 if ((count = asn1_parse(np, length, &elem)) < 0)
1401 if (elem.type != BE_INETADDR) {
1403 asn1_print(&elem);
1406 if (asn1_print(&elem) < 0)
1412 if ((count = asn1_parse(np, length, &elem)) < 0)
1414 if (elem.type != BE_INT) {
1416 asn1_print(&elem);
1419 generic = elem.data.integer;
1428 if ((count = asn1_parse(np, length, &elem)) < 0)
1430 if (elem.type != BE_INT) {
1432 asn1_print(&elem);
1436 if (elem.data.integer != 0)
1437 printf("[specific-trap(%d)!=0]", elem.data.integer);
1439 printf(" s=%d", elem.data.integer);
1446 if ((count = asn1_parse(np, length, &elem)) < 0)
1448 if (elem.type != BE_UNS) { /* XXX */
1450 asn1_print(&elem);
1453 if (asn1_print(&elem) < 0)
1529 struct be elem;
1533 if ((count = asn1_parse(np, length, &elem)) < 0)
1535 if (elem.type != BE_SEQ) {
1537 asn1_print(&elem);
1540 length = elem.asnlen;
1541 np = (u_char *)elem.data.raw;
1544 if ((count = asn1_parse(np, length, &elem)) < 0)
1546 if (elem.type != BE_STR) {
1548 asn1_print(&elem);
1555 for (i = 0; i < (int)elem.asnlen; i++) {
1556 printf("0x%02X", elem.data.str[i]);
1561 if ((count = asn1_parse(np, length, &elem)) < 0)
1563 if (elem.type != BE_STR) {
1565 asn1_print(&elem);
1571 printf("C=%.*s ", (int)elem.asnlen, elem.data.str);
1582 struct be elem;
1586 if ((count = asn1_parse(np, length, &elem)) < 0)
1588 if (elem.type != BE_STR) {
1590 asn1_print(&elem);
1594 if (!(elem.asnlen == sizeof(DEF_COMMUNITY) - 1 &&
1595 strncmp((char *)elem.data.str, DEF_COMMUNITY,
1598 printf("C=%.*s ", (int)elem.asnlen, elem.data.str);
1611 struct be elem;
1615 if ((count = asn1_parse(np, length, &elem)) < 0)
1617 if (elem.type != BE_SEQ) {
1619 asn1_print(&elem);
1622 length = elem.asnlen;
1623 np = (u_char *)elem.data.raw;
1626 if ((count = asn1_parse(np, length, &elem)) < 0)
1628 if (elem.type != BE_STR) {
1630 asn1_print(&elem);
1637 if ((count = asn1_parse(np, length, &elem)) < 0)
1639 if (elem.type != BE_INT) {
1641 asn1_print(&elem);
1645 printf("B=%d ", elem.data.integer);
1650 if ((count = asn1_parse(np, length, &elem)) < 0)
1652 if (elem.type != BE_INT) {
1654 asn1_print(&elem);
1658 printf("T=%d ", elem.data.integer);
1663 if ((count = asn1_parse(np, length, &elem)) < 0)
1665 if (elem.type != BE_STR) {
1667 asn1_print(&elem);
1673 printf("U=%.*s ", (int)elem.asnlen, elem.data.str);
1676 if ((count = asn1_parse(np, length, &elem)) < 0)
1678 if (elem.type != BE_STR) {
1680 asn1_print(&elem);
1687 if ((count = asn1_parse(np, length, &elem)) < 0)
1689 if (elem.type != BE_STR) {
1691 asn1_print(&elem);
1707 struct be elem;
1715 if ((count = asn1_parse(np, length, &elem)) < 0)
1717 if (elem.type != BE_SEQ) {
1719 asn1_print(&elem);
1722 length = elem.asnlen;
1723 np = (u_char *)elem.data.raw;
1730 if ((count = asn1_parse(np, length, &elem)) < 0)
1732 if (elem.type != BE_INT) {
1734 asn1_print(&elem);
1741 if ((count = asn1_parse(np, length, &elem)) < 0)
1743 if (elem.type != BE_INT) {
1745 asn1_print(&elem);
1752 if ((count = asn1_parse(np, length, &elem)) < 0)
1754 if (elem.type != BE_STR) {
1756 asn1_print(&elem);
1759 if (elem.asnlen != 1) {
1760 printf("[msgFlags size %d]", elem.asnlen);
1763 flags = elem.data.str[0];
1779 if ((count = asn1_parse(np, length, &elem)) < 0)
1781 if (elem.type != BE_INT) {
1783 asn1_print(&elem);
1786 model = elem.data.integer;
1810 if ((count = asn1_parse(np, length, &elem)) < 0)
1812 if (elem.type != BE_STR) {
1814 asn1_print(&elem);
1821 usm_print(elem.data.str, elem.asnlen);
1844 struct be elem;
1851 if ((count = asn1_parse(np, length, &elem)) < 0)
1853 if (elem.type != BE_SEQ) {
1855 asn1_print(&elem);
1861 length = elem.asnlen;
1862 np = (u_char *)elem.data.raw;
1865 if ((count = asn1_parse(np, length, &elem)) < 0)
1867 if (elem.type != BE_INT) {
1869 asn1_print(&elem);
1873 switch (elem.data.integer) {
1878 printf("{ %s ", SnmpVersion[elem.data.integer]);
1881 printf("[version = %d]", elem.data.integer);
1884 version = elem.data.integer;
1897 printf("[version = %d]", elem.data.integer);