From Grame Lunt:
authorAnders Broman <anders.broman@ericsson.com>
Wed, 7 Dec 2005 23:20:11 +0000 (23:20 -0000)
committerAnders Broman <anders.broman@ericsson.com>
Wed, 7 Dec 2005 23:20:11 +0000 (23:20 -0000)
 updated X.500 dissectors to include DOP support.

The "dop" dissector is the renamed "x501" dissector consequently the asn/x501 directory should be removed. The patch includes the changes to epan/dissectors/Makefile.common to reflect this.

As the DOP dissection is not fully tested, I have disabled it by default for now (like DSP) but it can be enabled by the user.

svn path=/trunk/; revision=16726

23 files changed:
asn1/Makefile.nmake
asn1/dap/Makefile.nmake [new file with mode: 0644]
asn1/dap/packet-dap-template.c
asn1/disp/Makefile.nmake [new file with mode: 0644]
asn1/disp/disp.asn
asn1/disp/disp.cnf
asn1/disp/packet-disp-template.c
asn1/dop/Makefile [new file with mode: 0644]
asn1/dop/Makefile.nmake [new file with mode: 0644]
asn1/dop/dop-exp.cnf [moved from asn1/x501/x501-exp.cnf with 100% similarity]
asn1/dop/dop.asn [new file with mode: 0644]
asn1/dop/dop.cnf [new file with mode: 0644]
asn1/dop/packet-dop-template.c [new file with mode: 0644]
asn1/dop/packet-dop-template.h [moved from asn1/x501/packet-x501-template.h with 97% similarity]
asn1/dsp/Makefile.nmake [new file with mode: 0644]
asn1/dsp/dsp-exp.cnf
asn1/dsp/dsp.asn
asn1/dsp/dsp.cnf
asn1/dsp/packet-dsp-template.c
asn1/x501/Makefile [deleted file]
asn1/x501/packet-x501-template.c [deleted file]
asn1/x501/x501.asn [deleted file]
asn1/x501/x501.cnf [deleted file]

index 3daa479c1e288ba164fb829f951fe89d51015218..e1697b42f856d09f80c6d4bcffdb5cc5dd63a494 100644 (file)
@@ -8,6 +8,7 @@ all: \
        cmip    \
        cms     \
        dap     \
+       dop     \
        disp    \
        dsp     \
        ess     \
@@ -62,6 +63,7 @@ ber: \
        cmip    \
        cms     \
        dap     \
+       dop     \
        disp    \
        dsp     \
        ess     \
@@ -135,7 +137,11 @@ cms::
        cd..
 
 dap::
-       cd cms
+       cd dap
+       $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files
+       cd..
+dop::
+       cd dop
        $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files
        cd..
 
diff --git a/asn1/dap/Makefile.nmake b/asn1/dap/Makefile.nmake
new file mode 100644 (file)
index 0000000..08b0f84
--- /dev/null
@@ -0,0 +1,42 @@
+## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake
+#
+# $Id$
+
+include ../../config.nmake
+
+UNIX2DOS=$(PERL) ../../tools/unix2dos.pl
+
+PROTOCOL_NAME=dap
+DISSECTOR_FILES=packet-$(PROTOCOL_NAME).c packet-$(PROTOCOL_NAME).h
+
+all: generate_dissector
+
+generate_dissector: $(DISSECTOR_FILES)
+
+$(DISSECTOR_FILES): ../../tools/asn2eth.py dap.asn packet-$(PROTOCOL_NAME)-template.c packet-$(PROTOCOL_NAME)-template.h $(PROTOCOL_NAME).cnf
+!IFDEF PYTHON
+       $(PYTHON) ../../tools/asn2eth.py -X -b -e -p $(PROTOCOL_NAME) -c $(PROTOCOL_NAME).cnf -s packet-$(PROTOCOL_NAME)-template dap.asn
+!ELSE
+       @echo Error: You need Python to use asn2eth.py
+       @exit 1
+!ENDIF
+
+clean:
+       rm -f parsetab.py $(DISSECTOR_FILES)
+
+# Fix EOL in generated dissectors. Cygwin's python generates files with 
+# mixed EOL styles, which can't be commited to the SVN repository.
+# Stuff included from template and "cnf" files has "\r\n" on windows, while 
+# the generated stuff has "\n".
+
+fix_eol: generate_dissector
+       move packet-$(PROTOCOL_NAME).c packet-$(PROTOCOL_NAME).c.tmp
+       move packet-$(PROTOCOL_NAME).h packet-$(PROTOCOL_NAME).h.tmp
+       $(UNIX2DOS) < packet-$(PROTOCOL_NAME).c.tmp > packet-$(PROTOCOL_NAME).c
+       $(UNIX2DOS) < packet-$(PROTOCOL_NAME).h.tmp > packet-$(PROTOCOL_NAME).h
+       del /f packet-$(PROTOCOL_NAME).c.tmp packet-$(PROTOCOL_NAME).h.tmp
+
+copy_files: generate_dissector fix_eol
+       xcopy packet-$(PROTOCOL_NAME).c ..\..\epan\dissectors /d /y
+       xcopy packet-$(PROTOCOL_NAME).h ..\..\epan\dissectors /d /y
+
index f41da67774011a95c7a1b3f877e7347e4ed94dc6..695e5f0484b3ed3276501c16f1402722f99f4b1d 100644 (file)
@@ -48,7 +48,6 @@
 #include "packet-dap.h"
 #include <epan/strutil.h>
 
-
 /* we don't have a separate dissector for X519 - 
    most of DAP is defined in X511 */
 #define PNAME  "X.519 Directory Access Protocol"
@@ -294,7 +293,11 @@ void proto_register_dap(void) {
 
   /* Register our configuration options for DAP, particularly our port */
 
+#ifdef PREFERENCE_GROUPING
+  dap_module = prefs_register_protocol_subtree("OSI/X.500", proto_dap, prefs_register_dap);
+#else
   dap_module = prefs_register_protocol(proto_dap, prefs_register_dap);
+#endif
 
   prefs_register_uint_preference(dap_module, "tcp.port", "DAP TCP Port",
                                 "Set the port for DAP operations (if other"
diff --git a/asn1/disp/Makefile.nmake b/asn1/disp/Makefile.nmake
new file mode 100644 (file)
index 0000000..e15f04a
--- /dev/null
@@ -0,0 +1,42 @@
+## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake
+#
+# $Id$
+
+include ../../config.nmake
+
+UNIX2DOS=$(PERL) ../../tools/unix2dos.pl
+
+PROTOCOL_NAME=disp
+DISSECTOR_FILES=packet-$(PROTOCOL_NAME).c packet-$(PROTOCOL_NAME).h
+
+all: generate_dissector
+
+generate_dissector: $(DISSECTOR_FILES)
+
+$(DISSECTOR_FILES): ../../tools/asn2eth.py disp.asn packet-$(PROTOCOL_NAME)-template.c packet-$(PROTOCOL_NAME)-template.h $(PROTOCOL_NAME).cnf
+!IFDEF PYTHON
+       $(PYTHON) ../../tools/asn2eth.py -X -b -e -p $(PROTOCOL_NAME) -c $(PROTOCOL_NAME).cnf -s packet-$(PROTOCOL_NAME)-template disp.asn
+!ELSE
+       @echo Error: You need Python to use asn2eth.py
+       @exit 1
+!ENDIF
+
+clean:
+       rm -f parsetab.py $(DISSECTOR_FILES)
+
+# Fix EOL in generated dissectors. Cygwin's python generates files with 
+# mixed EOL styles, which can't be commited to the SVN repository.
+# Stuff included from template and "cnf" files has "\r\n" on windows, while 
+# the generated stuff has "\n".
+
+fix_eol: generate_dissector
+       move packet-$(PROTOCOL_NAME).c packet-$(PROTOCOL_NAME).c.tmp
+       move packet-$(PROTOCOL_NAME).h packet-$(PROTOCOL_NAME).h.tmp
+       $(UNIX2DOS) < packet-$(PROTOCOL_NAME).c.tmp > packet-$(PROTOCOL_NAME).c
+       $(UNIX2DOS) < packet-$(PROTOCOL_NAME).h.tmp > packet-$(PROTOCOL_NAME).h
+       del /f packet-$(PROTOCOL_NAME).c.tmp packet-$(PROTOCOL_NAME).h.tmp
+
+copy_files: generate_dissector fix_eol
+       xcopy packet-$(PROTOCOL_NAME).c ..\..\epan\dissectors /d /y
+       xcopy packet-$(PROTOCOL_NAME).h ..\..\epan\dissectors /d /y
+
index fc6adb709bf0fd8c1149a2b8c9729558578991eb..05a75c2598a9e4db4eb166b57e26bc119cb88643 100644 (file)
@@ -93,6 +93,9 @@ dSAShadowUnbind OPERATION ::= directoryUnbind
 --}
 
 -- types 
+
+EstablishParameter ::= NULL
+
 ModificationParameter ::= SEQUENCE {
   secondaryShadows  SET OF SupplierAndConsumers
 }
index a6436bc1bd24b784d614a5c21d4963538aedf851..1114e9dbec35a712894aa7eede8fa3d6e38f3884 100644 (file)
@@ -7,14 +7,14 @@ AuthenticationFramework       x509af
 ACSE-1                 acse
 DirectoryAbstractService       dap
 DistributedOperations          dsp
-DSAOperationalAttributeTypes   x501
+DSAOperationalAttributeTypes   dop
 OperationalBindingManagement   dap
 
-#.INCLUDE ../x501/x501-exp.cnf
 #.INCLUDE ../x509if/x509if-exp.cnf
 #.INCLUDE ../x509af/x509af-exp.cnf
 #.INCLUDE ../dap/dap-exp.cnf
 #.INCLUDE ../dsp/dsp-exp.cnf
+#.INCLUDE ../dop/dop-exp.cnf
 #.INCLUDE ../acse/acse-exp.cnf
 
 #.TYPE_RENAME
@@ -27,6 +27,21 @@ ModificationParameter/secondaryShadows       modifiedSecondaryShadows
 CoordinateShadowUpdateArgumentData/updateStrategy/standard     standardUpdate
 Information/signedInformation/information      information-data
 
+#.REGISTER
+
+ShadowingAgreementInfo B "dop.agreement.2.5.19.1"      "shadow-agreement"
+EstablishParameter     B "dop.establish.rolea.2.5.19.1"        "shadow-establish-rolea"
+EstablishParameter     B "dop.establish.roleb.2.5.19.1"        "shadow-establish-roleb"
+ModificationParameter  B "dop.modify.rolea.2.5.19.1"   "shadow-modify-rolea"
+ModificationParameter  B "dop.modify.roleb.2.5.19.1"   "shadow-modify-roleb"
+
+# these are useful to Thales DOP 
+ShadowingAgreementInfo B "dop.agreement.2.5.1.0.2.1"   "shadow-agreement"
+EstablishParameter     B "dop.establish.rolea.2.5.1.0.2.1"     "shadow-establish-rolea"
+EstablishParameter     B "dop.establish.roleb.2.5.1.0.2.1"     "shadow-establish-roleb"
+ModificationParameter  B "dop.modify.rolea.2.5.1.0.2.1"        "shadow-modify-rolea"
+ModificationParameter  B "dop.modify.roleb.2.5.1.0.2.1"        "shadow-modify-roleb"
+
 #.FN_PARS T_standard
        VAL_PTR = &update
 
index 079c2602b822ac902744250b29065775aa045539..9087fa8181e297004aef2c69f56731d387f56872 100644 (file)
@@ -45,7 +45,7 @@
 #include "packet-x509sat.h"
 #include "packet-crmf.h"
 
-#include "packet-x501.h"
+#include "packet-dop.h"
 #include "packet-dap.h"
 #include "packet-dsp.h"
 #include "packet-disp.h"
@@ -221,7 +221,11 @@ void proto_register_disp(void) {
 
   /* Register our configuration options for DISP, particularly our port */
 
+#ifdef PREFERENCE_GROUPING
+  disp_module = prefs_register_protocol_subtree("OSI/X.500", proto_disp, prefs_register_disp);
+#else
   disp_module = prefs_register_protocol(proto_disp, prefs_register_disp);
+#endif
 
   prefs_register_uint_preference(disp_module, "tcp.port", "DISP TCP Port",
                                 "Set the port for DISP operations (if other"
@@ -235,7 +239,7 @@ void proto_register_disp(void) {
 void proto_reg_handoff_disp(void) {
   dissector_handle_t handle = NULL;
 
-  /* #include "packet-disp-dis-tab.c" */
+  #include "packet-disp-dis-tab.c"
 
   /* APPLICATION CONTEXT */
 
@@ -254,6 +258,9 @@ void proto_reg_handoff_disp(void) {
     register_rtse_oid_dissector_handle("2.5.9.6", handle, 0, "id-as-directory-reliable-binding", FALSE); 
   } 
 
+  /* OPERATIONAL BINDING */
+  register_ber_oid_name("2.5.1.0.5.1", "id-op-binding-shadow");
+
   tpkt_handle = find_dissector("tpkt");
 
 }
diff --git a/asn1/dop/Makefile b/asn1/dop/Makefile
new file mode 100644 (file)
index 0000000..cf38385
--- /dev/null
@@ -0,0 +1,19 @@
+# $Id$
+
+DISSECTOR_FILES=packet-dop.c packet-dop.h
+
+all: generate_dissector
+
+generate_dissector: $(DISSECTOR_FILES)
+
+ASN_EXPORTS=           
+
+$(DISSECTOR_FILES): ../../tools/asn2eth.py dop.asn packet-dop-template.c packet-dop-template.h dop.cnf $(ASN_EXPORTS)
+       python ../../tools/asn2eth.py -X -b -e -p dop -c dop.cnf -s packet-dop-template  dop.asn
+
+clean:
+       rm -f parsetab.py $(DISSECTOR_FILES) *~
+
+copy_files: generate_dissector
+       cp $(DISSECTOR_FILES) ../../epan/dissectors
+
diff --git a/asn1/dop/Makefile.nmake b/asn1/dop/Makefile.nmake
new file mode 100644 (file)
index 0000000..3243b33
--- /dev/null
@@ -0,0 +1,42 @@
+## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake
+#
+# $Id$
+
+include ../../config.nmake
+
+UNIX2DOS=$(PERL) ../../tools/unix2dos.pl
+
+PROTOCOL_NAME=dop
+DISSECTOR_FILES=packet-$(PROTOCOL_NAME).c packet-$(PROTOCOL_NAME).h
+
+all: generate_dissector
+
+generate_dissector: $(DISSECTOR_FILES)
+
+$(DISSECTOR_FILES): ../../tools/asn2eth.py dop.asn packet-$(PROTOCOL_NAME)-template.c packet-$(PROTOCOL_NAME)-template.h $(PROTOCOL_NAME).cnf
+!IFDEF PYTHON
+       $(PYTHON) ../../tools/asn2eth.py -X -b -e -p $(PROTOCOL_NAME) -c $(PROTOCOL_NAME).cnf -s packet-$(PROTOCOL_NAME)-template dop.asn
+!ELSE
+       @echo Error: You need Python to use asn2eth.py
+       @exit 1
+!ENDIF
+
+clean:
+       rm -f parsetab.py $(DISSECTOR_FILES)
+
+# Fix EOL in generated dissectors. Cygwin's python generates files with 
+# mixed EOL styles, which can't be commited to the SVN repository.
+# Stuff included from template and "cnf" files has "\r\n" on windows, while 
+# the generated stuff has "\n".
+
+fix_eol: generate_dissector
+       move packet-$(PROTOCOL_NAME).c packet-$(PROTOCOL_NAME).c.tmp
+       move packet-$(PROTOCOL_NAME).h packet-$(PROTOCOL_NAME).h.tmp
+       $(UNIX2DOS) < packet-$(PROTOCOL_NAME).c.tmp > packet-$(PROTOCOL_NAME).c
+       $(UNIX2DOS) < packet-$(PROTOCOL_NAME).h.tmp > packet-$(PROTOCOL_NAME).h
+       del /f packet-$(PROTOCOL_NAME).c.tmp packet-$(PROTOCOL_NAME).h.tmp
+
+copy_files: generate_dissector fix_eol
+       xcopy packet-$(PROTOCOL_NAME).c ..\..\epan\dissectors /d /y
+       xcopy packet-$(PROTOCOL_NAME).h ..\..\epan\dissectors /d /y
+
similarity index 100%
rename from asn1/x501/x501-exp.cnf
rename to asn1/dop/dop-exp.cnf
diff --git a/asn1/dop/dop.asn b/asn1/dop/dop.asn
new file mode 100644 (file)
index 0000000..cea41dc
--- /dev/null
@@ -0,0 +1,691 @@
+-- Module DSAOperationalAttributeTypes (X.501:02/2001)
+DSAOperationalAttributeTypes {joint-iso-itu-t ds(5) module(1)
+  dsaOperationalAttributeTypes(22) 4} DEFINITIONS ::=
+BEGIN
+
+-- EXPORTS All 
+-- The types and values defined in this module are exported for use in the other ASN.1 modules contained 
+-- within the Directory Specifications, and for the use of other applications which will use them to access 
+-- Directory services. Other applications may use them for their own purposes, but this will not constrain
+-- extensions and modifications needed to maintain or improve the Directory service.
+IMPORTS
+  -- from ITU-T Rec. X.501 | ISO/IEC 9594-2
+  distributedOperations, id-doa, id-kmr, informationFramework,
+    opBindingManagement, selectedAttributeTypes, upperBounds
+    FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
+      usefulDefinitions(0) 4}
+  ATTRIBUTE, MATCHING-RULE, Name, Attribute, DistinguishedName,
+  RelativeDistinguishedName
+    FROM InformationFramework {joint-iso-itu-t ds(5) module(1)
+      informationFramework(1) 4}
+--  OperationalBindingID
+--    FROM OperationalBindingManagement {joint-iso-itu-t ds(5) module(1)
+--      opBindingManagement(18) 4}
+  -- from ITU-T Rec. X.518 | ISO/IEC 9594-4
+  AccessPoint, MasterAndShadowAccessPoints
+    FROM DistributedOperations {joint-iso-itu-t ds(5) module(1)
+      distributedOperations(3) 4}
+  -- from ITU-T Rec. X.520 | ISO/IEC 9594-6
+  bitStringMatch
+    FROM SelectedAttributeTypes {joint-iso-itu-t ds(5) module(1)
+      selectedAttributeTypes(5) 4}
+  PresentationAddress, ProtocolInformation
+    FROM SelectedAttributeTypes {joint-iso-itu-t ds(5) module(1)
+      selectedAttributeTypes(5) 4}
+  DirectoryBindArgument, DirectoryBindError, SecurityParameters
+    FROM DirectoryAbstractService {joint-iso-itu-t ds(5) module(1)
+      directoryAbstractService(2) 5}
+  -- from ITU-T Rec. X.509 | ISO/IEC 9594-8
+  AlgorithmIdentifier
+    FROM AuthenticationFramework {joint-iso-itu-t ds(5) module(1)
+      authenticationFramework(7) 4};
+
+
+
+
+
+-- data types 
+DSEType ::= BIT STRING {
+  root(0), -- root DSE 
+  glue(1), -- represents knowledge of a name only 
+  cp(2), -- context prefix 
+  entry(3), -- object entry 
+  alias(4), -- alias entry 
+  subr(5), -- subordinate reference 
+  nssr(6), -- non-specific subordinate reference 
+  supr(7), -- superior reference 
+  xr(8), -- cross reference 
+  admPoint(9), -- administrative point 
+  subentry(10), -- subentry 
+  shadow(11), -- shadow copy 
+  immSupr(13), -- immediate superior reference 
+  rhob(14), -- rhob information 
+  sa(15), -- subordinate reference to alias entry 
+  dsSubentry(16), -- DSA Specific subentry 
+  familyMember(17)} -- family member 
+
+SupplierOrConsumer ::= SET {
+--  COMPONENTS OF AccessPoint, - - supplier or consumer 
+  ae-title             [0]  Name,
+  address              [1]  PresentationAddress,
+  protocolInformation  [2]  SET --SIZE (1..MAX)-- OF ProtocolInformation OPTIONAL,
+  agreementID  [3]  OperationalBindingID
+}
+
+SupplierInformation ::= SET {
+--  COMPONENTS OF SupplierOrConsumer, - - supplier 
+  ae-title             [0]  Name,
+  address              [1]  PresentationAddress,
+  protocolInformation  [2]  SET --SIZE (1..MAX)-- OF ProtocolInformation OPTIONAL,
+  agreementID                 [3]  OperationalBindingID,
+  supplier-is-master   [4]  BOOLEAN DEFAULT TRUE,
+  non-supplying-master [5]  AccessPoint OPTIONAL
+}
+
+ConsumerInformation ::= SupplierOrConsumer -- consumer 
+
+SupplierAndConsumers ::= SET {
+--  COMPONENTS OF AccessPoint, - - supplier 
+  ae-title             [0]  Name,
+  address              [1]  PresentationAddress,
+  protocolInformation  [2]  SET --SIZE (1..MAX)-- OF ProtocolInformation OPTIONAL,
+  consumers           [3]  SET OF AccessPoint
+}
+
+-- attribute types 
+--dseType ATTRIBUTE ::= {
+--  WITH SYNTAX             DSEType
+--  EQUALITY MATCHING RULE  bitStringMatch
+--  SINGLE VALUE            TRUE
+--  NO USER MODIFICATION    TRUE
+--  USAGE                   dSAOperation
+--  ID                      id-doa-dseType
+--}
+
+--myAccessPoint ATTRIBUTE ::= {
+--  WITH SYNTAX             AccessPoint
+--  EQUALITY MATCHING RULE  accessPointMatch
+--  SINGLE VALUE            TRUE
+--  NO USER MODIFICATION    TRUE
+--  USAGE                   dSAOperation
+--  ID                      id-doa-myAccessPoint
+--}
+
+--superiorKnowledge ATTRIBUTE ::= {
+--  WITH SYNTAX             AccessPoint
+--  EQUALITY MATCHING RULE  accessPointMatch
+--  NO USER MODIFICATION    TRUE
+--  USAGE                   dSAOperation
+--  ID                      id-doa-superiorKnowledge
+--}
+
+--specificKnowledge ATTRIBUTE ::= {
+--  WITH SYNTAX             MasterAndShadowAccessPoints
+--  EQUALITY MATCHING RULE  masterAndShadowAccessPointsMatch
+--  SINGLE VALUE            TRUE
+--  NO USER MODIFICATION    TRUE
+--  USAGE                   distributedOperation
+--  ID                      id-doa-specificKnowledge
+--}
+
+--nonSpecificKnowledge ATTRIBUTE ::= {
+--  WITH SYNTAX             MasterAndShadowAccessPoints
+--  EQUALITY MATCHING RULE  masterAndShadowAccessPointsMatch
+--  NO USER MODIFICATION    TRUE
+--  USAGE                   distributedOperation
+--  ID                      id-doa-nonSpecificKnowledge
+--}
+
+--supplierKnowledge ATTRIBUTE ::= {
+--  WITH SYNTAX             SupplierInformation
+--  EQUALITY MATCHING RULE  supplierOrConsumerInformationMatch
+--  NO USER MODIFICATION    TRUE
+--  USAGE                   dSAOperation
+--  ID                      id-doa-supplierKnowledge
+--}
+
+--consumerKnowledge ATTRIBUTE ::= {
+--  WITH SYNTAX             ConsumerInformation
+--  EQUALITY MATCHING RULE  supplierOrConsumerInformationMatch
+--  NO USER MODIFICATION    TRUE
+--  USAGE                   dSAOperation
+--  ID                      id-doa-consumerKnowledge
+--}
+
+--secondaryShadows ATTRIBUTE ::= {
+--  WITH SYNTAX             SupplierAndConsumers
+--  EQUALITY MATCHING RULE  supplierAndConsumersMatch
+--  NO USER MODIFICATION    TRUE
+--  USAGE                   dSAOperation
+--  ID                      id-doa-secondaryShadows
+--}
+
+-- matching rules 
+--accessPointMatch MATCHING-RULE ::= {
+--  SYNTAX  Name
+--  ID      id-kmr-accessPointMatch
+--}
+
+--masterAndShadowAccessPointsMatch MATCHING-RULE ::= {
+--  SYNTAX  SET OF Name
+--  ID      id-kmr-masterShadowMatch
+--}
+
+--supplierOrConsumerInformationMatch MATCHING-RULE ::= {
+--  SYNTAX
+--    SET {ae-title              [0]  Name,
+--         agreement-identifier  [2]  INTEGER}
+--  ID      id-kmr-supplierConsumerMatch
+--}
+
+--supplierAndConsumersMatch MATCHING-RULE ::= {
+--  SYNTAX  Name
+--  ID      id-kmr-supplierConsumersMatch
+--}
+
+-- object identifier assignments 
+-- dsa operational attributes 
+--id-doa-dseType OBJECT IDENTIFIER ::=
+--  {id-doa 0}
+
+--id-doa-myAccessPoint OBJECT IDENTIFIER ::= {id-doa 1}
+
+--id-doa-superiorKnowledge OBJECT IDENTIFIER ::= {id-doa 2}
+
+--id-doa-specificKnowledge OBJECT IDENTIFIER ::= {id-doa 3}
+
+--id-doa-nonSpecificKnowledge OBJECT IDENTIFIER ::= {id-doa 4}
+
+--id-doa-supplierKnowledge OBJECT IDENTIFIER ::= {id-doa 5}
+
+--id-doa-consumerKnowledge OBJECT IDENTIFIER ::= {id-doa 6}
+
+--id-doa-secondaryShadows OBJECT IDENTIFIER ::= {id-doa 7}
+
+-- knowledge matching rules 
+--id-kmr-accessPointMatch OBJECT IDENTIFIER ::=
+--  {id-kmr 0}
+
+--id-kmr-masterShadowMatch OBJECT IDENTIFIER ::= {id-kmr 1}
+
+--id-kmr-supplierConsumerMatch OBJECT IDENTIFIER ::= {id-kmr 2}
+
+--id-kmr-supplierConsumersMatch OBJECT IDENTIFIER ::= {id-kmr 3}
+
+--END DSAOperationalAttributeTypes
+
+-- we include this here to reduce the number of dissectors
+-- Module OperationalBindingManagement (X.501:08/2005)
+--OperationalBindingManagement {joint-iso-itu-t ds(5) module(1)
+--  opBindingManagement(18) 5} DEFINITIONS ::=
+--BEGIN
+
+-- EXPORTS All 
+--ÿThe types and values defined in this module are exported for use in the other ASN.1 modules contained 
+--ÿwithin the Directory Specifications, and for the use of other applications which will use them to access 
+--ÿDirectory services. Other applications may use them for their own purposes, but this will not constrain
+--ÿextensions and modifications needed to maintain or improve the Directory service.
+--IMPORTS
+  -- from ITU-T Rec. X.501 | ISO/IEC 9594-2
+--  directoryAbstractService, directoryShadowAbstractService,
+--    distributedOperations, directoryOSIProtocols, enhancedSecurity,
+--    hierarchicalOperationalBindings, commonProtocolSpecification
+--    FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
+--      usefulDefinitions(0) 5}
+--  OPTIONALLY-PROTECTED-SEQ
+--    FROM EnhancedSecurity {joint-iso-itu-t ds(5) modules(1)
+--      enhancedSecurity(28) 5}
+--  hierarchicalOperationalBinding, nonSpecificHierarchicalOperationalBinding
+--    FROM HierarchicalOperationalBindings hierarchicalOperationalBindings
+  -- from ITU-T Rec. X.511 | ISO/IEC 9594-3
+--  CommonResultsSeq, directoryBind, directoryUnbind, securityError,
+--    SecurityParameters
+--    FROM DirectoryAbstractService {joint-iso-itu-t ds(5) module(1)
+--      directoryAbstractService(2) 5}
+  -- from ITU-T Rec. X.518 | ISO/IEC 9594-4
+--  AccessPoint
+--    FROM DistributedOperations {joint-iso-itu-t ds(5) module(1)
+--      distributedOperations(3) 5}
+  -- from ITU-T Rec. X.519 | ISO/IEC 9594-5
+--  id-err-operationalBindingError, id-op-establishOperationalBinding,
+--    id-op-modifyOperationalBinding, id-op-terminateOperationalBinding,
+--    OPERATION, ERROR
+--    FROM CommonProtocolSpecification commonProtocolSpecification
+--  APPLICATION-CONTEXT
+--    FROM DirectoryOSIProtocols directoryOSIProtocols
+  -- from ITU-T Rec. X.525 | ISO/IEC 9594-9
+--  shadowOperationalBinding
+--    FROM DirectoryShadowAbstractService directoryShadowAbstractService;
+
+-- bind and unbind 
+dSAOperationalBindingManagementBind OPERATION ::=
+  directoryBind
+
+DSAOperationalManagementBindArgument ::= DirectoryBindArgument
+DSAOperationalManagementBindResult ::= DirectoryBindArgument
+DSAOperationalManagementBindError ::= DirectoryBindError
+
+dSAOperationalBindingManagementUnbind OPERATION ::= directoryUnbind
+
+-- operations, arguments and results 
+--establishOperationalBinding OPERATION ::= {
+--  ARGUMENT  EstablishOperationalBindingArgument
+--  RESULT    EstablishOperationalBindingResult
+--  ERRORS    {operationalBindingError | securityError}
+--  CODE      id-op-establishOperationalBinding
+--}
+
+EstablishOperationalBindingArgumentData ::=
+--  OPTIONALLY-PROTECTED-SEQ
+--    {-- SEQUENCE {bindingType         [0]  --OPERATIONAL-BINDING.&id({OpBindingSet}) -- OBJECT IDENTIFIER,
+-- The following line, whilst wrong, helps with Thales DOP dissection
+--               bindingID           [1]  IMPLICIT OperationalBindingID OPTIONAL,
+               bindingID           [1]  OperationalBindingID OPTIONAL,
+               accessPoint         [2]  AccessPoint,
+               -- symmetric, Role A initiates, or Role B initiates 
+               initiator
+                 CHOICE {symmetric
+                           [3] -- OPERATIONAL-BINDING.&both.&EstablishParam
+                               -- ({OpBindingSet}{@bindingType}) -- ANY,
+                         roleA-initiates
+                           [4]  -- OPERATIONAL-BINDING.&roleA.&EstablishParam
+                                -- ({OpBindingSet}{@bindingType}) -- ANY,
+                         roleB-initiates
+                           [5] -- OPERATIONAL-BINDING.&roleB.&EstablishParam
+                               -- ({OpBindingSet}{@bindingType}) -- ANY }  OPTIONAL,
+               agreement
+                 [6]  -- OPERATIONAL-BINDING.&Agreement
+                      -- ({OpBindingSet}{@bindingType}) -- ANY,
+               valid               [7]  Validity DEFAULT {},
+               securityParameters  [8]  SecurityParameters OPTIONAL} --}
+
+-- expand OPTIONALLY-PROTECTED macro
+EstablishOperationalBindingArgument ::= CHOICE {
+  unsignedEstablishOperationalBindingArgument EstablishOperationalBindingArgumentData,
+  signedEstablishOperationalBindingArgument SEQUENCE {
+    establishOperationalBindingArgument        EstablishOperationalBindingArgumentData,
+    algorithmIdentifier                        AlgorithmIdentifier,
+    encrypted                          BIT STRING
+    }
+}
+
+OperationalBindingID ::= SEQUENCE {identifier  INTEGER,
+                                   version     INTEGER
+}
+
+Validity ::= SEQUENCE {
+  validFrom   [0]  CHOICE {now   [0]  NULL,
+                           time  [1]  Time} -- DEFAULT now:NULL --,
+  validUntil
+    [1]  CHOICE {explicitTermination  [0]  NULL,
+                 time                 [1]  Time
+  } -- DEFAULT explicitTermination:NULL 
+}
+
+Time ::= CHOICE {utcTime          UTCTime,
+                 generalizedTime  GeneralizedTime
+}
+
+EstablishOperationalBindingResult ::=
+--  OPTIONALLY-PROTECTED-SEQ
+--    {-- SEQUENCE {bindingType  [0] --OPERATIONAL-BINDING.&id({OpBindingSet}) -- OBJECT IDENTIFIER,
+-- The following line, whilst wrong, helps with Thales DOP dissection
+--               bindingID    [1] IMPLICIT OperationalBindingID OPTIONAL,
+               bindingID    [1]  OperationalBindingID OPTIONAL,
+               accessPoint  [2]  AccessPoint,
+               -- symmetric, Role A replies , or Role B replies 
+               initiator
+                 CHOICE {symmetric
+                           [3]  -- OPERATIONAL-BINDING.&both.&EstablishParam
+                                -- ({OpBindingSet}{@bindingType}) -- ANY,
+                         roleA-replies
+                           [4]  -- OPERATIONAL-BINDING.&roleA.&EstablishParam
+                                -- ({OpBindingSet}{@bindingType}) -- ANY,
+                         roleB-replies
+                           [5]  -- OPERATIONAL-BINDING.&roleB.&EstablishParam
+                                -- ({OpBindingSet}{@bindingType}) -- ANY } OPTIONAL,
+--               COMPONENTS OF CommonResultsSeq}}
+                      securityParameters  [30]  SecurityParameters OPTIONAL,
+              performer           [29]  DistinguishedName OPTIONAL,
+              aliasDereferenced   [28]  BOOLEAN DEFAULT FALSE,
+              notification        [27]  SEQUENCE SIZE (1..MAX) OF Attribute OPTIONAL}
+
+
+--modifyOperationalBinding OPERATION ::= {
+--  ARGUMENT  ModifyOperationalBindingArgument
+--  RESULT    ModifyOperationalBindingResult
+--  ERRORS    {operationalBindingError | securityError}
+--  CODE      id-op-modifyOperationalBinding
+--}
+
+ModifyOperationalBindingArgumentData ::=
+--  OPTIONALLY-PROTECTED-SEQ
+--    {--SEQUENCE {bindingType         [0]  --OPERATIONAL-BINDING.&id({OpBindingSet})-- OBJECT IDENTIFIER,
+-- The following line, whilst wrong, helps with Thales DOP dissection
+--               bindingID           [1] IMPLICIT OperationalBindingID,
+               bindingID           [1]  OperationalBindingID,
+               accessPoint         [2]  AccessPoint OPTIONAL,
+               -- symmetric, Role A initiates, or Role B initiates 
+               initiator
+                 CHOICE {symmetric
+                           [3]  -- OPERATIONAL-BINDING.&both.&ModifyParam
+                                -- ({OpBindingSet}{@bindingType}) -- ANY,
+                         roleA-initiates
+                           [4]  -- OPERATIONAL-BINDING.&roleA.&ModifyParam
+                                -- ({OpBindingSet}{@bindingType}) -- ANY,
+                         roleB-initiates
+                           [5]  -- OPERATIONAL-BINDING.&roleB.&ModifyParam
+                                -- ({OpBindingSet}{@bindingType}) -- ANY } OPTIONAL,
+               newBindingID        [6]  OperationalBindingID,
+               newAgreement
+                 [7]  -- OPERATIONAL-BINDING.&Agreement
+                      --  ({OpBindingSet}{@bindingType}) -- ANY OPTIONAL,
+               valid               [8]  Validity OPTIONAL,
+               securityParameters  [9]  SecurityParameters OPTIONAL} -- }
+
+
+ModifyOperationalBindingArgument ::= CHOICE {
+  unsignedModifyOperationalBindingArgument ModifyOperationalBindingArgumentData,
+  signedModifyOperationalBindingArgument SEQUENCE {
+    modifyOperationalBindingArgument   ModifyOperationalBindingArgumentData,
+    algorithmIdentifier                        AlgorithmIdentifier,
+    encrypted                          BIT STRING
+    }
+}
+
+ModifyOperationalBindingResult ::= CHOICE {
+  null       [0]  NULL,
+  protected  [1]  SEQUENCE {
+    modifyOperationalBindingResultData ModifyOperationalBindingResultData,
+    algorithmIdentifier                        AlgorithmIdentifier,
+    encrypted                          BIT STRING
+  }
+}
+
+ModifyOperationalBindingResultData ::= SEQUENCE {
+  newBindingID  OperationalBindingID,
+  bindingType
+    -- OPERATIONAL-BINDING.&id
+    -- ({OpBindingSet}) -- OBJECT IDENTIFIER,
+  newAgreement
+    -- OPERATIONAL-BINDING.&Agreement
+    -- ({OpBindingSet}{@.bindingType}) -- ANY,
+  valid         Validity OPTIONAL,
+  --COMPONENTS OF CommonResultsSeq
+  securityParameters  [30]  SecurityParameters OPTIONAL,
+  performer           [29]  DistinguishedName OPTIONAL,
+  aliasDereferenced   [28]  BOOLEAN DEFAULT FALSE,
+  notification        [27]  SEQUENCE SIZE (1..MAX) OF Attribute OPTIONAL
+  --          }}
+}
+
+--terminateOperationalBinding OPERATION ::= {
+--  ARGUMENT  TerminateOperationalBindingArgument
+--  RESULT    TerminateOperationalBindingResult
+--  ERRORS    {operationalBindingError | securityError}
+--  CODE      id-op-terminateOperationalBinding
+--}
+
+TerminateOperationalBindingArgumentData ::=
+--  OPTIONALLY-PROTECTED-SEQ
+--    {-- SEQUENCE {bindingType         [0]  --OPERATIONAL-BINDING.&id({OpBindingSet})-- OBJECT IDENTIFIER,
+-- The following line, whilst wrong, helps with Thales DOP dissection
+--               bindingID           [1] IMPLICIT OperationalBindingID,
+               bindingID           [1] OperationalBindingID,
+               -- symmetric, Role A initiates, or Role B initiates 
+               initiator
+                 CHOICE {symmetric
+                           [2]  -- OPERATIONAL-BINDING.&both.&TerminateParam
+                                -- ({OpBindingSet}{@bindingType}) -- ANY,
+                         roleA-initiates
+                           [3]  -- OPERATIONAL-BINDING.&roleA.&TerminateParam
+                                -- ({OpBindingSet}{@bindingType}) -- ANY,
+                         roleB-initiates
+                           [4]  -- OPERATIONAL-BINDING.&roleB.&TerminateParam
+                                --  ({OpBindingSet}{@bindingType}) -- ANY } OPTIONAL,
+               terminateAt         [5]  Time OPTIONAL,
+               securityParameters  [6]  SecurityParameters OPTIONAL} --}
+
+
+TerminateOperationalBindingArgument ::= CHOICE {
+  unsignedTerminateOperationalBindingArgument TerminateOperationalBindingArgumentData,
+  signedTerminateOperationalBindingArgument SEQUENCE {
+    terminateOperationalBindingArgument        TerminateOperationalBindingArgumentData,
+    algorithmIdentifier                        AlgorithmIdentifier,
+    encrypted                          BIT STRING
+    }
+}
+
+TerminateOperationalBindingResult ::= CHOICE {
+  null       [0]  NULL,
+  protected  [1]  SEQUENCE {
+    terminateOperationalBindingResultData      TerminateOperationalBindingResultData,
+    algorithmIdentifier                                AlgorithmIdentifier,
+    encrypted                                  BIT STRING
+  }
+}
+
+TerminateOperationalBindingResultData ::= SEQUENCE {
+  bindingID    OperationalBindingID,
+  bindingType
+    -- OPERATIONAL-BINDING.&id
+    -- ({OpBindingSet}) -- OBJECT IDENTIFIER,
+  terminateAt  GeneralizedTime OPTIONAL,
+  --COMPONENTS OF CommonResultsSeq
+  securityParameters  [30]  SecurityParameters OPTIONAL,
+  performer           [29]  DistinguishedName OPTIONAL,
+  aliasDereferenced   [28]  BOOLEAN DEFAULT FALSE,
+  notification        [27]  SEQUENCE SIZE (1..MAX) OF Attribute OPTIONAL
+--           }}
+}
+
+-- errors and parameters 
+--operationalBindingError ERROR ::= {
+--  PARAMETER OPTIONALLY-PROTECTED-SEQ  {OpBindingErrorParam}
+--  CODE                                id-err-operationalBindingError
+--}
+
+OpBindingErrorParam ::= SEQUENCE {
+  problem
+    [0]  ENUMERATED {invalidID(0), duplicateID(1), unsupportedBindingType(2),
+                     notAllowedForRole(3), parametersMissing(4),
+                     roleAssignment(5), invalidStartTime(6), invalidEndTime(7),
+                     invalidAgreement(8), currentlyNotDecidable(9),
+                     modificationNotAllowed(10)},
+  bindingType        [1]  --OPERATIONAL-BINDING.&id({OpBindingSet})-- OBJECT IDENTIFIER OPTIONAL,
+  agreementProposal
+    [2]  -- OPERATIONAL-BINDING.&Agreement({OpBindingSet}{@bindingType})-- ANY OPTIONAL,
+  retryAt            [3]  Time OPTIONAL,
+--  COMPONENTS OF CommonResultsSeq
+  securityParameters  [30]  SecurityParameters OPTIONAL,
+  performer           [29]  DistinguishedName OPTIONAL,
+  aliasDereferenced   [28]  BOOLEAN DEFAULT FALSE,
+  notification        [27]  SEQUENCE SIZE (1..MAX) OF Attribute OPTIONAL
+
+}
+
+-- information object classes 
+--OPERATIONAL-BINDING ::= CLASS {
+--  &Agreement    ,
+--  &Cooperation  OP-BINDING-COOP,
+--  &both         OP-BIND-ROLE OPTIONAL,
+--  &roleA        OP-BIND-ROLE OPTIONAL,
+--  &roleB        OP-BIND-ROLE OPTIONAL,
+--  &id           OBJECT IDENTIFIER UNIQUE
+--}
+--WITH SYNTAX {
+--  AGREEMENT &Agreement
+--  APPLICATION CONTEXTS &Cooperation
+--  [SYMMETRIC &both]
+--  [ASYMMETRIC
+--   [ROLE-A &roleA]
+--   [ROLE-B &roleB]]
+--  ID &id
+--}
+
+--OP-BINDING-COOP ::= CLASS {
+--  &applContext  APPLICATION-CONTEXT,
+--  &Operations   OPERATION OPTIONAL
+--}WITH SYNTAX {&applContext
+--              [APPLIES TO &Operations]
+--}
+
+--OP-BIND-ROLE ::= CLASS {
+--  &establish       BOOLEAN DEFAULT FALSE,
+--  &EstablishParam  OPTIONAL,
+--  &modify          BOOLEAN DEFAULT FALSE,
+--  &ModifyParam     OPTIONAL,
+--  &terminate       BOOLEAN DEFAULT FALSE,
+--  &TerminateParam  OPTIONAL
+--}
+--WITH SYNTAX {
+--  [ESTABLISHMENT-INITIATOR &establish]
+--  [ESTABLISHMENT-PARAMETER &EstablishParam]
+--  [MODIFICATION-INITIATOR &modify]
+--  [MODIFICATION-PARAMETER &ModifyParam]
+--  [TERMINATION-INITIATOR &terminate]
+--  [TERMINATION-PARAMETER &TerminateParam]
+--}
+
+--OpBindingSet OPERATIONAL-BINDING ::=
+--  {shadowOperationalBinding | hierarchicalOperationalBinding |
+--   nonSpecificHierarchicalOperationalBinding}
+
+--END - - OperationalBindingManagement
+
+-- Module HierarchicalOperationalBindings (X.518:08/2005)
+--HierarchicalOperationalBindings {joint-iso-itu-t ds(5) module(1)
+--  hierarchicalOperationalBindings(20) 5} DEFINITIONS ::=
+--BEGIN
+
+-- EXPORTS All 
+-- The types and values defined in this module are exported for use in the other ASN.1 modules contained 
+-- within the Directory Specifications, and for the use of other applications which will use them to access 
+-- Directory services. Other applications may use them for their own purposes, but this will not constrain
+-- extensions and modifications needed to maintain or improve the Directory service.
+--IMPORTS
+  -- from ITU-T Rec. X.501 | ISO/IEC 9594-2
+--  directoryOperationalBindingTypes, directoryOSIProtocols,
+--    distributedOperations, informationFramework, opBindingManagement
+--    FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
+--      usefulDefinitions(0) 5}
+--  Attribute, DistinguishedName, RelativeDistinguishedName
+--    FROM InformationFramework {joint-iso-itu-t ds(5) module(1)
+--      informationFramework(1) 5}
+--  OPERATIONAL-BINDING
+--    FROM OperationalBindingManagement {joint-iso-itu-t ds(5) module(1)
+--      opBindingManagement(18) 5}
+  -- from ITU-T Rec. X.518 | ISO/IEC 9594-4
+--  MasterAndShadowAccessPoints
+--    FROM DistributedOperations {joint-iso-itu-t ds(5) module(1)
+--      distributedOperations(3) 5}
+  -- from ITU-T Rec. X.519 | ISO/IEC 9594-5
+--  directorySystemAC
+--    FROM DirectoryOSIProtocols {joint-iso-itu-t ds(5) module(1)
+--      directoryOSIProtocols(37) 5}
+--  id-op-binding-hierarchical, id-op-binding-non-specific-hierarchical
+--    FROM DirectoryOperationalBindingTypes {joint-iso-itu-t ds(5) module(1)
+--      directoryOperationalBindingTypes(25) 5};
+
+-- types 
+HierarchicalAgreement ::= SEQUENCE {
+  rdn                [0]  RelativeDistinguishedName,
+  immediateSuperior  [1]  DistinguishedName
+}
+
+SuperiorToSubordinate ::= SEQUENCE {
+  contextPrefixInfo      [0]  DITcontext,
+  entryInfo              [1]  SET --SIZE (1..MAX)-- OF Attribute OPTIONAL,
+  immediateSuperiorInfo  [2]  SET --SIZE (1..MAX)-- OF Attribute OPTIONAL
+}
+
+DITcontext ::= SEQUENCE OF Vertex
+
+Vertex ::= SEQUENCE {
+  rdn           [0]  RelativeDistinguishedName,
+  admPointInfo  [1]  SET --SIZE (1..MAX)-- OF Attribute OPTIONAL,
+  subentries    [2]  SET --SIZE (1..MAX)-- OF SubentryInfo OPTIONAL,
+  accessPoints  [3]  MasterAndShadowAccessPoints OPTIONAL
+}
+
+SubentryInfo ::= SEQUENCE {
+  rdn   [0]  RelativeDistinguishedName,
+  info  [1]  SET OF Attribute
+}
+
+SubordinateToSuperior ::= SEQUENCE {
+  accessPoints  [0]  MasterAndShadowAccessPoints OPTIONAL,
+  alias         [1]  BOOLEAN DEFAULT FALSE,
+  entryInfo     [2]  SET --SIZE (1..MAX)-- OF Attribute OPTIONAL,
+  subentries    [3]  SET --SIZE (1..MAX)-- OF SubentryInfo OPTIONAL
+}
+
+SuperiorToSubordinateModification ::=
+--  SuperiorToSubordinate(WITH COMPONENTS {
+--                          ...,
+--                          entryInfo  ABSENT
+--                        })
+  SEQUENCE {
+  contextPrefixInfo      [0]  DITcontext,
+  immediateSuperiorInfo  [2]  SET --SIZE (1..MAX)-- OF Attribute OPTIONAL
+}
+
+NonSpecificHierarchicalAgreement ::= SEQUENCE {
+  immediateSuperior  [1]  DistinguishedName
+}
+
+NHOBSuperiorToSubordinate ::=
+--  SuperiorToSubordinate(WITH COMPONENTS {
+--                          ...,
+--                          entryInfo  ABSENT
+--                        })
+  SEQUENCE {
+  contextPrefixInfo      [0]  DITcontext,
+  immediateSuperiorInfo  [2]  SET --SIZE (1..MAX)-- OF Attribute OPTIONAL
+}
+
+NHOBSubordinateToSuperior ::= SEQUENCE {
+  accessPoints  [0]  MasterAndShadowAccessPoints OPTIONAL,
+  subentries    [3]  SET --SIZE (1..MAX)-- OF SubentryInfo OPTIONAL
+}
+
+-- operational binding information objects 
+--hierarchicalOperationalBinding OPERATIONAL-BINDING ::= {
+--  AGREEMENT             HierarchicalAgreement
+--  APPLICATION CONTEXTS  {{directorySystemAC}}
+--  ASYMMETRIC ROLE-A - - superior DSA - -
+--    {ESTABLISHMENT-INITIATOR  TRUE
+--     ESTABLISHMENT-PARAMETER  SuperiorToSubordinate
+--     MODIFICATION-INITIATOR   TRUE
+--     MODIFICATION-PARAMETER   SuperiorToSubordinateModification
+--     TERMINATION-INITIATOR    TRUE}
+--  ROLE-B - - subordinate DSA - -
+--    {ESTABLISHMENT-INITIATOR  TRUE
+--     ESTABLISHMENT-PARAMETER  SubordinateToSuperior
+--     MODIFICATION-INITIATOR   TRUE
+--     MODIFICATION-PARAMETER   SubordinateToSuperior
+--     TERMINATION-INITIATOR    TRUE}
+--  ID                    id-op-binding-hierarchical
+--}
+
+--nonSpecificHierarchicalOperationalBinding OPERATIONAL-BINDING ::= {
+--  AGREEMENT             NonSpecificHierarchicalAgreement
+--  APPLICATION CONTEXTS  {{directorySystemAC}}
+--  ASYMMETRIC ROLE-A - - superior DSA - -
+--    {ESTABLISHMENT-PARAMETER  NHOBSuperiorToSubordinate
+--     MODIFICATION-INITIATOR   TRUE
+--     MODIFICATION-PARAMETER   NHOBSuperiorToSubordinate
+--     TERMINATION-INITIATOR    TRUE}
+--  ROLE-B - - subordinate DSA - -
+--    {ESTABLISHMENT-INITIATOR  TRUE
+--     ESTABLISHMENT-PARAMETER  NHOBSubordinateToSuperior
+--     MODIFICATION-INITIATOR   TRUE
+--     MODIFICATION-PARAMETER   NHOBSubordinateToSuperior
+--     TERMINATION-INITIATOR    TRUE}
+--  ID                    id-op-binding-non-specific-hierarchical
+--}
+
+END -- HierarchicalOperationalBindings
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/asn1/dop/dop.cnf b/asn1/dop/dop.cnf
new file mode 100644 (file)
index 0000000..de6d15f
--- /dev/null
@@ -0,0 +1,152 @@
+#.MODULE_IMPORT
+SelectedAttributeTypes         x509sat
+DistributedOperations          dsp
+DirectoryAbstractService       dap
+InformationFramework           x509if
+AuthenticationFramework                x509af
+
+#.INCLUDE ../x509sat/x509sat-exp.cnf
+#.INCLUDE ../x509if/x509if-exp.cnf
+#.INCLUDE ../x509af/x509af-exp.cnf
+#.INCLUDE ../dsp/dsp-exp.cnf
+#.INCLUDE ../dap/dap-exp.cnf
+
+#.EXPORTS
+DSEType
+SupplierAndConsumers
+
+#.TYPE_RENAME
+EstablishOperationalBindingArgumentData/initiator      EstablishArgumentInitiator
+ModifyOperationalBindingArgumentData/initiator         ModifyArgumentInitiator
+TerminateOperationalBindingArgumentData/initiator      TerminateArgumentInitiator
+
+ModifyOperationalBindingArgumentData/newAgreement      ArgumentNewAgreement
+ModifyOperationalBindingResultData/newAgreement                ResultNewAgreement
+
+ModifyOperationalBindingResult/protected               ProtectedModifyResult
+TerminateOperationalBindingResult/protected            ProtectedTerminateResult
+
+EstablishOperationalBindingArgumentData/initiator/roleA-initiates      EstablishRoleAInitiates
+ModifyOperationalBindingArgumentData/initiator/roleA-initiates         ModifyRoleAInitiates
+TerminateOperationalBindingArgumentData/initiator/roleA-initiates      TerminateRoleAInitiates
+
+EstablishOperationalBindingArgumentData/initiator/roleB-initiates      EstablishRoleBInitiates
+ModifyOperationalBindingArgumentData/initiator/roleB-initiates         ModifyRoleBInitiates
+TerminateOperationalBindingArgumentData/initiator/roleB-initiates      TerminateRoleBInitiates
+
+EstablishOperationalBindingArgumentData/initiator/symmetric            EstablishSymmetric
+ModifyOperationalBindingArgumentData/initiator/symmetric               ModifySymmetric
+TerminateOperationalBindingArgumentData/initiator/symmetric            TerminateSymmetric
+
+
+#.FIELD_RENAME
+EstablishOperationalBindingArgumentData/initiator      establishInitiator
+ModifyOperationalBindingArgumentData/initiator         modifyInitiator
+TerminateOperationalBindingArgumentData/initiator      terminateInitiator
+
+ModifyOperationalBindingArgumentData/newAgreement      argumentNewAgreement
+ModifyOperationalBindingResultData/newAgreement                resultNewAgreement
+
+ModifyOperationalBindingResult/protected               protectedModifyResult
+TerminateOperationalBindingResult/protected            protectedTerminateResult
+
+EstablishOperationalBindingArgumentData/initiator/roleA-initiates      establishRoleAInitiates
+ModifyOperationalBindingArgumentData/initiator/roleA-initiates         modifyRoleAInitiates
+TerminateOperationalBindingArgumentData/initiator/roleA-initiates      terminateRoleAInitiates
+
+EstablishOperationalBindingArgumentData/initiator/roleB-initiates      establishRoleBInitiates
+ModifyOperationalBindingArgumentData/initiator/roleB-initiates         modifyRoleBInitiates
+TerminateOperationalBindingArgumentData/initiator/roleB-initiates      terminateRoleBInitiates
+
+EstablishOperationalBindingArgumentData/initiator/symmetric            establishSymmetric
+ModifyOperationalBindingArgumentData/initiator/symmetric               modifySymmetric
+TerminateOperationalBindingArgumentData/initiator/symmetric            terminateSymmetric
+
+TerminateOperationalBindingArgumentData/terminateAt                    terminateAtTime
+TerminateOperationalBindingResultData/terminateAt                      terminateAtGeneralizedTime
+
+
+#.REGISTER
+DSEType                                B "2.5.12.0" "id-doa-dseType"
+SupplierInformation            B "2.5.12.5" "id-doa-supplierKnowledge"
+ConsumerInformation            B "2.5.12.6" "id-doa-consumerKnowledge"
+SupplierAndConsumers           B "2.5.12.7" "id-doa-secondaryShadows"
+
+HierarchicalAgreement                  B "dop.agreement.2.5.19.2"      "hierarchical-agreement"
+SuperiorToSubordinate                  B "dop.establish.rolea.2.5.19.2" "hierarchical-establish-rolea"
+SuperiorToSubordinateModification      B "dop.modify.rolea.2.5.19.2" "hierarchical-modify-rolea"
+SubordinateToSuperior                  B "dop.establish.roleb.2.5.19.2" "hierarchical-establish-roleb"
+SubordinateToSuperior                  B "dop.modify.roleb.2.5.19.2"  "hierarchical-modify-roleb"
+
+NonSpecificHierarchicalAgreement       B "dop.agreement.2.5.19.3"      "non-specific-hierarchical-agreement"
+NHOBSuperiorToSubordinate              B "dop.establish.rolea.2.5.19.3"        "non-specific-hierarchical-establish-rolea"
+NHOBSuperiorToSubordinate              B "dop.modify.rolea.2.5.19.3" "non-specific-hierarchical-modify-rolea"
+NHOBSubordinateToSuperior              B "dop.establish.roleb.2.5.19.3" "non-specific-hierarchical-establish-roleb"
+NHOBSubordinateToSuperior              B "dop.modify.roleb.2.5.19.3"  "non-specific-hierarchical-modify-roleb"
+
+#.FN_PARS      OBJECT_IDENTIFIER
+       FN_VARIANT = _str VAL_PTR = &binding_type
+
+#.FN_BODY      EstablishSymmetric
+
+  offset = call_dop_oid_callback("dop.establish.symmetric", tvb, offset, pinfo, tree);
+
+#.FN_BODY      EstablishRoleAInitiates
+
+  offset = call_dop_oid_callback("dop.establish.rolea", tvb, offset, pinfo, tree);
+
+#.FN_BODY      EstablishRoleBInitiates
+
+  offset = call_dop_oid_callback("dop.establish.roleb", tvb, offset, pinfo, tree);
+
+#.FN_BODY      ModifySymmetric
+
+  offset = call_dop_oid_callback("dop.modify.symmetric", tvb, offset, pinfo, tree);
+
+#.FN_BODY      ModifyRoleAInitiates
+
+  offset = call_dop_oid_callback("dop.modify.rolea", tvb, offset, pinfo, tree);
+
+#.FN_BODY      ModifyRoleBInitiates
+
+  offset = call_dop_oid_callback("dop.modify.roleb", tvb, offset, pinfo, tree);
+
+#.FN_BODY      TerminateSymmetric
+
+  offset = call_dop_oid_callback("dop.terminate.symmetric", tvb, offset, pinfo, tree);
+
+#.FN_BODY      TerminateRoleAInitiates
+
+  offset = call_dop_oid_callback("dop.terminate.rolea", tvb, offset, pinfo, tree);
+
+#.FN_BODY      TerminateRoleBInitiates
+
+  offset = call_dop_oid_callback("dop.terminate.roleb", tvb, offset, pinfo, tree);
+
+#.FN_BODY      T_agreement
+
+  offset = call_dop_oid_callback("dop.agreement", tvb, offset, pinfo, tree);
+
+#.FN_BODY      T_symmetric
+
+  offset = call_dop_oid_callback("dop.establish.symmetric", tvb, offset, pinfo, tree); 
+
+#.FN_BODY      T_roleA_replies
+
+  offset = call_dop_oid_callback("dop.establish.rolea", tvb, offset, pinfo, tree);
+
+#.FN_BODY      T_roleB_replies
+
+  offset = call_dop_oid_callback("dop.establish.roleb", tvb, offset, pinfo, tree);
+
+#.FN_BODY      T_agreementProposal
+
+  offset = call_dop_oid_callback("dop.agreement", tvb, offset, pinfo, tree);
+
+#.FN_BODY      ResultNewAgreement
+
+  offset = call_dop_oid_callback("dop.agreement", tvb, offset, pinfo, tree);
+
+#.FN_BODY      ArgumentNewAgreement
+
+  offset = call_dop_oid_callback("dop.agreement", tvb, offset, pinfo, tree);
diff --git a/asn1/dop/packet-dop-template.c b/asn1/dop/packet-dop-template.c
new file mode 100644 (file)
index 0000000..ece0c6c
--- /dev/null
@@ -0,0 +1,293 @@
+/* packet-dop.c
+ * Routines for X.501 (DSA Operational Attributes)  packet dissection
+ * Graeme Lunt 2005
+ *
+ * $Id$
+ *
+ * Ethereal - Network traffic analyzer
+ * By Gerald Combs <gerald@ethereal.com>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+#include <epan/packet.h>
+#include <epan/prefs.h>
+#include <epan/conversation.h>
+
+#include <stdio.h>
+#include <string.h>
+
+#include "packet-ber.h"
+#include "packet-acse.h"
+#include "packet-ros.h"
+
+#include "packet-x509sat.h"
+#include "packet-x509af.h"
+#include "packet-x509if.h"
+#include "packet-dap.h"
+#include "packet-dsp.h"
+
+
+#include "packet-dop.h"
+
+#define PNAME  "X.501 Directory Operational Binding Management Protocol"
+#define PSNAME "DOP"
+#define PFNAME "dop"
+
+static guint global_dop_tcp_port = 102;
+static guint tcp_port = 0;
+static dissector_handle_t tpkt_handle = NULL;
+void prefs_register_dop(void); /* forwad declaration for use in preferences registration */
+
+/* Initialize the protocol and registered fields */
+int proto_dop = -1;
+
+static struct SESSION_DATA_STRUCTURE* session = NULL;
+static const char *binding_type = NULL; /* binding_type */
+
+static int call_dop_oid_callback(char *base_oid, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree);
+
+#include "packet-dop-hf.c"
+
+/* Initialize the subtree pointers */
+static gint ett_dop = -1;
+#include "packet-dop-ett.c"
+
+#include "packet-dop-fn.c"
+
+static int
+call_dop_oid_callback(char *base_oid, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+{
+  char *name = NULL;
+  char binding_param[BER_MAX_OID_STR_LEN];
+
+  sprintf(binding_param, "%s.%s", base_oid, binding_type ? binding_type : ""); 
+
+  name = get_ber_oid_name(binding_param);
+  proto_item_append_text(tree, " (%s)", name ? name : binding_param); 
+
+  return call_ber_oid_callback(binding_param, tvb, offset, pinfo, tree);
+
+}
+
+
+/*
+* Dissect DOP PDUs inside a ROS PDUs
+*/
+static void
+dissect_dop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
+{
+       int offset = 0;
+       int old_offset;
+       proto_item *item=NULL;
+       proto_tree *tree=NULL;
+       int (*dop_dissector)(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) = NULL;
+       char *dop_op_name;
+
+       /* do we have operation information from the ROS dissector?  */
+       if( !pinfo->private_data ){
+               if(parent_tree){
+                       proto_tree_add_text(parent_tree, tvb, offset, -1,
+                               "Internal error: can't get operation information from ROS dissector.");
+               } 
+               return  ;
+       } else {
+               session  = ( (struct SESSION_DATA_STRUCTURE*)(pinfo->private_data) );
+       }
+
+       if(parent_tree){
+               item = proto_tree_add_item(parent_tree, proto_dop, tvb, 0, -1, FALSE);
+               tree = proto_item_add_subtree(item, ett_dop);
+       }
+       if (check_col(pinfo->cinfo, COL_PROTOCOL))
+               col_set_str(pinfo->cinfo, COL_PROTOCOL, "DOP");
+       if (check_col(pinfo->cinfo, COL_INFO))
+               col_clear(pinfo->cinfo, COL_INFO);
+
+       switch(session->ros_op & ROS_OP_MASK) {
+       case (ROS_OP_BIND | ROS_OP_ARGUMENT):   /*  BindInvoke */
+         dop_dissector = dissect_dop_DSAOperationalManagementBindArgument;
+         dop_op_name = "DSA-Operational-Bind-Argument";
+         break;
+       case (ROS_OP_BIND | ROS_OP_RESULT):     /*  BindResult */
+         dop_dissector = dissect_dop_DSAOperationalManagementBindResult;
+         dop_op_name = "DSA-Operational-Bind-Result";
+         break;
+       case (ROS_OP_BIND | ROS_OP_ERROR):      /*  BindError */
+         dop_dissector = dissect_dop_DSAOperationalManagementBindError;
+         dop_op_name = "DSA-Operational-Management-Bind-Error";
+         break;
+       case (ROS_OP_INVOKE | ROS_OP_ARGUMENT): /*  Invoke Argument */
+         switch(session->ros_op & ROS_OP_OPCODE_MASK) {
+         case 100: /* establish */
+           dop_dissector = dissect_dop_EstablishOperationalBindingArgument;
+           dop_op_name = "Establish-Operational-Binding-Argument";
+           break;
+         case 101: /* terminate */
+           dop_dissector = dissect_dop_TerminateOperationalBindingArgument;
+           dop_op_name = "Terminate-Operational-Binding-Argument";
+           break;
+         case 102: /* modify */
+           dop_dissector = dissect_dop_ModifyOperationalBindingArgument;
+           dop_op_name = "Modify-Operational-Binding-Argument";
+           break;
+         default:
+           proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DOP Argument opcode (%d)",
+                               session->ros_op & ROS_OP_OPCODE_MASK);
+           break;
+         }
+         break;
+       case (ROS_OP_INVOKE | ROS_OP_RESULT):   /*  Return Result */
+         switch(session->ros_op & ROS_OP_OPCODE_MASK) {
+         case 100: /* establish */
+           dop_dissector = dissect_dop_EstablishOperationalBindingResult;
+           dop_op_name = "Establish-Operational-Binding-Result";
+           break;
+         case 101: /* terminate */
+           dop_dissector = dissect_dop_TerminateOperationalBindingResult;
+           dop_op_name = "Terminate-Operational-Binding-Result";
+           break;
+         case 102: /* modify */
+           dop_dissector = dissect_dop_ModifyOperationalBindingResult;
+           dop_op_name = "Modify-Operational-Binding-Result";
+           break;
+         default:
+           proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DOP Result opcode (%d)",
+                               session->ros_op & ROS_OP_OPCODE_MASK);
+           break;
+         }
+         break;
+       case (ROS_OP_INVOKE | ROS_OP_ERROR):    /*  Return Error */
+         switch(session->ros_op & ROS_OP_OPCODE_MASK) {
+         case 100: /* operational-binding */
+           dop_dissector = dissect_dop_OpBindingErrorParam;
+           dop_op_name = "Operational-Binding-Error";
+           break;
+         default:
+           proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DOP Error opcode (%d)",
+                               session->ros_op & ROS_OP_OPCODE_MASK);
+           break;
+         }
+         break;
+       default:
+         proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DOP PDU");
+         return;
+       }
+
+       if(dop_dissector) {
+         if (check_col(pinfo->cinfo, COL_INFO))
+           col_add_str(pinfo->cinfo, COL_INFO, dop_op_name);
+
+         while (tvb_reported_length_remaining(tvb, offset) > 0){
+           old_offset=offset;
+           offset=(*dop_dissector)(FALSE, tvb, offset, pinfo , tree, -1);
+           if(offset == old_offset){
+             proto_tree_add_text(tree, tvb, offset, -1,"Internal error, zero-byte DOP PDU");
+             offset = tvb_length(tvb);
+             break;
+           }
+         }
+       }
+}
+
+
+
+/*--- proto_register_dop -------------------------------------------*/
+void proto_register_dop(void) {
+
+  /* List of fields */
+  static hf_register_info hf[] =
+  {
+#include "packet-dop-hfarr.c"
+  };
+
+  /* List of subtrees */
+  static gint *ett[] = {
+    &ett_dop,
+#include "packet-dop-ettarr.c"
+  };
+
+  module_t *dop_module;
+
+  /* Register protocol */
+  proto_dop = proto_register_protocol(PNAME, PSNAME, PFNAME);
+
+  /* initially disable the protocol */
+  proto_set_decoding(proto_dop, FALSE);
+
+  register_dissector("dop", dissect_dop, proto_dop);
+
+  /* Register fields and subtrees */
+  proto_register_field_array(proto_dop, hf, array_length(hf));
+  proto_register_subtree_array(ett, array_length(ett));
+
+  /* Register our configuration options for DOP, particularly our port */
+
+#ifdef PREFERENCE_GROUPING
+  dop_module = prefs_register_protocol_subtree("OSI/X.500", proto_dop, prefs_register_dop);
+#else
+  dop_module = prefs_register_protocol(proto_dop, prefs_register_dop);
+#endif 
+
+  prefs_register_uint_preference(dop_module, "tcp.port", "DOP TCP Port",
+                                "Set the port for DOP operations (if other"
+                                " than the default of 102)",
+                                10, &global_dop_tcp_port);
+
+
+}
+
+
+/*--- proto_reg_handoff_dop --- */
+void proto_reg_handoff_dop(void) {
+  dissector_handle_t handle = NULL;
+
+#include "packet-dop-dis-tab.c" 
+  /* APPLICATION CONTEXT */
+
+  register_ber_oid_name("2.5.3.3", "id-ac-directory-operational-binding-management");
+
+  /* ABSTRACT SYNTAXES */
+    
+  /* Register DOP with ROS (with no use of RTSE) */
+  if((handle = find_dissector("dop"))) {
+    register_ros_oid_dissector_handle("2.5.9.4", handle, 0, "id-as-directory-operational-binding-management", FALSE); 
+  }
+
+  /* remember the tpkt handler for change in preferences */
+  tpkt_handle = find_dissector("tpkt");
+
+}
+
+void prefs_register_dop(void) {
+
+  /* de-register the old port */
+  /* port 102 is registered by TPKT - don't undo this! */
+  if((tcp_port != 102) && tpkt_handle)
+    dissector_delete("tcp.port", tcp_port, tpkt_handle);
+
+  /* Set our port number for future use */
+  tcp_port = global_dop_tcp_port;
+
+  if((tcp_port > 0) && (tcp_port != 102) && tpkt_handle)
+    dissector_add("tcp.port", global_dop_tcp_port, tpkt_handle);
+
+}
similarity index 97%
rename from asn1/x501/packet-x501-template.h
rename to asn1/dop/packet-dop-template.h
index 41851c3d8361e6302b218ccc8e63c81330ff6b60..198f056a411c75237e79ead9e54e31b5df59e517 100644 (file)
@@ -26,6 +26,6 @@
 #ifndef PACKET_X501_H
 #define PACKET_X501_H
 
-#include "packet-x501-exp.h"
+#include "packet-dop-exp.h"
 
 #endif  /* PACKET_X501_H */
diff --git a/asn1/dsp/Makefile.nmake b/asn1/dsp/Makefile.nmake
new file mode 100644 (file)
index 0000000..0eec828
--- /dev/null
@@ -0,0 +1,42 @@
+## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake
+#
+# $Id$
+
+include ../../config.nmake
+
+UNIX2DOS=$(PERL) ../../tools/unix2dos.pl
+
+PROTOCOL_NAME=dsp
+DISSECTOR_FILES=packet-$(PROTOCOL_NAME).c packet-$(PROTOCOL_NAME).h
+
+all: generate_dissector
+
+generate_dissector: $(DISSECTOR_FILES)
+
+$(DISSECTOR_FILES): ../../tools/asn2eth.py dsp.asn packet-$(PROTOCOL_NAME)-template.c packet-$(PROTOCOL_NAME)-template.h $(PROTOCOL_NAME).cnf
+!IFDEF PYTHON
+       $(PYTHON) ../../tools/asn2eth.py -X -b -e -p $(PROTOCOL_NAME) -c $(PROTOCOL_NAME).cnf -s packet-$(PROTOCOL_NAME)-template dsp.asn
+!ELSE
+       @echo Error: You need Python to use asn2eth.py
+       @exit 1
+!ENDIF
+
+clean:
+       rm -f parsetab.py $(DISSECTOR_FILES)
+
+# Fix EOL in generated dissectors. Cygwin's python generates files with 
+# mixed EOL styles, which can't be commited to the SVN repository.
+# Stuff included from template and "cnf" files has "\r\n" on windows, while 
+# the generated stuff has "\n".
+
+fix_eol: generate_dissector
+       move packet-$(PROTOCOL_NAME).c packet-$(PROTOCOL_NAME).c.tmp
+       move packet-$(PROTOCOL_NAME).h packet-$(PROTOCOL_NAME).h.tmp
+       $(UNIX2DOS) < packet-$(PROTOCOL_NAME).c.tmp > packet-$(PROTOCOL_NAME).c
+       $(UNIX2DOS) < packet-$(PROTOCOL_NAME).h.tmp > packet-$(PROTOCOL_NAME).h
+       del /f packet-$(PROTOCOL_NAME).c.tmp packet-$(PROTOCOL_NAME).h.tmp
+
+copy_files: generate_dissector fix_eol
+       xcopy packet-$(PROTOCOL_NAME).c ..\..\epan\dissectors /d /y
+       xcopy packet-$(PROTOCOL_NAME).h ..\..\epan\dissectors /d /y
+
index a6ddea438ae084523fa6f7e53f8ead868fb01d0a..ac4b9145e931fbecc82aace1701558cd6377849b 100644 (file)
@@ -2,6 +2,7 @@
 OperationProgress        BER_CLASS_UNI BER_UNI_TAG_SET
 ReferenceType            BER_CLASS_UNI BER_UNI_TAG_ENUMERATED
 AccessPoint              BER_CLASS_UNI BER_UNI_TAG_SET
+MasterAndShadowAccessPoints BER_CLASS_UNI BER_UNI_TAG_SET
 ContinuationReference    BER_CLASS_UNI BER_UNI_TAG_SET
 #.END
 
@@ -9,6 +10,7 @@ ContinuationReference    BER_CLASS_UNI BER_UNI_TAG_SET
 OperationProgress        TYPE = FT_NONE    DISPLAY = BASE_NONE  STRINGS = NULL  BITMASK = 0
 ReferenceType            TYPE = FT_UINT32  DISPLAY = BASE_DEC   STRINGS = VALS(dsp_ReferenceType_vals)  BITMASK = 0
 AccessPoint              TYPE = FT_NONE    DISPLAY = BASE_NONE  STRINGS = NULL  BITMASK = 0
+MasterAndShadowAccessPoints TYPE = FT_UINT32  DISPLAY = BASE_DEC   STRINGS = NULL  BITMASK = 0
 ContinuationReference    TYPE = FT_NONE    DISPLAY = BASE_NONE  STRINGS = NULL  BITMASK = 0
 #.END
 
index 3f72c1514c7a2e3576be4471ac5205eb8e878003..5bc30f58ea3fa6f4feb46afac7c87f7db079eaf2 100644 (file)
@@ -424,6 +424,8 @@ ReferenceType ::= ENUMERATED {
   supplier(5), master(6), immediateSuperior(7), self(8)}
 
 AccessPoint ::= SET {
+-- The following line, whilst wrong, helps with Thales DOP dissection
+--  ae-title             [0] IMPLICIT NULL,
   ae-title             [0]  Name,
   address              [1]  PresentationAddress,
   protocolInformation  [2]  SET --SIZE (1..MAX)-- OF ProtocolInformation OPTIONAL
index 085b07ba59cf3f2b55d06dc836696c83c3cd3c86..cef3b69c97a6a8f8b2f285601a74059e870d03c8 100644 (file)
@@ -19,6 +19,7 @@ OperationProgress
 ReferenceType
 ContinuationReference
 AccessPoint
+MasterAndShadowAccessPoints 
 
 #.TYPE_RENAME
 
index f91387a24f513588bffb84953505d24ab5468b1f..29a118b513d70be23530512dd698d1a72f88c13f 100644 (file)
@@ -298,7 +298,11 @@ void proto_register_dsp(void) {
 
   /* Register our configuration options for DSP, particularly our port */
 
+#ifdef PREFERENCE_GROUPING
+  dsp_module = prefs_register_protocol_subtree("OSI/X.500", proto_dsp, prefs_register_dsp);
+#else
   dsp_module = prefs_register_protocol(proto_dsp, prefs_register_dsp);
+#endif
 
   prefs_register_uint_preference(dsp_module, "tcp.port", "DSP TCP Port",
                                 "Set the port for DSP operations (if other"
diff --git a/asn1/x501/Makefile b/asn1/x501/Makefile
deleted file mode 100644 (file)
index 5606613..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-# $Id$
-
-DISSECTOR_FILES=packet-x501.c packet-x501.h
-
-all: generate_dissector
-
-generate_dissector: $(DISSECTOR_FILES)
-
-ASN_EXPORTS=           
-
-$(DISSECTOR_FILES): ../../tools/asn2eth.py x501.asn packet-x501-template.c packet-x501-template.h x501.cnf $(ASN_EXPORTS)
-       python ../../tools/asn2eth.py -X -b -e -p x501 -c x501.cnf -s packet-x501-template  x501.asn
-
-clean:
-       rm -f parsetab.py $(DISSECTOR_FILES) *~
-
-copy_files: generate_dissector
-       cp $(DISSECTOR_FILES) ../../epan/dissectors
-
diff --git a/asn1/x501/packet-x501-template.c b/asn1/x501/packet-x501-template.c
deleted file mode 100644 (file)
index 741291b..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-/* packet-x501.c
- * Routines for X.501 (DSA Operational Attributes)  packet dissection
- * Graeme Lunt 2005
- *
- * $Id$
- *
- * Ethereal - Network traffic analyzer
- * By Gerald Combs <gerald@ethereal.com>
- * Copyright 1998 Gerald Combs
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <glib.h>
-#include <epan/packet.h>
-#include <epan/conversation.h>
-
-#include <stdio.h>
-#include <string.h>
-
-#include "packet-ber.h"
-
-#include "packet-x509sat.h"
-#include "packet-x509if.h"
-#include "packet-dap.h"
-#include "packet-dsp.h"
-
-
-#include "packet-x501.h"
-
-#define PNAME  "X.501 Operational Attributes"
-#define PSNAME "X501"
-#define PFNAME "x501"
-
-/* Initialize the protocol and registered fields */
-int proto_x501 = -1;
-
-#include "packet-x501-hf.c"
-
-/* Initialize the subtree pointers */
-static gint ett_x501 = -1;
-#include "packet-x501-ett.c"
-
-#include "packet-x501-fn.c"
-
-/*--- proto_register_x501 -------------------------------------------*/
-void proto_register_x501(void) {
-
-  /* List of fields */
-  static hf_register_info hf[] =
-  {
-#include "packet-x501-hfarr.c"
-  };
-
-  /* List of subtrees */
-  static gint *ett[] = {
-    &ett_x501,
-#include "packet-x501-ettarr.c"
-  };
-
-  /* Register protocol */
-  proto_x501 = proto_register_protocol(PNAME, PSNAME, PFNAME);
-
-  /* Register fields and subtrees */
-  proto_register_field_array(proto_x501, hf, array_length(hf));
-  proto_register_subtree_array(ett, array_length(ett));
-
-}
-
-
-/*--- proto_reg_handoff_x501 --- */
-void proto_reg_handoff_x501(void) {
-
-#include "packet-x501-dis-tab.c" 
-
-}
diff --git a/asn1/x501/x501.asn b/asn1/x501/x501.asn
deleted file mode 100644 (file)
index 32a1fc0..0000000
+++ /dev/null
@@ -1,207 +0,0 @@
--- Module DSAOperationalAttributeTypes (X.501:02/2001)
-DSAOperationalAttributeTypes {joint-iso-itu-t ds(5) module(1)
-  dsaOperationalAttributeTypes(22) 4} DEFINITIONS ::=
-BEGIN
-
--- EXPORTS All 
--- The types and values defined in this module are exported for use in the other ASN.1 modules contained 
--- within the Directory Specifications, and for the use of other applications which will use them to access 
--- Directory services. Other applications may use them for their own purposes, but this will not constrain
--- extensions and modifications needed to maintain or improve the Directory service.
-IMPORTS
-  -- from ITU-T Rec. X.501 | ISO/IEC 9594-2
-  distributedOperations, id-doa, id-kmr, informationFramework,
-    opBindingManagement, selectedAttributeTypes, upperBounds
-    FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
-      usefulDefinitions(0) 4}
-  ATTRIBUTE, MATCHING-RULE, Name
-    FROM InformationFramework {joint-iso-itu-t ds(5) module(1)
-      informationFramework(1) 4}
-  OperationalBindingID
-    FROM OperationalBindingManagement {joint-iso-itu-t ds(5) module(1)
-      opBindingManagement(18) 4}
-  -- from ITU-T Rec. X.518 | ISO/IEC 9594-4
-  AccessPoint, MasterAndShadowAccessPoints
-    FROM DistributedOperations {joint-iso-itu-t ds(5) module(1)
-      distributedOperations(3) 4}
-  -- from ITU-T Rec. X.520 | ISO/IEC 9594-6
-  bitStringMatch
-    FROM SelectedAttributeTypes {joint-iso-itu-t ds(5) module(1)
-      selectedAttributeTypes(5) 4}
-  PresentationAddress, ProtocolInformation
-    FROM SelectedAttributeTypes {joint-iso-itu-t ds(5) module(1)
-      selectedAttributeTypes(5) 4};
-
-
--- data types 
-DSEType ::= BIT STRING {
-  root(0), -- root DSE 
-  glue(1), -- represents knowledge of a name only 
-  cp(2), -- context prefix 
-  entry(3), -- object entry 
-  alias(4), -- alias entry 
-  subr(5), -- subordinate reference 
-  nssr(6), -- non-specific subordinate reference 
-  supr(7), -- superior reference 
-  xr(8), -- cross reference 
-  admPoint(9), -- administrative point 
-  subentry(10), -- subentry 
-  shadow(11), -- shadow copy 
-  immSupr(13), -- immediate superior reference 
-  rhob(14), -- rhob information 
-  sa(15), -- subordinate reference to alias entry 
-  dsSubentry(16), -- DSA Specific subentry 
-  familyMember(17)} -- family member 
-
-SupplierOrConsumer ::= SET {
---  COMPONENTS OF AccessPoint, - - supplier or consumer 
-  ae-title             [0]  Name,
-  address              [1]  PresentationAddress,
-  protocolInformation  [2]  SET --SIZE (1..MAX)-- OF ProtocolInformation OPTIONAL,
-  agreementID  [3]  OperationalBindingID
-}
-
-SupplierInformation ::= SET {
---  COMPONENTS OF SupplierOrConsumer, - - supplier 
-  ae-title             [0]  Name,
-  address              [1]  PresentationAddress,
-  protocolInformation  [2]  SET --SIZE (1..MAX)-- OF ProtocolInformation OPTIONAL,
-  agreementID                 [3]  OperationalBindingID,
-  supplier-is-master   [4]  BOOLEAN DEFAULT TRUE,
-  non-supplying-master [5]  AccessPoint OPTIONAL
-}
-
-ConsumerInformation ::= SupplierOrConsumer -- consumer 
-
-SupplierAndConsumers ::= SET {
---  COMPONENTS OF AccessPoint, - - supplier 
-  ae-title             [0]  Name,
-  address              [1]  PresentationAddress,
-  protocolInformation  [2]  SET --SIZE (1..MAX)-- OF ProtocolInformation OPTIONAL,
-  consumers           [3]  SET OF AccessPoint
-}
-
--- attribute types 
---dseType ATTRIBUTE ::= {
---  WITH SYNTAX             DSEType
---  EQUALITY MATCHING RULE  bitStringMatch
---  SINGLE VALUE            TRUE
---  NO USER MODIFICATION    TRUE
---  USAGE                   dSAOperation
---  ID                      id-doa-dseType
---}
-
---myAccessPoint ATTRIBUTE ::= {
---  WITH SYNTAX             AccessPoint
---  EQUALITY MATCHING RULE  accessPointMatch
---  SINGLE VALUE            TRUE
---  NO USER MODIFICATION    TRUE
---  USAGE                   dSAOperation
---  ID                      id-doa-myAccessPoint
---}
-
---superiorKnowledge ATTRIBUTE ::= {
---  WITH SYNTAX             AccessPoint
---  EQUALITY MATCHING RULE  accessPointMatch
---  NO USER MODIFICATION    TRUE
---  USAGE                   dSAOperation
---  ID                      id-doa-superiorKnowledge
---}
-
---specificKnowledge ATTRIBUTE ::= {
---  WITH SYNTAX             MasterAndShadowAccessPoints
---  EQUALITY MATCHING RULE  masterAndShadowAccessPointsMatch
---  SINGLE VALUE            TRUE
---  NO USER MODIFICATION    TRUE
---  USAGE                   distributedOperation
---  ID                      id-doa-specificKnowledge
---}
-
---nonSpecificKnowledge ATTRIBUTE ::= {
---  WITH SYNTAX             MasterAndShadowAccessPoints
---  EQUALITY MATCHING RULE  masterAndShadowAccessPointsMatch
---  NO USER MODIFICATION    TRUE
---  USAGE                   distributedOperation
---  ID                      id-doa-nonSpecificKnowledge
---}
-
---supplierKnowledge ATTRIBUTE ::= {
---  WITH SYNTAX             SupplierInformation
---  EQUALITY MATCHING RULE  supplierOrConsumerInformationMatch
---  NO USER MODIFICATION    TRUE
---  USAGE                   dSAOperation
---  ID                      id-doa-supplierKnowledge
---}
-
---consumerKnowledge ATTRIBUTE ::= {
---  WITH SYNTAX             ConsumerInformation
---  EQUALITY MATCHING RULE  supplierOrConsumerInformationMatch
---  NO USER MODIFICATION    TRUE
---  USAGE                   dSAOperation
---  ID                      id-doa-consumerKnowledge
---}
-
---secondaryShadows ATTRIBUTE ::= {
---  WITH SYNTAX             SupplierAndConsumers
---  EQUALITY MATCHING RULE  supplierAndConsumersMatch
---  NO USER MODIFICATION    TRUE
---  USAGE                   dSAOperation
---  ID                      id-doa-secondaryShadows
---}
-
--- matching rules 
---accessPointMatch MATCHING-RULE ::= {
---  SYNTAX  Name
---  ID      id-kmr-accessPointMatch
---}
-
---masterAndShadowAccessPointsMatch MATCHING-RULE ::= {
---  SYNTAX  SET OF Name
---  ID      id-kmr-masterShadowMatch
---}
-
---supplierOrConsumerInformationMatch MATCHING-RULE ::= {
---  SYNTAX
---    SET {ae-title              [0]  Name,
---         agreement-identifier  [2]  INTEGER}
---  ID      id-kmr-supplierConsumerMatch
---}
-
---supplierAndConsumersMatch MATCHING-RULE ::= {
---  SYNTAX  Name
---  ID      id-kmr-supplierConsumersMatch
---}
-
--- object identifier assignments 
--- dsa operational attributes 
---id-doa-dseType OBJECT IDENTIFIER ::=
---  {id-doa 0}
-
---id-doa-myAccessPoint OBJECT IDENTIFIER ::= {id-doa 1}
-
---id-doa-superiorKnowledge OBJECT IDENTIFIER ::= {id-doa 2}
-
---id-doa-specificKnowledge OBJECT IDENTIFIER ::= {id-doa 3}
-
---id-doa-nonSpecificKnowledge OBJECT IDENTIFIER ::= {id-doa 4}
-
---id-doa-supplierKnowledge OBJECT IDENTIFIER ::= {id-doa 5}
-
---id-doa-consumerKnowledge OBJECT IDENTIFIER ::= {id-doa 6}
-
---id-doa-secondaryShadows OBJECT IDENTIFIER ::= {id-doa 7}
-
--- knowledge matching rules 
---id-kmr-accessPointMatch OBJECT IDENTIFIER ::=
---  {id-kmr 0}
-
---id-kmr-masterShadowMatch OBJECT IDENTIFIER ::= {id-kmr 1}
-
---id-kmr-supplierConsumerMatch OBJECT IDENTIFIER ::= {id-kmr 2}
-
---id-kmr-supplierConsumersMatch OBJECT IDENTIFIER ::= {id-kmr 3}
-
-END -- DSAOperationalAttributeTypes
-
--- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
-
diff --git a/asn1/x501/x501.cnf b/asn1/x501/x501.cnf
deleted file mode 100644 (file)
index 0c37bfe..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#.MODULE_IMPORT
-SelectedAttributeTypes x509sat
-DistributedOperations  dsp
-OperationalBindingManagement   dap
-InformationFramework           x509if
-
-#.INCLUDE ../x509sat/x509sat-exp.cnf
-#.INCLUDE ../dap/dap-exp.cnf
-#.INCLUDE ../dsp/dsp-exp.cnf
-
-#.EXPORTS
-DSEType
-SupplierAndConsumers
-
-#.REGISTER
-DSEType                                B "2.5.12.0" "id-doa-dseType"
-SupplierInformation            B "2.5.12.5" "id-doa-supplierKnowledge"
-ConsumerInformation            B "2.5.12.6" "id-doa-consumerKnowledge"
-SupplierAndConsumers           B "2.5.12.7" "id-doa-secondaryShadows"