Document revision date: 28 June 1999 | |
![]() |
![]() ![]() ![]() ![]() |
![]() |
Previous |
The Integrated Login component of Digital DCE for OpenVMS uses the SYSGEN parameter LGI_CALLOUTS. LGI_CALLOUTS must be set to 1 only in the ACTIVE SYSGEN parameter set when DCE is running with Integrated Login enabled. LGI_CALLOUTS must never be set to 1 in the CURRENT SYSGEN parameter set --- this would prevent all logins from occurring on a subsequent reboot of the system. The following paragraphs discuss the reasons for this restriction and solutions if the problem occurs.
If Integrated Login is enabled on your system, the DCE startup and configuration procedure, DCE$SETUP.COM, sets the SYSGEN parameter LGI_CALLOUTS to 1 in the ACTIVE SYSGEN parameter set when DCE is started and resets the parameter when DCE is shut down. LGI_CALLOUTS must never be set to 1 in the CURRENT SYSGEN parameter set because, in that case, the next time the system is booted the LGI_CALLOUTS parameter is set in the ACTIVE SYSGEN parameter set before DCE is started. This prevents logins from occurring.
If the ACTIVE value of LGI_CALLOUTS is set to 1 when DCE and Integrated Login are not running, the following error is displayed when LOGINOUT attempts to run (for example, for interactive or batch logins):
No logical name match |
Consequently, all users are prevented from logging in to the system.
This problem can occur if, for example, a SYSGEN parameter is modified in the following way while Integrated Login is enabled. This prevents logins because it causes LGI_CALLOUTS to be set to 1 the next time the system is booted.
$RUN SYS$SYSTEM:SYSGEN SYSGEN>SET param value SYSGEN>WRITE CURRENT SYSGEN>EXIT $ |
The correct way to modify a SYSGEN parameter is to make the change in MODPARAMS.DAT and then run AUTOGEN. If it is essential to modify a SYSGEN parameter without using MODPARAMS.DAT and AUTOGEN, you must ensure that if you use ACTIVE, you write the parameters into ACTIVE only; and if you use CURRENT, you write the parameters into CURRENT only. Do not copy the ACTIVE parameters into CURRENT.
Following are two examples of acceptable ways to modify a SYSGEN parameter:
$RUN SYS$SYSTEM:SYSGEN SYSGEN>USE CURRENT SYSGEN>SET param value SYSGEN>WRITE CURRENT SYSGEN>EXIT $ |
$RUN SYS$SYSTEM:SYSGEN SYSGEN>USE ACTIVE ! optional, default is ACTIVE SYSGEN>SET param value SYSGEN>WRITE ACTIVE SYSGEN>EXIT $ |
If you cannot log in because LGI_CALLOUTS is set to 1 and DCE is not running, there are two solutions, as follows:
$RUN SYS$SYSTEM:SYSGEN SYSGEN>SET LGI_CALLOUTS 0 SYSGEN>WRITE ACTIVE SYSGEN>EXIT $ |
SYSBOOT>SET LGI_CALLOUTS 0 SYSBOOT>C |
Digital DCE for OpenVMS does not support the
rpc_c_prot_level_pkt_privacy level of data encryption.
However, a separate kit, the Digital DCE Privacy Option Version 1.5 for
OpenVMS VAX and OpenVMS Alpha, enables an optional privacy level of
encryption for RPC packets and encryption of message data when calling
GSSAPI if using Kerberos authentication. See your Compaq representative
for information about ordering this kit.
16.18 DCE IDL Compiler with C++ Extensions and Upward Compatibility
Digital DCE for OpenVMS Version 1.5 includes a release of the IDL compiler that is part of OSF DCE Version 1.2.1. This new version of the IDL compiler includes support for object-oriented development of C++ applications. The new support allows you to use remote objects transparently from C++.
An application using this compiler in this release will be source
compatible with previous and subsequent releases; no source changes are
necessary.
16.19 DCE IDL Compiler and C++ Exceptions
A client using the DCE IDL compiler with C++ extensions invokes methods on objects that causes IDL generated client stub code to be invoked. By default, communications errors or remote faults that occur during the stub's processing cause exceptions to be raised using the DCE Threads exception handling mechanism. Therefore, C++ code that needs to catch and respond to these exceptions must also use the DCE Threads exception handling mechanism.
Some, but not all, C++ compilers have built-in language support for exceptions. Currently, exceptions are not supported in the DEC C++ for OpenVMS compilers. C++ application code that processes exceptions returned from DCE IDL stubs should continue to use DCE Threads exceptions.
You can avoid the raising of exceptions from DCE IDL stubs by using the
[comm_status] and [fault_status] ACF attributes. For
more information, see the Guidelines for Error Handling chapter in the
DCE Application Development Guide.
16.20 IDL Compiler Error Message when License Not Installed
The IDL compiler requires an active software license in order to execute. Since the IDL compiler is packaged in more than one software product, there are multiple licenses that it checks for when it is invoked. If it finds none of these licenses active, it issues an error message about the last license it checked for, and then exits. For example:
$ IDL TEST.IDL %LICENSE-W-NOLIC, no license was found for this product - PWXXVMSDK05.01 -RMS-E-RNF, record not found %LICENSE-F-NOAUTH, DEC PWXXVMSDK05.01 use is not authorized on this node -LICENSE-F-NOLICENSE, no license is active for this software product -LICENSE-I-SYSMGR, please see your system manager |
In this case, the last license checked for was PWXXVMSDK05.01. The
error message might lead you to think that the PWXXVMSDK05.01 license
is required for IDL to execute on Digital DCE for OpenVMS, but it is
not required. If you receive an error message similar to the one above,
check to make sure that an active license (such as the Application
Developer's Kit license, DCE-APP-DEV) is installed.
16.21 Automatic Registration of Servers
In the IDL compiler, servers are now automatically registered by server
stubs. If you call rpc_server_register_if(), the "already
registered" status is returned. (Remove the call to
rpc_server_register_if() from the server.cxx file
before you build the example programs in Chapter 19 of the Digital
DCE for OpenVMS VAX and OpenVMS Alpha Product Guide.)
16.22 Binding to a Named Object by Object Identifier
In the IDL compiler, to bind to a named object by its object ID, the
argument to the bind() operation is a uuid_t
reference specifying the unique identifier of the registered object in
the CDS hierarchy. Section 12.3.6.3 of the Digital DCE for OpenVMS
VAX and OpenVMS Alpha Product Guide should specify
*bind(uuid_t &).
16.23 Support for sigwait()
The DCE Application Guide and DCE Reference Guide
include incorrect information about support for sigwait().
DECthreads does not support sigwait() on the OpenVMS platform.
16.24 Server Programming
When running DCE server applications on OpenVMS Alpha V6.1 systems, it is possible to exhaust the server thread stack space if your server makes use of the %f or %e conversion characters for formatting output. For example, the following printf statement could cause an overflow of the server thread stack:
printf ("The computed value = %f\n", value); |
This error can cause the server to terminate with an unexpected error code such as an Access Violation or a Reserved Operand Fault.
If you experience this type of error, you must add a call to the RPC
routine rpc_mgmt_set_server_stack_size specifying a stack size
of at least 14000, prior to calling rpc_server_listen.
16.25 Compiling Stubs on Alpha
If a stub is compiled on Alpha with optimization switched on, it will not handle exceptions correctly. Therefore, on Alpha, you should compile stubs with optimization switched off.
This problem will be fixed in a future release of DEC C.
16.26 Using the -cpp_cmd (/PREPROCESS) IDL Compiler Option on OpenVMS Alpha
When you specify the -cpp_cmd (/PREPROCESS) option in an IDL command, the IDL compiler preprocesses any IDL or ACF sources by invoking the DEC C compiler with the /PREPROCESS_ONLY qualifier. Because of a bug in the DEC C compiler on OpenVMS Alpha, the IDL compiler may incorrectly report source line numbers and contents when it reports error messages.
If your IDL and ACF source files do not use C preprocessor directives (such as #define), then you do not need to specify the -cpp_cmd (/PREPROCESS) option. Otherwise, the workaround is to change multiline comments to a series of single line comments.
Documentation Error
The Digital DCE for OpenVMS VAX and OpenVMS Alpha Reference
Guide, in the DCL Command Interfaces to DCE Tools chapter states
that the /PREPROCESS and /NOPREPROCESS IDL compiler options are
equivalent to the -cpp_cmd
'c_preprocessor_command_line' and -no_cpp arguments
in the universal syntax. This is incorrect. /PREPROCESS does not accept
a value (the compiler to handle the preprocessing), while the
-cpp_cmd option does accept a value. Therefore, you cannot use
the /PREPROCESS qualifier to compile applications requiring a
preprocessor other than the default C compiler. If the C++ compiler is
required, you must use the universal syntax.
16.27 POSIX and OpenVMS Alpha
On OpenVMS Alpha systems running POSIX Version 1.0, you should use only
one page file. If there are multiple page files installed on the
system, DCE_LOGIN may cause a system crash.
16.27.1 DEC C Applications Using G-float in the POSIX Environment
If you compile your DEC C DCE application in the POSIX environment on an OpenVMS VAX system, the DEC C compiler will not build with G-float if you specify the /G-float qualifier before the /LIBRARY qualifier on the command line.
In the following example, the DEC C compiler uses D-float even though G-float is specified:
$ cc/decc/list/mach/g_float x.c+DECC$LIBRARY_INCLUDE:DECC$RTLDEF.TLB/library |
The problem is caused by the +DECC$LIBRARY_INCLUDE:DECC$RTLDEF.TLB/library part of the command. This causes the compile to reset to the default double precision type.
To work around this problem, compile your program outside of the POSIX environment and specify the /G_float qualifier after the text library, as follows:
$ CC/DECC - _$ /PREFIX=(ALL,RTL="posixc$") - _$ /INCLUDE=POSIX$INCLUDE - _$ x.C + POSIX$INCLUDE:POSIX$CDEF/LIBRARY - _$ /G_FLOAT |
Refer to the Guide to Programming with OpenVMS POSIX for more
information about compiling outside of the POSIX environment.
16.27.2 Information on the DCE Example Applications in the POSIX Environment
Seven DCE examples are on the Digital DCE for OpenVMS kit. This section lists current restrictions:
Note that UCX Runtime Calls are not always thread safe.
UCX has two main application programming interfaces: VMS system
services (for example, $ASSIGN, $QIO, $CANCEL) and the C socket
library. Of these two, the VMS system services are fully thread-safe,
while the socket library is not. The most common problem with sockets
is the select() call, which blocks the entire process (not
just the calling thread) until the specified I/O events occur (or the
timeout expires).
16.29 C RTL Routine Sleep Not Thread Safe
The C RTL routine sleep is not thread safe. The sleep call may wake up
prematurely if calls to DCE APIs are made at the same time. It is
recommended that you use a thread safe mechanism such as
pthread_delay_np, pthread_cond_wait,
pthread_cond_timedwait, and pthread_cond_signal to
delay a thread. For more information on these APIs, please refer to the
OSF DCE Application Development Reference Manual.
16.30 Rebuilding DECrpc Applications Against Digital DCE
If you take advantage of the compatibility capabilities of DECrpc on Digital DCE for OpenVMS VAX, you may encounter undefined symbols when you link your application object code against the DCE library (DCE$LIB_SHR.EXE). For example, when you link the client object code of your DECrpc application interface (MY_APP) against the DCE library, you receive the following undefined symbol:
MY_APP_$CLIENT_EPV |
When you link the server object code of MY_APP against the DCE library, you receive the following undefined symbols:
MY_APP_$MANAGER_EPV MY_APP_$SERVER_EPV |
The following table lists the undefined symbols you receive if you use the following DECrpc include files from SYS$COMMON:[RPC$INCLUDE] in your application when you link your application object code against the DCE library (DCE$LIB_SHR.EXE).
_______________________________________________________________ If your application You receive the following undefined includes... symbols: _______________________________________________________________ LLB.H LLB_$CLIENT_EPV LLB_$MANAGER_EPV LLB_$SERVER_EPV GLB.H GLB_$CLIENT_EPV GLB_$MANAGER_EPV GLB_$SERVER_EPV RRPC.H RRPC_$CLIENT_EPV RRPC_$MANAGER_EPV RRPC_$SERVER_EPV ___________________________________________________________ |
You can ignore these undefined symbols. They are not referenced by DCE
or by application code and do not affect the running of your
application in any way.
16.31 Ordering of Startup Procedures
On OpenVMS VAX and OpenVMS Alpha Version 6.1 and later, the order of
startup procedures follows: DECnet, TCP/IP software, then DCE.
16.32 Case-Sensitivity of DCE Utilities
Some input to Digital DCE for OpenVMS utilities is case-sensitive (for example, CDSCP entity attribute names). Since the DCL command line interface converts all input to uppercase before passing it to a utility, some input to the DCE utilities will need to be enclosed in quotation marks (" ").
When you enter commands directly at DCE utility prompts, you should not
use the quotation marks because case-sensitivity is preserved.
(Case-sensitivity is not preserved by the Integrated Login utilities
DCE$UAF, IMPORT, and EXPORT because these are true native OpenVMS
applications.)
16.33 CDSCP Commands Requiring a Local Server
There are several CDSCP commands which assume the presence of a CDS server on the local system. These commands will not execute properly in the absence of a local server. At present, CDSCP will return the following error:
Failure in routine: cp-xxxxxxx not registered in endpoint map (dce/rpc) |
The affected commands are:
The CDSCP command to examine the CDS cache will fail if CDSCP is run under a Process UIC other than [DCE$SERVER].
$ CDSCP DUMP CLERK CACHE Cannot map to memory cache -1 Failure in routine: cadump Internal: Not found |
To work around this restriction, issue the following DCL command before you invoke CDSCP:
$ SET UIC [DCE$SERVER] |
Remember to reset your UIC to its original value after you use this
command.
16.35 CDS Clerk Failing on UCX Shutdown
If you issue a SYS$STARTUP:UCX$SHUTDOWN command while running DCE, you may get a CDS Clerk failure and an Access Violation. You may then encounter problems restarting the CDS Clerk (and DCE itself) with the DCE$SETUP START command.
The primary problem is that UCX is being shut down while DCE is still active. Since DCE uses UCX, DCE should always be shut down first.
To recover from this problem, you need to shut down DCE first and then
restart. Simply trying to restart without first shutting DCE down will
not fix the underlying problem. Because temporary files may be left in
an indeterminate state, you may also want to perform a DCE$SETUP CLEAN
operation before restarting.
16.36 Global Directory Agent Configuration
The Global Directory Agent (GDA) is configured on the OpenVMS node that contains the CDS Master Replica name server. Make sure you choose the CUSTOM configuration option when you do the configuration. The DNS domain name (for example, zko.dec.com) and the Internet Address of an authoritative DNS Master Bind Server (for example, 16.32.2.11) are required during configuration if you are using DNS Bind style cellnames.
Before access to multiple CDS namespaces is possible, the following are required after the configuration:
If you are unsuccessful in configuring intercell communication, check for the following:
$ STOP/ID=xxxxxxxx $ @sys$manager:dce$setup start |
The following APIs are included in DCE Version 1.5 to manipulate the
sec_winnt_auth_identity structure.
17.1 RPC_WINNT_SET_AUTH_IDENTITY
NAME rpc_winnt_set_auth_identity - This function is called by the client RPC application to allocate and populate a WINNT auth_identity structure to be used as a parameter to rpc_binding_set_auth_info(). The caller must use the rpc_winnt_free_auth_identity() function to free the WINNT auth_idenity. The strings that are passed in may be ASCI or Unicode (UCS-4) strings. The input flag will tell which type of strings they are. SYNOPSIS #include <rpc.h> PUBLIC void rpc_winnt_set_auth_identity ( rpc_winnt_auth_string_p_t Username; rpc_winnt_auth_string_p_t Password; rpc_winnt_auth_string_p_t Domain; unsigned __int64 CharacterSetFlag; rpc_auth_identity_handle_t *auth_identity; unsigned32 *stp) PARAMETERS INPUT username - Pointer to a null terminated string containing username. password - Pointer to a null terminated string containing password. domain - Pointer to a null terminated string containing domain. CharacterSetFlag SEC_WINNT_AUTH_IDENTITY_UNICODE 4 byte Unicode (UCS-4) SEC_WINNT_AUTH_IDENTITY_ANSI ASCII (ISO8859-1) OUTPUT auth_identity - Pointer to a pointer to WINNT auth_identity structure. stp - Pointer to returned status. NOTE: Be sure to allocate space for three strings (username, password, domain). The string variables will probably be pointers of type unsigned_char_t if the strings are ASCII or pointers of type wchar_t if the strings are Unicode (UCS-4). If the domain string is a valid empty string, then the domain of the computer will be used. |
Previous | Next |
![]() ![]() ![]() ![]() |
privacy and legal statement | ||
DCE_RELNOTES_002.HTML |