CONTENTS Preface Intended Audience Document Structure Associated Documents Conventions Chapter 1. Overview of Digital DCE 1.1 Kit Contents 1.2 Contents of Each Kit 1.2.1 Runtime Services Kit 1.2.2 Application Developer's Kit 1.2.3 CDS Server Kit 1.2.4 Security Server Kit 1.3 Platforms and Network Transports Supported by Digital DCE 1.4 Online Help and Online Manual Pages 1.5 Restrictions When Using Digital DCE 1.6 Threads 1.7 Using RPC Without CDS or Security 1.8 Features of Digital DCE Not Included with the OSF DCE 1.8.1 CDS Enhanced Browser 1.8.2 CDS Subtree Commands 1.8.3 IDL Compiler Enhancements 1.8.4 The RPC Event Logger Utility 1.8.5 Name Service Interface Daemon (nsid) for Microsoft RPC 1.8.6 DCL Interfaces to DCE Tools 1.8.7 Integrated Login 1.8.8 Object-Oriented RPC 1.8.9 Resource Broker Chapter 2. DCE System Configuration 2.1 Using the DCE System Configuration Utility 2.2 Kerberos Chapter 3. Interoperability and Compatibility 3.1 Application Development in the OpenVMS POSIX Environment 3.1.1 Symbolic Links 3.1.2 C Compiler Usage 3.1.3 OpenVMS DCE Login Credentials 3.1.4 Executing OpenVMS DCE Utility Programs in the POSIX Environment 3.2 Interoperability with DECrpc 3.3 Compatibility with DECrpc 3.3.1 Object Compatibility 3.3.2 Interface Compatibility 3.3.3 Source Compatibility 3.3.4 Product Coexistence 3.3.5 Directory Service Compatibility 3.4 Interoperability with Other DCE Systems 3.5 Interoperability with Microsoft RPC 3.6 Understanding and Using OSF DCE and VMScluster Technologies 3.6.1 Similarities Between VMScluster Environments and DCE Cells 3.6.2 Differences Between VMScluster Environments and DCE Cells 3.6.3 Limitations on Using DCE in a VMScluster System 3.6.4 DCE and VMScluster Configuration Issues Chapter 4. Using Digital DCE with DECnet 4.1 DECnet and DCE Startup and Shutdown Sequences 4.2 Running DCE Server Applications Using DECnet 4.2.1 Server Account Requirements 4.2.2 DECnet Endpoint Naming 4.3 DECnet String Binding Formats Supported in this Release Chapter 5. Directory Names, Filenames, and Locations Across DCE Platforms 5.1 DCE Directories 5.2 Setup Utilities 5.3 Executable Images 5.4 Library Images 5.5 Message Files 5.6 Development Files 5.7 Sample Applications Chapter 6. Application Development Considerations and Differences 6.1 Building Applications 6.1.1 Linking DCE Applications 6.1.2 Considerations for Structure Alignment with C Compilers 6.1.3 Considerations for Building DCE Applications Using OpenVMS Object 6.2 Running Applications 6.3 Translating OSF DCE Documentation Examples to OpenVMS Chapter 7. Integrated Login 7.1 Overview 7.2 Integrated Login Components 7.3 Integrated Login Procedure 7.4 Changing Your DCE Password 7.5 Enabling Interactive Login on Your OpenVMS System 7.5.1 Disabling a System Account for Integrated Login 7.5.2 Password Expiration Dates on User Accounts 7.5.3 Potential Integrated Login and SYSGEN Problems 7.6 DCE Authorization File (DCE$UAF) 7.6.1 DCE$UAF File Information 7.6.2 Running the DCE$UAF Utility 7.7 DCE Registry Import 7.7.1 DCE IMPORT File Information 7.7.2 Running DCE IMPORT 7.8 DCE Registry Export 7.8.1 DCE EXPORT File Information 7.8.2 Running DCE EXPORT 7.9 Frequently Asked Questions for Users 7.10 Frequently Asked Questions for System Administrators Chapter 8. Intercell Naming 8.1 Intercell Naming with DNS 8.2 Intercell Naming Example -DNS 8.3 Intercell Naming with X.500 8.4 Intercell Naming Example -X.500 8.5 Summary 8.5.1 DNS Bind 8.5.2 X.500 Chapter 9. Enhanced Browser 9.1 Displaying the Namespace 9.2 Filtering the Namespace Display Chapter 10. Using the CDS Subtree Commands to Restructure CDS Directories 10.1 Overview of the Merge Procedure 10.2 Basic Merge and Append Operations 10.2.1 Performing a Basic Merge Operation 10.2.2 Performing a Basic Append Operation 10.3 Using the Failures File 10.3.1 Handling Duplicate Names 10.3.2 Handling Unreachable Name Failures 10.4 Merging CDS Directories with a Single Command 10.5 Merging CDS Directories into a Foreign Cell 10.6 Backing Up Namespace Information 10.6.1 Using Replication to Back Up Namespace Information 10.6.2 Using the Dump/Merge Facilities to Back Up Directories and Their 10.6.3 Using Operating System Backups Chapter 11. The Generic Security Service Application Programming Interface 11.1 About the Generic Security Service API 11.2 GSSAPI and Authentication 11.2.1 GSSAPI and Protection Levels 11.2.2 A Walkthrough of DCE Application Authentication Using GSSAPI 11.3 GSSAPI Credentials 11.3.1 Using Default Credentials 11.3.1.1 Initiate a Security Context 11.3.1.2 Accept a Security Context 11.3.2 Creating New Credential Handles 11.3.2.1 Initiating a Security Context with New Credential Handles 11.3.2.2 Accepting a Security Context Using New Credential Handles Chapter 12. Object-Oriented RPC 12.1 Overview of C++ 12.1.1 Class Definition 12.1.2 Objects 12.1.3 Class Inheritance 12.1.4 Polymorphic Operations 12.1.5 Class Operations 12.2 Developing an Application with Object-Oriented RPC 12.2.1 Generated C++ Class Hierarchy 12.2.1.1 Abstract Base Class 12.2.1.2 Proxy Class 12.2.1.3 Manager Class 12.2.2 Specifying the Default Entry Point Vector 12.2.3 Obtaining an Object Reference 12.3 Using the Features of Object- Oriented RPC 12.3.1 Automatically Compiling Stub Files 12.3.2 Controlling the Location of an Included File 12.3.3 Generating Static Member Functions for Interfaces 12.3.4 Specifying Object Interfaces as IDL Parameters 12.3.5 Registering Objects in the DCE Namespace 12.3.6 Binding to DCE Objects 12.3.6.1 Binding to Remote Objects by Name 12.3.6.2 Binding to Remote Objects by Binding Handle 12.3.6.3 Binding to Remote Objects by UUID 12.3.7 Controlling Object Lookup Management 12.3.8 Propagating an Exception for Object Lookup Faults 12.3.9 Creating Dynamic Remote Objects 12.3.10 Managing Object References 12.3.11 Using Object Location Transparency 12.3.11.1 Intraprocess Location Independence 12.3.11.2 Interprocess Location Independence 12.3.11.3 Specifying Local Objects as Parameters 12.3.12 Offering Multiple Object Implementations of a Common Interface 12.3.13 Enabling the C++ Reference Operator on IDL Parameters Chapter 13. IDL Compiler Enhancements 13.1 The -standard Build Option 13.2 Stub Auxiliary Files 13.3 DEC Language-Sensitive Editor (LSE) Templates on OpenVMS 13.4 Binding Handle Callout 13.4.1 Attribute Configuration File 13.4.2 Generated Header File 13.4.3 Generated Client Stub 13.4.4 Binding Callout Routine 13.4.4.1 Error Handling 13.4.5 Predefined Binding Callout Routine 13.5 Extensions to IDL Data Structures 13.5.1 Unique Pointer 13.5.2 Array Extensions 13.5.2.1 The m i n _ i s Attribute 13.5.2.2 Conformance in Dimensions Other Than the First 13.5.3 Nonencapsulated Unions 13.5.4 Defining Exceptions with IDL 13.6 Syntax for Unions 13.7 Operation Attributes: Memory Management Chapter 14. IDL Encoding Services 14.1 Attribute Configuration File (ACF) Attributes 14.2 Buffering Styles 14.2.1 Incremental Encoding 14.2.2 Fixed Buffer Encoding 14.2.3 Dynamic Buffer Encoding 14.2.4 Incremental Decoding 14.2.5 Buffer Decoding 14.3 IDL Encoding Services Handles 14.3.1 Restrictions on the Use of Handles 14.3.2 Obtaining a Handle 14.3.3 Incremental Encoding Handle 14.3.4 Fixed Buffer Encoding Handle 14.3.5 Dynamic Buffer Encoding Handle 14.3.6 Incremental Decoding Handle 14.3.7 Buffer Decoding Handle 14.3.8 Releasing a Handle 14.4 Programming Example 14.5 Performing Multiple Operations on a Single Handle 14.6 Obtaining the Identity of an Encoding 14.7 Error Reporting 14.7.1 rpc_s_no_memory 14.7.2 rpc_s_ss_bad_buffer 14.7.3 rpc_s_ss_bad_es_action 14.7.4 rpc_s_ss_wrong_es_version 14.7.5 rpc_s_tsyntaxes_unsupported 14.7.6 rpc_s_unknown_if Chapter 15. Support for International Characters 15.1 The I-char Type 15.2 Tag-Setting 15.3 Example Use of Attributes 15.4 Restrictions on the Use of Attributes 15.4.1 Data Order Constraints 15.5 Interaction Restrictions 15.6 Pointer Restrictions 15.7 Local and Network Types 15.7.1 Fixed Array 15.7.2 Varying Array 15.7.3 Conformant Array 15.7.4 Conformant Varying Array 15.7.5 Storage Management Considerations 15.8 Codeset Conversion Routines 15.8.1 The idl_cs_convert_t Type 15.8.2 Routine Usage 15.8.3 Marshalling 15.8.4 Unmarshalling 15.9 Interaction with IDL Encoding Services Chapter 16. Application Debugging with the RPC Event Logger 16.1 Introduction to the RPC Event Logging Facility 16.2 Generating RPC Event Logs 16.2.1 Enabling Event Logging 16.2.1.1 Universal IDL Compiler Interface 16.2.1.2 Digital Command Language Interface for the Event Logger 16.2.2 Using the -trace Option 16.2.3 Combining Event Logs 16.2.4 Disabling Event Logging 16.3 Using Symbols and the Log Manager to Control Logging Information 16.3.1 Controlling Logged Events with a Symbol 16.3.2 Controlling Logged Events with the RPC Log Manager 16.4 Using the -trace Option, Symbols, and the Log Manager Together 16.5 Using Event Logs to Debug Applications 16.6 Event Names and Descriptions Chapter 17. Development of Distributed Applications with FORTRAN 17.1 Interoperability and Portability 17.2 Remote Procedure Calls Using FORTRAN - Example 17.2.1 Where to Obtain the Example Application Files 17.2.2 The Interface File and Data File (PAYROLL.IDL and PAYROLL.DAT) 17.2.3 Compiling the Interface with the IDL Compiler 17.2.4 The Client Application Code for the Interface (PRINT_PAY.FOR) 17.2.5 The Server Initialization File (SERVER.C) 17.2.6 The Server Application Code for the Interface (MANAGER.FOR) 17.2.7 Client and Server Bindings 17.2.8 Building and Running the Example (PAYROLL.COM) 17.2.9 Example Output 17.3 Remote Procedure Calls Using FORTRAN - Reference 17.3.1 The FORTRAN Compiler Option 17.3.2 Restrictions on the Use of FORTRAN 17.3.3 IDL Constant Declarations 17.3.4 Type Mapping 17.3.5 Operations 17.3.5.1 Parameter Passing by Reference 17.3.5.2 Function Results 17.3.6 Include Files 17.3.7 The NBASE.FOR File 17.3.8 IDL Attributes 17.3.8.1 The transmit_as Attribute 17.3.8.2 The string Attribute 17.3.8.3 The context_handle Attribute 17.3.8.4 The Array Attributes on [ref] Pointer Parameters 17.3.9 ACF Attributes 17.3.9.1 The implicit_handle ACF Attribute 17.3.9.2 The represent_as ACF Attribute Chapter 18. Troubleshooting 18.1 General Troubleshooting Steps 18.2 Time Problems During Configuration 18.2.1 Time Zone Configuration 18.2.2 Time Synchronization Problems 18.2.3 Time OPCOM messages 18.3 Client/Server Problems 18.3.1 OpenVMS Client System 18.3.2 Server System 18.4 Configuration and CDS 18.5 Configuration and Naming 18.6 Modifications to DEC TCP/IP Services (UCX) 18.7 Principal Quota Exhausted 18.8 Linking RPC Stub Modules into Shareable Images 18.8.1 Errors Creating a Shareable Image 18.8.2 Errors Linking Against a Shareable Image 18.8.3 Errors Activating Shareable Images 18.9 Integrated Login Problems 18.9.1 No Logical Name Match Error When Integrated Login Is Enabled 18.9.2 Potential Integrated Login and SYSGEN Problems Chapter 19. Example Programs 19.1 RPC Test Program #1 19.2 RPC Test Program #2 19.3 Object-Oriented RPC Test Program #1 19.3.1 How to Build the Application on OpenVMS 19.3.2 How to Run the Application on OpenVMS 19.3.3 How to Build the Application under POSIX 19.3.4 How to Run the Application under POSIX 19.3.5 Application Files 19.4 Object-Oriented RPC Test Program #2 19.4.1 How to Build the Application on OpenVMS 19.4.2 How to Run the Application on OpenVMS 19.4.3 How to Build the Application under POSIX 19.4.4 How to Run the Application under POSIX: 19.4.5 Application Files 19.5 Book Distributed Calendar Program 19.6 System Exerciser Example Program 19.7 Payroll Distributed Application 19.8 RPC Phonebook Program 19.8.1 Building the phnbk Client and Server Programs 19.8.2 Starting the phnbk Server 19.8.3 Starting the phnbk Client 19.9 Other Example Programs Appendix A. Using NSedit A.1 Starting NSedit A.2 NSedit Functionality A.2.1 Tree Browser Window A.2.2 Entry Attributes Window A.2.3 ACL Window A.3 Common Uses of NSedit A.3.1 Expanding and Collapsing Tree Nodes A.3.2 Creating an Object or a Directory A.3.3 Creating and Viewing a Soft Link A.3.4 Deleting an Entry A.3.5 Viewing Attributes and Values A.3.6 Creating a Group and Adding Members A.4 NSedit Menus and Dialog Box A.4.1 File Menu A.4.2 Display Menu A.4.3 Edit Menu A.4.4 Create Entry Dialog Popup Figures 9-1: Enhanced Browser Icons 10-1: Example Namespace Hierarchy 10-2: Example Namespace Before and After the Merge Operation 10-3: Example Namespace Before and After the Append Operation 11-1: DCE Security and the DCE Application Environment 11-2: The Context Initiator Authenticates a Context Acceptor 12-1: DCE Interface Development Model 12-2: Class Hierarchy for DCE Distributed Objects 12-3: Object Reference Information 12-4: Reference Counting: Two Clients Referencing the Same Object Tables 2-1: System Configuration Commands 5-1: DCE Directories for OpenVMS and OSF/1 5-2: DCE Setup Utilities for OpenVMS and OSF/1 5-3: Executable Images for OpenVMS and OSF/1 5-4: DCE Library Images for OpenVMS and OSF/1 5-5: Message Files for OpenVMS and OSF/1 6-1: How to Link Applications Compiled with the DEC C Compiler 16-1: Event Log Fields 16-2: Event Values and Types 16-3: Universal Interface with DCL Equivalents 16-4: Command Interface to rpclm 17-1: Example Files Created by the Program - mer 17-2: Example Files Created by IDL 17-3: Mappings for IDL Types 17-4: Standard Declarations 19-1: Features of Example Programs 19-2: Options for Starting the Distributed Calendar Program 19-3: Options for Starting the System Exerciser