Data Types and Structures
The following data types used with the dced API are defined in dce/dced_base.idl and are shown here in alphabetical order.
dced_attr_list_t This data structure specifies the configuration attributes to use when you start a server via dced. The structure consists of the following:
count An unsigned32 number representing the number of attributes in the list.
list An array of configuration attributes where each element is of type sec_attr_t. This data type is described in the sec_intro(3sec)
reference page. For dced, the list[i].attr_id field can have values of either dced_g_uuid_fileattr specifying plain text or
dced_g_uuid_binfileattr specifying binary data.
dced_binding_handle_t A dced binding handle is an opaque pointer that refers to information that includes a dced service (hostdata, srvrconf, srvrexec,
secval, or keytab) and RPC binding information for a specific DCE Host daemon.
dced_cursor_t The entry list cursor is an opaque pointer used to keep track of a location in an entry list between calls that traverse the list.
dced_entry_t An entry is the structure that contains information about a data item (or object) maintained by a dced service. The actual data is maintained
elsewhere. Each entry consists of the following structure members:
id A unique identifier of type uuid_t that dced maintains for every data item it maintains
name The name for the data item. The data type is dced_string_t .
description A brief description the data item (of type dced_string_t) for the convenience of human users.
storage_tag A string of type dced_string_t describing the location of the actual data. This is implementation-specific and may be a file (with a path name) on the host
system or a storage identifier for the dced process.
dced_entry_list_t An entry list is a uniform way to list the data items a dced service maintains. The entry list structure contains a list of all the entries for a
given service. For example, the complete list of all entries of hostdata, server configuration data, server execution data, and keytab data are each maintained in separate entry lists. The
structure consists of the following:
count An unsigned32 number representing the number of entries in the list.
list An array of entries where each element is of type dced_entry_t.
dced_key_t A key consists of the following structure members:
principal A dced_string_t type string representing the principal for the key.
version An unsigned32 number representing the version number of the key.
authn_service An unsigned32 number representing the authentication service used.
passwd A pointer to a password. This is of type sec_passwd_rec_t.
See also the Security introduction reference page, sec_intro(3sec).
dced_key_list_t A key list contains all the keys for a given key table and consists of the following structure elements:
count An unsigned32 number representing the number of keys in the list.
list An array of keys where each element is of type dced_key_t.
dced_keytab_cursor_t The keytab cursor is an opaque pointer used to keep track of a location in a key list between calls that traverse the list.
dced_opnum_list_t A list of operation numbers is used in the service_t structure. This structure consists of the following fields:
count An unsigned32 number representing the number of operations in the list.
list An array of UUIDs where each element is of type uuid_t.
dced_service_type_t The dced service type distinguishes the services provided by dced. It is an enumerated type used mainly in a parameter of the
dced_binding_from_rpc_binding( ) routine. It can have one of the following values:
dced_e_service_type_hostdata The host data management service
dced_e_service_type_srvrconf The server configuration management service
dced_e_service_type_srvrexec The server execution management service
dced_e_service_type_secval The security validation service
dced_e_service_type_keytab The key table management service
dced_e_service_type_null A NULL service type used internally
dced_string_t This data type is a character string from the Portable Character Set (PCS).
dced_string_list_t A list of strings with the following format:
count An unsigned32 number representing the number of strings in the list.
list An array of strings where each element is of type dced_string_t.
dced_tower_list_t A list of protocol towers used in the service_t structure. This structure consists of the following fields:
count An unsigned32 number representing the number of protocol towers in the list.
list An array of pointers where each element is a pointer to a protocol tower of the type sec_attr_twr_set_p_t. This data type is described in the
sec_intro(3sec) reference page.
server_fixedattr_t This structure is a field in the server_t structure. It contains the following fields:
startupflags This field is of type unsigned32 and can be any combination of the following bits: server_c_startup_at_boot
This means that dced should start the server when dced is started. server_c_startup_auto This means that the server
can be started automatically if dced determines there is a need. server_c_startup_explicit This means dced can start the server if
it receives an explicit command to do so via dced_server_start( ) or the dcecp operation server start. server_c_startup_on_failure
This means that the server should be restarted by dced if it exits with an unsuccessful exit status. Several bits are also reserved for
vendor-specific startup and include server_c_startup_vendor1, server_c_startup_vendor2, server_c_startup_vendor3, and server_c_startup_vendor4.
flags This represents the execution state of the server and is the unsigned32 type. This field is maintained only by dced and should not be modified. Valid
values to check for are self-explanatory and include the following: server_c_exec_notrunning server_c_exec_running Several bits are also
reserved for vendor-specific execution states and include: server_c_exec_vendor1 server_c_exec_vendor2 server_c_exec_vendor3
server_c_exec_vendor4
program This is the full path name of the server and is of type dced_string_t.
arguments This is a list of arguments for the server and is of type dced_string_list_t.
prerequisites This is an advisory field that means this server is a client of other prerequisite servers whose IDs are in a list of type uuid_list_t. The UUIDs should
be the id fields from the server_t structures of the relevant servers.
keytables This is a list of keytab entry UUIDs representing the key tables for this server and is of type uuid_list_t.
posix_uid This is a POSIX execution attribute for the user ID. It is of type unsigned32.
posix_gid This is a POSIX execution attribute for the group ID. It is of type unsigned32.
posix_dir This is a POSIX execution attribute for the directory in which the server started when it is invoked. It is of type dced_string_t.
server_t The DCE Host daemon describes a server as follows:
id Each server has a unique ID of type uuid_t.
name Each server's name is of type dced_string_t.
entryname The server's entry name is a hint as to where the server appears in the namespace. This is of type dced_string_t.
services Each server offers a list of services specified in a list of type service_list_t. This structure has the following members:
count An unsigned32 number representing the number of services in the list. list A pointer to an array of
services where each element is of type service_t.
fixed This is a set of attributes common to all DCE implementations. The data type is server_fixedattr_t.
attributes This field is of type dced_attr_list_t and contains a list of attributes representing the behavior specific to a particular server or host.
prin_names This field is a list of principal names for the server and is of type dced_string_list_t.
exec_data Data about an executing server is maintained in a tagged union (named tagged_union) with a discriminator of type unsigned32 named execstate
representing the server's execution state. The union has the following two execution states:
server_c_exec_notrunning For the case where the server is not running, the union member has no value. For example:
if(server->exec_data.execstate == server_c_exec_notrunning)
server->exec_data.tagged_union = NULL;
server_c_exec_running For the case where the server is running, and the value of the union member is a srvrexec_data_t data type named running_data. A
srvrexec_data_t structure contains the following members: instance Each instance of a server on a host is identified with a UUID (type
uuid_t). posix_pid Each server has a POSIX process ID of type unsigned32.
service_t This structure describes each service offered by a server. The server_t structure, described earlier, contains an array of these structures. The
service_t structure contains the following fields:
ifspec An interface specification of type rpc_if_id_t, generated by an idl compilation of the interface definition representing the service. This data type is
described in the rpc_intro(3rpc) reference page.
ifname An interface name of type dced_string_t.
annotation An annotation about the purpose of the interface (type dced_string_t). This field is for user display purposes only.
flags The flag field is of type unsigned32 and currently has only one bit field defined, service_c_disabled. If this flag is set, it indicates that the
service is not currently available for the server. Also, the dced endpoint mapper will not map an endpoint to a disabled service. Several values are also reserved for vendor-specific use
and include service_c_vendor1, service_c_vendor2, service_c_vendor3, and service_c_vendor4.
entryname The entry name (type dced_string_t) is a hint as to where this service appears in the namespace. If the value is NULL, the value in the
entryname field of the server_t structure is used.
objects This is a list of objects supported by the service. The list is of type uuid_list_t.
operations This is a list of operation numbers of type dced_opnum_list_t. This field is not currently used.
towers This is a list of protocol towers of type dced_tower_list_t, specifying the endpoints where this server can be reached.
srvrexec_stop_method_t The server execution stop method is an enumerated type with one of the following values:
srvrexec_stop_rpc Stops the running server gracefully by letting the server complete all outstanding remote procedure calls. This causes dced to invoke the
rpc_mgmt_server_stop_listening( ) routine in that server.
srvrexec_stop_soft This uses a system-specific mechanism such as the SIGTERM signal. It stops the running server with a mechanism that the server can ignore or
intercept in order to do application-specific cleanup.
srvrexec_stop_hard This uses a system-specific mechanism such as the SIGKILL signal. It stops the running server immediately with a mechanism that the server cannot
intercept.
srvrexec_stop_error This uses a system-specific mechanism such as the SIGABRT signal. The local operating system captures the server's state before stopping it, and
the server can also intercept it.
uuid_list_t A list of UUIDs in the following format:
count An unsigned32 number representing the number of UUIDs in the list.
list A pointer to an array of UUIDs where each element is of type uuid_t.
|