Home | History | Annotate | Download | only in tcpdump

Lines Matching defs:elem

420            register const u_char *p, u_int len, struct be *elem)
425 elem->asnlen = 0;
426 elem->type = BE_ANY;
449 elem->form = form;
450 elem->class = class;
451 elem->id = id;
483 elem->id = id = (id << 7) | *p;
493 elem->asnlen = *p;
495 if (elem->asnlen & ASN_BIT8) {
496 uint32_t noct = elem->asnlen % ASN_BIT8;
497 elem->asnlen = 0;
504 elem->asnlen = (elem->asnlen << ASN_SHIFT8) | *p++;
506 if (len < elem->asnlen) {
507 ND_PRINT((ndo, "[len%d<asnlen%u]", len, elem->asnlen));
522 ND_TCHECK2(*p, elem->asnlen);
530 elem->type = BE_STR;
531 elem->data.str = p;
536 elem->type = BE_INT;
539 if (elem->asnlen == 0) {
545 for (i = elem->asnlen; i-- > 0; p++)
547 elem->data.integer = data;
552 elem->type = BE_OID;
553 elem->data.raw = (const uint8_t *)p;
557 elem->type = BE_NULL;
558 elem->data.raw = NULL;
562 elem->type = BE_OCTET;
563 elem->data.raw = (const uint8_t *)p;
572 elem->type = BE_INETADDR;
573 elem->data.raw = (const uint8_t *)p;
580 elem->type = BE_UNS;
582 for (i = elem->asnlen; i-- > 0; p++)
584 elem->data.uns = data;
590 elem->type = BE_UNS64;
592 for (i = elem->asnlen; i-- > 0; p++)
594 elem->data.uns64 = data64;
599 elem->type = BE_OCTET;
600 elem->data.raw = (const uint8_t *)p;
610 elem->type = BE_NOSUCHOBJECT;
611 elem->data.raw = NULL;
615 elem->type = BE_NOSUCHINST;
616 elem->data.raw = NULL;
620 elem->type = BE_ENDOFMIBVIEW;
621 elem->data.raw = NULL;
628 elem->type = BE_OCTET;
629 elem->data.raw = (const uint8_t *)p;
639 elem->type = BE_SEQ;
640 elem->data.raw = (const uint8_t *)p;
644 elem->type = BE_OCTET;
645 elem->data.raw = (const uint8_t *)p;
652 elem->type = BE_PDU;
653 elem->data.raw = (const uint8_t *)p;
657 elem->type = BE_OCTET;
658 elem->data.raw = (const uint8_t *)p;
664 p += elem->asnlen;
665 len -= elem->asnlen;
666 return elem->asnlen + hdr;
674 asn1_print_octets(netdissect_options *ndo, struct be *elem)
676 const u_char *p = (const u_char *)elem->data.raw;
677 uint32_t asnlen = elem->asnlen;
691 asn1_print_string(netdissect_options *ndo, struct be *elem)
695 uint32_t asnlen = elem->asnlen;
698 p = elem->data.str;
702 p = elem->data.str;
730 struct be *elem)
733 uint32_t asnlen = elem->asnlen;
736 switch (elem->type) {
739 if (asn1_print_octets(ndo, elem) == -1)
749 p = (const u_char *)elem->data.raw;
799 ND_PRINT((ndo, "%d", elem->data.integer));
803 ND_PRINT((ndo, "%u", elem->data.uns));
807 ND_PRINT((ndo, "%" PRIu64, elem->data.uns64));
811 if (asn1_print_string(ndo, elem) == -1)
816 ND_PRINT((ndo, "Seq(%u)", elem->asnlen));
822 p = (const u_char *)elem->data.raw;
832 ND_PRINT((ndo, "[%s]", Class[EXCEPTIONS].Id[elem->id]));
836 ND_PRINT((ndo, "%s(%u)", Class[CONTEXT].Id[elem->id], elem->asnlen));
867 struct be elem;
871 i = asn1_parse(ndo, p, length, &elem);
874 if (asn1_print(ndo, &elem) < 0)
876 if (elem.type == BE_SEQ || elem.type == BE_PDU) {
878 asn1_decode(elem.data.raw, elem.asnlen);
913 struct be *elem, unsigned int *oid,
916 const u_char *p = (const u_char *)elem->data.raw;
917 uint32_t asnlen = elem->asnlen;
966 struct be *elem)
975 ok = (elem->asnlen == smiRange->minValue.value.unsigned32);
977 ok = (elem->asnlen >= smiRange->minValue.value.unsigned32
978 && elem->asnlen <= smiRange->maxValue.value.unsigned32);
983 ok = (elem->data.integer >= smiRange->minValue.value.integer32
984 && elem->data.integer <= smiRange->maxValue.value.integer32);
988 ok = (elem->data.uns >= smiRange->minValue.value.unsigned32
989 && elem->data.uns <= smiRange->maxValue.value.unsigned32);
1015 static int smi_check_range(SmiType *smiType, struct be *elem)
1024 ok = smi_check_a_range(smiType, smiRange, elem);
1035 ok = smi_check_range(parentType, elem);
1044 struct be *elem, int *status)
1051 *status = asn1_print(ndo, elem);
1054 *status = smi_decode_oid(ndo, elem, oid, sizeof(oid) / sizeof(unsigned int),
1060 *status = asn1_print(ndo, elem);
1078 SmiNode *smiNode, u_short pduid, struct be *elem)
1087 return asn1_print(ndo, elem);
1090 if (elem->type == BE_NOSUCHOBJECT
1091 || elem->type == BE_NOSUCHINST
1092 || elem->type == BE_ENDOFMIBVIEW) {
1093 return asn1_print(ndo, elem);
1115 return asn1_print(ndo, elem);
1118 if (! smi_check_type(smiType->basetype, elem->type)) {
1122 if (! smi_check_range(smiType, elem)) {
1134 switch (elem->type) {
1140 smi_decode_oid(ndo, elem, oid,
1167 == elem->data.integer) {
1169 ND_PRINT((ndo, "(%d)", elem->data.integer));
1179 return asn1_print(ndo, elem);
1225 struct be elem;
1233 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1235 if (elem.type != BE_SEQ) {
1237 asn1_print(ndo, &elem);
1243 length = elem.asnlen;
1244 np = (const u_char *)elem.data.raw;
1253 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1255 if (elem.type != BE_SEQ) {
1257 asn1_print(ndo, &elem);
1263 length = elem.asnlen;
1264 np = (const u_char *)elem.data.raw;
1267 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1269 if (elem.type != BE_OID) {
1271 asn1_print(ndo, &elem);
1275 smiNode = smi_print_variable(ndo, &elem, &status);
1277 status = asn1_print(ndo, &elem);
1289 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1293 if (elem.type != BE_NULL) {
1295 if (asn1_print(ndo, &elem) < 0)
1299 if (elem.type != BE_NULL) {
1301 status = smi_print_value(ndo, smiNode, pduid, &elem);
1303 status = asn1_print(ndo, &elem);
1322 struct be elem;
1326 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1328 if (elem.type != BE_INT) {
1330 asn1_print(ndo, &elem);
1334 ND_PRINT((ndo, "R=%d ", elem.data.integer));
1339 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1341 if (elem.type != BE_INT) {
1343 asn1_print(ndo, &elem);
1349 && elem.data.integer != 0) {
1352 DECODE_ErrorStatus(elem.data.integer)));
1354 ND_PRINT((ndo, " N=%d", elem.data.integer));
1355 } else if (elem.data.integer != 0) {
1357 ND_PRINT((ndo, " %s", DECODE_ErrorStatus(elem.data.integer)));
1358 error_status = elem.data.integer;
1364 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1366 if (elem.type != BE_INT) {
1368 asn1_print(ndo, &elem);
1373 && elem.data.integer != 0)
1374 ND_PRINT((ndo, "[errorIndex(%d)!=0]", elem.data.integer));
1376 ND_PRINT((ndo, " M=%d", elem.data.integer));
1377 else if (elem.data.integer != 0) {
1379 ND_PRINT((ndo, "[errorIndex(%d) w/o errorStatus]", elem.data.integer));
1381 ND_PRINT((ndo, "@%d", elem.data.integer));
1399 struct be elem;
1405 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1407 if (elem
1409 asn1_print(ndo, &elem);
1412 if (asn1_print(ndo, &elem) < 0)
1420 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1422 if (elem.type != BE_INETADDR) {
1424 asn1_print(ndo, &elem);
1427 if (asn1_print(ndo, &elem) < 0)
1433 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1435 if (elem.type != BE_INT) {
1437 asn1_print(ndo, &elem);
1440 generic = elem.data.integer;
1449 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1451 if (elem.type != BE_INT) {
1453 asn1_print(ndo, &elem);
1457 if (elem.data.integer != 0)
1458 ND_PRINT((ndo, "[specific-trap(%d)!=0]", elem.data.integer));
1460 ND_PRINT((ndo, " s=%d", elem.data.integer));
1467 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1469 if (elem.type != BE_UNS) { /* XXX */
1471 asn1_print(ndo, &elem);
1474 if (asn1_print(ndo, &elem) < 0)
1552 struct be elem;
1556 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1558 if (elem.type != BE_SEQ) {
1560 asn1_print(ndo, &elem);
1563 length = elem.asnlen;
1564 np = (const u_char *)elem.data.raw;
1567 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1569 if (elem.type != BE_STR) {
1571 asn1_print(ndo, &elem);
1578 if (asn1_print_octets(ndo, &elem) == -1)
1583 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1585 if (elem.type != BE_STR) {
1587 asn1_print(ndo, &elem);
1594 if (asn1_print_string(ndo, &elem) == -1)
1608 struct be elem;
1612 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1614 if (elem.type != BE_STR) {
1616 asn1_print(ndo, &elem);
1620 if (!(elem.asnlen == sizeof(DEF_COMMUNITY) - 1 &&
1621 strncmp((const char *)elem.data.str, DEF_COMMUNITY,
1625 if (asn1_print_string(ndo, &elem) == -1)
1642 struct be elem;
1646 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1648 if (elem.type != BE_SEQ) {
1650 asn1_print(ndo, &elem);
1653 length = elem.asnlen;
1654 np = (const u_char *)elem.data.raw;
1657 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1659 if (elem.type != BE_STR) {
1661 asn1_print(ndo, &elem);
1668 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1670 if (elem.type != BE_INT) {
1672 asn1_print(ndo, &elem);
1676 ND_PRINT((ndo, "B=%d ", elem.data.integer));
1681 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1683 if (elem.type != BE_INT) {
1685 asn1_print(ndo, &elem);
1689 ND_PRINT((ndo, "T=%d ", elem.data.integer));
1694 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1696 if (elem.type != BE_STR) {
1698 asn1_print(ndo, &elem);
1705 if (asn1_print_string(ndo, &elem) == -1)
1710 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1712 if (elem.type != BE_STR) {
1714 asn1_print(ndo, &elem);
1721 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1723 if (elem.type != BE_STR) {
1725 asn1_print(ndo, &elem);
1742 struct be elem;
1750 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1752 if (elem.type != BE_SEQ) {
1754 asn1_print(ndo, &elem);
1757 length = elem.asnlen;
1758 np = (const u_char *)elem.data.raw;
1765 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1767 if (elem.type != BE_INT) {
1769 asn1_print(ndo, &elem);
1776 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1778 if (elem.type != BE_INT) {
1780 asn1_print(ndo, &elem);
1787 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1789 if (elem.type != BE_STR) {
1791 asn1_print(ndo, &elem);
1794 if (elem.asnlen != 1) {
1795 ND_PRINT((ndo, "[msgFlags size %d]", elem.asnlen));
1798 flags = elem.data.str[0];
1813 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1815 if (elem.type != BE_INT) {
1817 asn1_print(ndo, &elem);
1820 model = elem.data.integer;
1844 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1846 if (elem.type != BE_STR) {
1848 asn1_print(ndo, &elem);
1855 usm_print(ndo, elem.data.str, elem.asnlen);
1879 struct be elem;
1886 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1888 if (elem.type != BE_SEQ) {
1890 asn1_print(ndo, &elem);
1896 length = elem.asnlen;
1897 np = (const u_char *)elem.data.raw;
1900 if ((count = asn1_parse(ndo, np, length, &elem)) < 0)
1902 if (elem.type != BE_INT) {
1904 asn1_print(ndo, &elem);
1908 switch (elem.data.integer) {
1913 ND_PRINT((ndo, "{ %s ", SnmpVersion[elem.data.integer]));
1916 ND_PRINT((ndo, "SNMP [version = %d]", elem.data.integer));
1919 version = elem.data.integer;
1932 ND_PRINT((ndo, "[version = %d]", elem.data.integer));