From Paul Stath:

Dissector fails for OIDs with MacAddress in index.

svn path=/trunk/; revision=26746
This commit is contained in:
Anders Broman 2008-11-10 20:25:38 +00:00
parent d943c93a0b
commit 1b0b2bb4b6
4 changed files with 14 additions and 5 deletions

View File

@ -615,6 +615,7 @@ show_oid_index:
break; break;
case OID_KEY_TYPE_IMPLIED_STRING: case OID_KEY_TYPE_IMPLIED_STRING:
case OID_KEY_TYPE_IMPLIED_BYTES: case OID_KEY_TYPE_IMPLIED_BYTES:
case OID_KEY_TYPE_ETHER:
suboid = &(subids[key_start]); suboid = &(subids[key_start]);
buf_len = key_len; buf_len = key_len;
break; break;
@ -652,6 +653,9 @@ show_oid_index:
case OID_KEY_TYPE_IMPLIED_BYTES: case OID_KEY_TYPE_IMPLIED_BYTES:
proto_tree_add_bytes(pt_name,k->hfid,tvb,name_offset,buf_len, buf); proto_tree_add_bytes(pt_name,k->hfid,tvb,name_offset,buf_len, buf);
break; break;
case OID_KEY_TYPE_ETHER:
proto_tree_add_ether(pt_name,k->hfid,tvb,name_offset,buf_len, buf);
break;
case OID_KEY_TYPE_IPADDR: { case OID_KEY_TYPE_IPADDR: {
guint32* ipv4_p = (void*)buf; guint32* ipv4_p = (void*)buf;
proto_tree_add_ipv4(pt_name,k->hfid,tvb,name_offset,buf_len, *ipv4_p); proto_tree_add_ipv4(pt_name,k->hfid,tvb,name_offset,buf_len, *ipv4_p);

View File

@ -717,6 +717,7 @@ show_oid_index:
break; break;
case OID_KEY_TYPE_IMPLIED_STRING: case OID_KEY_TYPE_IMPLIED_STRING:
case OID_KEY_TYPE_IMPLIED_BYTES: case OID_KEY_TYPE_IMPLIED_BYTES:
case OID_KEY_TYPE_ETHER:
suboid = &(subids[key_start]); suboid = &(subids[key_start]);
buf_len = key_len; buf_len = key_len;
break; break;
@ -754,6 +755,9 @@ show_oid_index:
case OID_KEY_TYPE_IMPLIED_BYTES: case OID_KEY_TYPE_IMPLIED_BYTES:
proto_tree_add_bytes(pt_name,k->hfid,tvb,name_offset,buf_len, buf); proto_tree_add_bytes(pt_name,k->hfid,tvb,name_offset,buf_len, buf);
break; break;
case OID_KEY_TYPE_ETHER:
proto_tree_add_ether(pt_name,k->hfid,tvb,name_offset,buf_len, buf);
break;
case OID_KEY_TYPE_IPADDR: { case OID_KEY_TYPE_IPADDR: {
guint32* ipv4_p = (void*)buf; guint32* ipv4_p = (void*)buf;
proto_tree_add_ipv4(pt_name,k->hfid,tvb,name_offset,buf_len, *ipv4_p); proto_tree_add_ipv4(pt_name,k->hfid,tvb,name_offset,buf_len, *ipv4_p);
@ -2592,7 +2596,7 @@ static void dissect_SMUX_PDUs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, pro
/*--- End of included file: packet-snmp-fn.c ---*/ /*--- End of included file: packet-snmp-fn.c ---*/
#line 1403 "packet-snmp-template.c" #line 1407 "packet-snmp-template.c"
guint guint
@ -3369,7 +3373,7 @@ void proto_register_snmp(void) {
"snmp.T_operation", HFILL }}, "snmp.T_operation", HFILL }},
/*--- End of included file: packet-snmp-hfarr.c ---*/ /*--- End of included file: packet-snmp-hfarr.c ---*/
#line 1915 "packet-snmp-template.c" #line 1919 "packet-snmp-template.c"
}; };
/* List of subtrees */ /* List of subtrees */
@ -3409,7 +3413,7 @@ void proto_register_snmp(void) {
&ett_snmp_RReqPDU_U, &ett_snmp_RReqPDU_U,
/*--- End of included file: packet-snmp-ettarr.c ---*/ /*--- End of included file: packet-snmp-ettarr.c ---*/
#line 1931 "packet-snmp-template.c" #line 1935 "packet-snmp-template.c"
}; };
module_t *snmp_module; module_t *snmp_module;
static uat_field_t users_fields[] = { static uat_field_t users_fields[] = {

View File

@ -70,7 +70,7 @@ static const oid_value_type_t counter64_type = { FT_UINT64, BASE_DEC, BER_CLAS
static const oid_value_type_t ipv6_type = { FT_IPv6, BASE_NONE, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, 16, 16, OID_KEY_TYPE_BYTES, 16}; static const oid_value_type_t ipv6_type = { FT_IPv6, BASE_NONE, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, 16, 16, OID_KEY_TYPE_BYTES, 16};
static const oid_value_type_t float_type = { FT_FLOAT, BASE_DEC, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, 4, 4, OID_KEY_TYPE_WRONG, 0}; static const oid_value_type_t float_type = { FT_FLOAT, BASE_DEC, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, 4, 4, OID_KEY_TYPE_WRONG, 0};
static const oid_value_type_t double_type = { FT_DOUBLE, BASE_DEC, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, 8, 8, OID_KEY_TYPE_WRONG, 0}; static const oid_value_type_t double_type = { FT_DOUBLE, BASE_DEC, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, 8, 8, OID_KEY_TYPE_WRONG, 0};
static const oid_value_type_t ether_type = { FT_ETHER, BASE_NONE, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, 6, 6, OID_KEY_TYPE_BYTES, 6}; static const oid_value_type_t ether_type = { FT_ETHER, BASE_NONE, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, 6, 6, OID_KEY_TYPE_ETHER, 6};
static const oid_value_type_t string_type = { FT_STRING, BASE_NONE, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, 0, -1, OID_KEY_TYPE_STRING, 0}; static const oid_value_type_t string_type = { FT_STRING, BASE_NONE, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, 0, -1, OID_KEY_TYPE_STRING, 0};
static const oid_value_type_t unknown_type = { FT_BYTES, BASE_NONE, BER_CLASS_ANY, BER_TAG_ANY, 0, -1, OID_KEY_TYPE_WRONG, 0}; static const oid_value_type_t unknown_type = { FT_BYTES, BASE_NONE, BER_CLASS_ANY, BER_TAG_ANY, 0, -1, OID_KEY_TYPE_WRONG, 0};

View File

@ -50,7 +50,8 @@ typedef enum _oid_key_type_t {
OID_KEY_TYPE_IPADDR, OID_KEY_TYPE_IPADDR,
OID_KEY_TYPE_IMPLIED_OID, OID_KEY_TYPE_IMPLIED_OID,
OID_KEY_TYPE_IMPLIED_STRING, OID_KEY_TYPE_IMPLIED_STRING,
OID_KEY_TYPE_IMPLIED_BYTES OID_KEY_TYPE_IMPLIED_BYTES,
OID_KEY_TYPE_ETHER,
} oid_key_type_t; } oid_key_type_t;
typedef struct _oid_value_type_t { typedef struct _oid_value_type_t {