Fix malformed packet if linkedId is present dissect some OID:s

svn path=/trunk/; revision=15533
This commit is contained in:
Anders Broman 2005-08-25 21:25:52 +00:00
parent 77a3d0991c
commit bd42437262
4 changed files with 704 additions and 169 deletions

View File

@ -303,6 +303,52 @@ FilterItem ::= CHOICE {
nonNullSetIntersection [7] IMPLICIT Attribute
}
-- IMPORTED from Attribute-ASN1Module {joint-iso-itu-t ms(9) smi(3) part2(2) asn1Module(2) 1}
AdministrativeState ::= ENUMERATED {locked(0), unlocked(1), shuttingDown(2)}
DiscriminatorConstruct ::= CMISFilter
Destination ::= CHOICE {single AE-title,
multiple SET OF AE-title
}
OperationalState ::= ENUMERATED {disabled(0), enabled(1)}
NameBinding ::= OBJECT IDENTIFIER
-- IMPORTED FROM ASN1DefinedTypesModule {itu-t recommendation m gnm(3100) informationModel(0) asn1Modules(2) asn1DefinedTypesModule(0)}
NameType ::= CHOICE {numericName INTEGER,
pString GraphicString
}
-- FROM ACSE
AE-title ::= CHOICE {
ae-title-form1 AE-title-form1,
ae-title-form2 AE-title-form2,
...
}
-- As defined in ITU-T Rec. X.650 | ISO/IEC 7498-3, an application-entity title is composed of an application process
-- title and an application-entity qualifier. The ACSE protocol provides for the transfer of an application-entity title
-- value by the transfer of its component values. However, the following data type is provided for International
-- Standards that reference a single syntactic structure for AE titles.
AE-title-form1 ::= Name
-- For access to The Directory (see ITU-T Rec. X.500 series | ISO/IEC 9594), an AE title has AE-title-form1. This value
-- can be constructed from AP-title-form1 and AE-qualifier-form1 values contained in an AARQ or AARE APDU.
-- A discussion of forming an AE-title-form1 from AP-title-form1 and AE-qualifier form1 may be found in itu-t
-- Rec X.665 | ISO/IEC 9834-6.
AE-title-form2 ::= OBJECT IDENTIFIER
Name ::= CHOICE {
rdnSequence RDNSequence
}
-- End Imports
CMISFilter ::= CHOICE {
item [8] FilterItem,
and [9] IMPLICIT SET OF CMISFilter,
@ -353,10 +399,11 @@ InvokeID ::= INTEGER
Opcode ::= INTEGER { m-EventReport(0), m-EventReport-Confirmed(1), m-Linked-Reply(2), m-Get(3), m-Set(4), m-Set-Confirmed(5), m-Action(6), m-Action-Confirmed(7), m-Create(8), m-Delete(9), m-CancelGet(10) }
InvokeLinkedId ::= CHOICE {
present [0] IMPLICIT InvokeId,
absent [1] IMPLICIT NULL
}
--InvokeLinkedId ::= CHOICE {
-- present [0] IMPLICIT InvokeId,
-- absent [1] IMPLICIT NULL
--}
InvokeLinkedId ::= INTEGER
InvokeIDType ::= InvokeId
@ -367,7 +414,7 @@ InvokeId ::= CHOICE {
Invoke ::= SEQUENCE {
invokeId InvokeId,
linkedId InvokeLinkedId OPTIONAL,
linkedId [0] IMPLICIT InvokeLinkedId OPTIONAL,
opcode Opcode,
argument Argument OPTIONAL
}

View File

@ -53,6 +53,12 @@ static int hf_cmip_actionType_OID = -1;
static int hf_cmip_eventType_OID = -1;
static int hf_cmip_attributeId_OID = -1;
static int hf_cmip_errorId_OID = -1;
static int hf_AdministrativeState = -1;
static int hf_DiscriminatorConstruct = -1;
static int hf_Destination = -1;
static int hf_NameBinding = -1;
static int hf_ObjectClass = -1;
static int hf_OperationalState = -1;
#include "packet-cmip-hf.c"
/* Initialize the subtree pointers */
@ -81,6 +87,62 @@ static char objectclass_identifier_id[BER_MAX_OID_STR_LEN];
#include "packet-cmip-fn.c"
static int
dissect_cmip_atribute_31(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
{
return dissect_cmip_AdministrativeState(FALSE, tvb, 0, pinfo, parent_tree, hf_AdministrativeState);
}
static int
dissect_cmip_atribute_35(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
{
return dissect_cmip_OperationalState(FALSE, tvb, 0, pinfo, parent_tree, hf_OperationalState);
}
static int
dissect_cmip_atribute_55(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
{
return dissect_cmip_Destination(FALSE, tvb, 0, pinfo, parent_tree,hf_Destination);
}
static int
dissect_cmip_atribute_56(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
{
return dissect_cmip_DiscriminatorConstruct(FALSE, tvb, 0, pinfo, parent_tree, hf_DiscriminatorConstruct);
}
static int
dissect_cmip_atribute_63(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
{
return dissect_cmip_NameBinding(FALSE, tvb, 0, pinfo, parent_tree, hf_NameBinding);
}
static int
dissect_cmip_atribute_65(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
{
return dissect_cmip_ObjectClass(FALSE, tvb, 0, pinfo, parent_tree, hf_ObjectClass);
}
static int
dissect_cmip_M3100_atribute_NameType(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
{
return dissect_cmip_NameType(FALSE, tvb, 0, pinfo, parent_tree, -1);
}
/* XXX this one should be broken out later and moved into the conformance file */
static void
dissect_cmip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
@ -157,6 +219,31 @@ void proto_register_cmip(void) {
{ "errorId", "cmip.errorId_OID",
FT_STRING, BASE_NONE, NULL, 0,
"errorId", HFILL }},
{ &hf_AdministrativeState,
{ "AdministrativeState", "cmip.AdministrativeState",
FT_UINT32, BASE_DEC, VALS(cmip_AdministrativeState_vals), 0,
"", HFILL }},
{ &hf_DiscriminatorConstruct,
{ "DiscriminatorConstruct", "cmip.DiscriminatorConstruct",
FT_UINT32, BASE_DEC, NULL, 0,
"", HFILL }},
{ &hf_Destination,
{ "Destination", "cmip.Destination",
FT_UINT32, BASE_DEC, NULL, 0,
"", HFILL }},
{ &hf_NameBinding,
{ "NameBinding", "cmip.NameBinding",
FT_STRING, BASE_NONE, NULL, 0,
"", HFILL }},
{ &hf_ObjectClass,
{ "ObjectClass", "cmip.ObjectClass",
FT_UINT32, BASE_DEC, VALS(cmip_ObjectClass_vals), 0,
"", HFILL }},
{ &hf_OperationalState,
{ "OperationalState", "cmip.OperationalState",
FT_UINT32, BASE_DEC, VALS(cmip_OperationalState_vals), 0,
"", HFILL }},
#include "packet-cmip-hfarr.c"
};
@ -179,5 +266,17 @@ void proto_register_cmip(void) {
/*--- proto_reg_handoff_cmip -------------------------------------------*/
void proto_reg_handoff_cmip(void) {
register_ber_oid_dissector("2.9.0.0.2", dissect_cmip, proto_cmip, "cmip");
register_ber_oid_dissector("2.9.3.2.7.31", dissect_cmip_atribute_31, proto_cmip, "smi2AttributeID (7) administrativeState(31)");
register_ber_oid_dissector("2.9.3.2.7.35", dissect_cmip_atribute_35, proto_cmip, "smi2AttributeID (7) operationalState(35)");
register_ber_oid_dissector("2.9.3.2.7.55", dissect_cmip_atribute_55, proto_cmip, "smi2AttributeID (7) destination(55)");
register_ber_oid_dissector("2.9.3.2.7.56", dissect_cmip_atribute_56, proto_cmip, "smi2AttributeID (7) discriminatorConstruct(56)");
register_ber_oid_dissector("2.9.3.2.7.63", dissect_cmip_atribute_63, proto_cmip, "smi2AttributeID (7) nameBinding(63)");
register_ber_oid_dissector("2.9.3.2.7.65", dissect_cmip_atribute_65, proto_cmip, "smi2AttributeID (7) objectClass(65)");
register_ber_oid_dissector("0.0.13.3100.0.7.20", dissect_cmip_M3100_atribute_NameType, proto_cmip, "equipmentId(20)");
register_ber_oid_dissector("0.0.13.3100.0.7.28", dissect_cmip_M3100_atribute_NameType, proto_cmip, "managedElementId(28)");
register_ber_oid_dissector("0.0.13.3100.0.7.30", dissect_cmip_M3100_atribute_NameType, proto_cmip, "networkId(30)");
register_ber_oid_name("2.9.3.2.3.4","eventForwardingDiscriminator(4)");
}

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
/* Do not modify this file. */
/* It is created automatically by the ASN.1 to Ethereal dissector compiler */
/* ./packet-cmip.h */
/* .\packet-cmip.h */
/* ../../tools/asn2eth.py -X -b -e -p cmip -c cmip.cnf -s packet-cmip-template CMIP.asn */
/* Input file: packet-cmip-template.h */