This chapter specifies the relevant data types and constants for these IDL interface definitions. Unless noted otherwise, messages are encoded in DCE Transfer Syntax (NDR).
The maximum lengths of internal, or opaque, names are specified as
follows:
The maximum length of external names is 1023 characters including
the null terminator.
#define SIMPLENAMEMAX 255 /* Single component name max size */
#define FULLNAMEMAX 402 /* Internal fully-qualified */
/* global name max size as represented
/* in an array of single component names */
#define ATTRIBNAMEMAX 31 /* Attribute name max size */
/* Same size limitation applies to */
/* class names */
The SimpleName_t structure defines an internal,
opaque encoding of names of various kinds (entry, attribute,
class) to be passed through the CDS protocol. This structure
is defined in dns_record.h as follows:
typedef struct {
byte_u sn_flag;
byte_u sn_length;
bytes_u sn_name[SIMPLENAMEMAX];
} SimpleName_t;
The structure fields have the following definitions:
typedef unsigned char byte_t;
typedef unsigned char byte_u[sizeof(byte_t)];
typedef unsigned char bytes_u;
-
-
SN_null 0
SN_typed 6
SN_objectid 7
SN_cds 8
SN_cdswildcard 9
The values 1, 2, 3, 4 and 5 are reserved.
Note that empty components of external atomic names are not allowed, but this value may be used for protocol internal purposes.
If the value of sn_flag is SN_null (null opaque name), this field contains a null string.
The encoding of sn_name uses ISO 8859-1 code page (Latin-1) in ASCII.
The FullName_t structure defines an internal, opaque encoding
of a complete global name to be passed through the CDS protocol. This
structure is defined in dns_record.h as follows:
typedef struct {
ObjUID_u fn_root;
word_u fn_length;
bytes_u fn_name[FULLNAMEMAX - (sizeof(word_u) + sizeof(ObjUID_u))];
} FullName_t;
The structure fields have the following definitions:
typedef uuid_t ObjUID_t;
typedef bytes_u ObjUID_u[sizeof(uuid_t)];
typedef struct {
unsigned short int nm_length;
[length_is(nm_length)] byte nm_name[257];
} cds_Name_t;
The structure fields have the following definitions:
typedef struct {
uuid_t fn_root;
long int fn_length;
[length_is(fn_length)] char fn_name[1023];
} cds_FullName_t;
The structure fields have the following definitions:
typedef struct {
byte ts_node[6];
unsigned hyper int ts_time;
} cds_Timestamp_t;
The structure fields have the following definitions:
Note that the UTC base timestamps provided by the DCE Distributed Time Service are expressed as the amount of time elapsed since 15 October 1582 (Gregorian calendar).
typedef struct {
byte to_expire[16];
byte to_extend[16];
} cds_Timeout_t;
typedef [ptr]cds_Timeout_t *cds_TimeoutP_t;
The structure fields have the following definitions:
typedef union switch (ValueType_t av_valuetype) av_val
{
case VT_none: ;
case VT_long: long int av_long;
case VT_short: short int av_short;
case VT_small: small int av_small;
case VT_uuid: uuid_t av_uuid;
case VT_Timestamp: cds_Timestamp_t av_timestamp;
case VT_Timeout: cds_Timeout_t av_timeout;
case VT_Version: cds_Version_t av_version;
case VT_char: [ptr]cds_OpenChar_t *av_char_p;
case VT_ASN1:
case VT_byte: [ptr]cds_OpenByte_t *av_byte_p;
/* The remaining types are for internal CDS use only */
case VT_ReplicaPointer: [ptr]cds_ReplicaPointer_t *av_rp_p;
case VT_GroupMember: [ptr]cds_GroupMember_t *av_gm_p;
case VT_ParentPointer: [ptr]cds_ParentPointer_t *av_pp_p;
case VT_FullName: [ptr]cds_FullName_t *av_fullname_p;
case VT_CHDirectory: [ptr]cds_CHDirectory_t *av_cp_p;
case VT_DACL: [ptr]sec_acl_t *av_acl_p;
case VT_gdaPointer: [ptr]cds_gdaPointer_t *av_gda_p;
} cds_AtomicValue_t;
The structure fields have the following definitions:
The specified attribute type codes are as follows:
typedef struct {
unsigned small int sm_flag;
cds_Timestamp_t sm_ts;
cds_AtomicValue_t sm_value;
} cds_SetMember_t;
The structure fields have the following definitions:
-
-
SM_present 1
SM_absent 0
typedef struct {
unsigned small int set_type;
unsigned short int set_length;
[size_is(set_length)] cds_SetMember_t set_members[];
} cds_Set_t;
typedef [ptr]cds_Set_t *cds_SetP_t;
The structure fields have the following definitions:
-
-
AT_none 1 /* no value */
AT_single 2 /* single-valued attribute */
AT_set 3 /* set-valued attribute */
typedef union switch (unsigned small returningToClerk) {
case RA_none: ;
case RA_single: [ptr] cds_SetMember_t *value_single_p;
case RA_set: [ptr] cds_Set_t *value_set_p;
case RA_wholeSet: [ptr] cds_WholeEntry_t *wholeEntry_p;
} cds_RA_value_t;
typedef struct {
small int ud_operation;
cds_Timestamp_t ud_timestamp;
unsigned small int ud_type;
byte ud_attribute[33];
cds_AtomicValue_t ud_value;
} cds_Update_t;
The structure fields have the following definitions:
-
-
UD_present 1
UD_absent 2
-
-
AT_none 1 /* used to delete an object entry */
AT_single 2
AT_set 3
The attribute identifier represents the CCITT Object Identifier (OID) of the attribute, encoded in ASN.1/BER (ISO 8825). The directory version specified in this document supports only this format.
The attribute name to identifier mapping is specified in
the CDS attributes table (in
typedef struct {
unsigned small int pr_flags;
[ptr]cds_Timeout_t *pr_timeout;
cds_FullName_t pr_unresolved;
cds_FullName_t pr_resolved;
[ptr]cds_Set_t *pr_replicas_p;
} cds_Progress_t;
The structure fields have the following definitions:
-
-
PR_done 0x00000001
PR_up 0x00000010
PR_linked 0x00000100
PR_hitLink 0x00001000
PR_ignoreState 0x00010000
PR_directory 0x00100000
typedef struct {
unsigned small int rp_type;
uuid_t rp_chid;
cds_FullName_t rp_chname;
unsigned long int rp_length;
[size_is(rp_length)] byte rp_towers[];
} cds_ReplicaPointer_t;
typedef [ref]cds_ReplicaPointer_t *cds_ReplicaPointerP_t;
The structure fields have the following definitions:
-
-
RT_master 1
RT_readOnly 3
RT_gda 4
The value 2 is reserved.
This document further specifies the usage only of RT_master (the Master Replica) and RT_gda (the Global Directory Agent).
typedef struct {
byte_u et_value;
} EntryType_t;
The structure fields have the following definitions:
-
-
ET_directory 1
ET_object 2
ET_childPointer 3
ET_softlink 4
ET_clearinghouse 5
ET_anyDirectName 6
ET_firstLink 7
ET_dirOrObj 8
typedef struct {
unsigned short ch_length;
[size_is(ch_length)] cds_ReplicaPointerP_t ch_members[];
} cds_CH_t;
The structure fields have the following definitions:
typedef struct {
byte_u cs_value;
} CHState_t;
The structure field has the following definition:
-
-
CS_newCH 1
CS_on 2
CS_dyingCH 3
typedef struct {
unsigned small int ver_major;
unsigned small int ver_minor;
} cds_Version_t;
The structure fields have the following values:
typedef struct {
uuid_t uuid;
[ string,ptr ] char *name;
} sec_id_t;
The structure fields have the following definitions:
typedef struct {
sec_id_t id;
sec_id_t realm;
} sec_id_foreign_t;
The structure fields have the following definitions:
typedef struct {
unsigned long int er_status;
[ptr] cds_FullName_t *er_name;
} cds_status_t;
The structure fields have the following definitions:
Please note that the html version of this specification may contain formatting aberrations. The definitive version is available as an electronic publication on CD-ROM from The Open Group.
Contents | Next section | Index |