X/Open Corrigenda: U012

Document:
Remote Operations Service Element (XAP-ROSE) API

X/Open CAE Specification, 12/95
X/Open reference C408

Contents

XAPROSE-1, -1, -3, -4, -5.


Change number : XAPROSE-1

Title

Interface not able to receive AP_RO_BIND_IND

Qualifier

Major Technical

Rationale

It is stated on page 15 in the first bullet item that the user sets the AP_PCDRL to accept or reject the proposed presentation contexts and transfer syntaxes, and then sets the AP_RO_PCI_LIST to contain the list of PCIs that identify presentation contexts using the ROSE protocol. Then the user is to call ap_ro_init() to enable the ROSE protocol machine.

This is incorrect, since we are working with an AP_PCDRL and we have already received an AP_ASSOC_IND and the ROSE protocol machine has not yet been enabled to convert it into a AP_RO_BIND_IND. Instead, the call to ap_ro_init() must be made before receiving any primitives, so that the correct conversion to the ROSE primitives can occur.

The following three changes correct the description for the three scenarios when ap_ro_init() can be called.

Change

(1) Replace the 6th paragraph on page 14 with:

"A call to ap_ro_init() causes the list of ROSE abstract syntaxes identified by the PCI entries in the environment attribute AP_RO_PCI_LIST to be validated if the AP_RO_PCI_LIST is not null."

(2) Replace the 8th paragraph on page 14 with:

"There are three different scenarios when ap_ro_init() can be called based on the AP_ROLE_ALLOWED environment variable, and each operates as follows:"

(6) replace the first paragraph of the bullet item on page 15 with:

"For a responder, before inward connection establishment, the user calls ap_ro_init() with a NULL AP_RO_PCI_LIST to enable the ROSE protocol machine. In this case, only an AP_RO_BIND_IND is valid to be received and no checking is performed in the ROSE protocol machine to try to validate the presentation contexts or transfer syntaxes. All other primitives will be passed up to the user untouched by the ROSE protocol machine. The application will accept or reject the presentation contexts and transfer syntaxes in the AP_PCDRL. Once the AP_PCDRL is set, the AP_RO_PCI_LIST is set, then ap_ro_init() is called a second time and the following checks are performed:"


Change number : XAPROSE-2

Title

AP_RO_BIND/AP_RO_UNBIND primitives do not allow for direct-reference or indirect-reference encoding

Qualifier

Minor Technical

Rationale

The AP_RO_BIND primitives need the ability to use direct-reference or indirect-reference encoding instead of just passing the PCI. This is defined in ISO/IEC 8824, Section 34.4, 34.5, and 34.6. The effect of 34.5 and 34.6 is to make the presence of at least one of the "direct-reference" and the "indirect-reference" mandatory. Note also that both references are present when presentation layer negotiation is in use but incomplete.

Change

(1) On page 65, after the line:

         "#define AP_RO_NO_RESULT       3"

add the following:

         "#define AP_RO_DIRECT_REF      4
          #define AP_RO_INDIRECT_REF    5
          #define AP_RO_DIR_AND_INDIR   6"

(2) On pages 32, 34, 36 and 38, in the cdata members list, after the line:
         "                           /* values                          */"

add the following:

         "long   type;               /* must be set to AP_RO_DIRECT_REF */
                                     /* or AP_RO_ INDIRECT_REF          */
                                     /* or AP_RO_ DIR_AND_INDIR         */
          union {
              unsigned long  local;  /* not valid for this primitive    */
              ap_objid_t     global; /* valid if type==AP_RO_DIRECT_REF */
          } value;
(3) On page 33, insert the following before the 'ubuf' section:

"The cdata->type argument signals the type of encoding that is to be used to encode the AP_RO_BIND_REQ. If the cdata->type is set to AP_RO_DIRECT_REF the cdata->value.global will contain the object identifier that will be used for the encoding. If cdata->type is set to AP_RO_INDIRECT_REF then the cdata->pci value will be used for the indirect-reference encoding. If cdata->type is set to AP_RO_DIR_AND_INDIR then the cdata->value.global will contain the transfer syntax that will be used for the encoding and the cdata->pci will be used for the indirect-reference.

The global element of the cdata->value element is an ap_objid_t structure containing the contents octets of the BER encoding of the OBJECT IDENTIFIER. See the referenced XAP specification and ISO 8825-1, Basic Encoding Rules(BER) for details of how to use this structure."

(4) On page 37, insert the following before the 'ubuf' section:

"The cdata->type argument signals the type of encoding that is to be used to encode the AP_RO_BIND_RSP. If the cdata->type is set to AP_RO_DIRECT_REF the cdata->value.global will contain the object identifier that will be used for the encoding. If cdata->type set to AP_RO_INDIRECT_REF then the cdata->pci value will be used for the indirect-reference encoding. If cdata->type is set to

AP_RO_DIR_AND_INDIR then the cdata->value.global will contain the transfer syntax that will be used for the encoding and the cdata->pci will be used for the indirect-reference.

The global element of the cdata->value element is an ap_objid_t structure containing the contents octets of the BER encoding of the OBJECT IDENTIFIER. See the referenced XAP specification and ISO 8825-1, Basic Encoding Rules(BER) for details of how to use this structure."

(5) On page 34, insert the following before the 'ubuf' section:

"The cdata->type argument signals the type of encoding that h been used to encode the AP_RO_BIND_IND. If the cdata->type is set to AP_RO_DIRECT_REF the cdata->value.global will contain the object identifier that was used for the encoding. If cdata->type is set to AP_RO_INDIRECT_REF then the cdata->pci value was used for the indirect-reference encoding. If cdata->type is set to AP_RO_DIR_AND_INDIR then the cdata->value.global contains the transfer syntax that was used for the encoding and the cdata->pci is the indirect-reference.

The global element of the cdata->value element is an ap_objid_t structure containing the contents octets of the BER encoding of the OBJECT IDENTIFIER. See the referenced XAP specification and ISO 8825-1, Basic Encoding Rules(BER) for details of how to use this structure."

(6) On page 39, insert the following before the 'ubuf' section:

"The cdata->type argument signals the type of encoding that has been used to encode the AP_RO_BIND_CNF. If the cdata->type is set to AP_RO_DIRECT_REF the cdata->value.global will contain the object identifier that was used for the encoding. If cdata->type is set to AP_RO_INDIRECT_REF then the cdata->pci value was used for the indirect-reference encoding. If cdata->type is set to AP_RO_DIR_AND_INDIR then the cdata->value.global contains the transfer syntax that was used for the encoding and the cdata->pci is the indirect-reference. The global element of the cdata->value element is an ap_objid_t structure containing the contents octets of the BER encoding of the OBJECT IDENTIFIER. See the referenced XAP specification and ISO 8825-1, Basic Encoding Rules(BER) for details of how to use this structure."


Change number : XAPROSE-3

Title

Assorted typo's, missing possible error conditions and omissions from the <xap_rose.h> header file.

Qualifier

Minor Technical

Rationale

There are numerous typo's and missing possible error conditions which should be corrected and also omissions from the <xap_rose.h> header file which need to be added.

Change

(1) On page 27 and page 29, in the RETURN VALUE paragraph, change ";ocation" to "location"

(2) For all of the ROSE primitives used with ap_snd() man pages starting on page 32, the following line should be added to all of their ERRORS sections:

[AP_RO_BAD_PCI] The PCI is not in the AP_RO_PCI_LIST.

(3) On pages 33, 37 and 58, in the ERRORS section, AP_BADTOKEN is not a valid error for these primitives and should be deleted from these sections.

(4) On pages 34, 38, 59 and 63, in the DESCRIPTION section, under the 'cdata' heading, the "udata_length" is not a valid structure member for these primitives and should be deleted from these sections.

(5) On page 39, in the 4th paragraph, change the line: "RO-BIND indication service." to "RO-BIND confirmation service."

(6) On page 67, 2nd line from the bottom, change "class" to "op_class" to match the rest of the specification.

(7) On page 66, in the <xap_rose.h> header file, delete the section which reads:

           "/*
             *  The following are provider primitives..."

[These values are implementation-dependent and should not be defined here.]

(8) On pages 33, 37, 57 and 62 in the 'ubuf' DESCRIPTION, change this to match the 'ubuf' DESCRIPTION of AP_RO INVOKE_REQ. So the 'ubuf' DESCRIPTION should be replaced with the following:

"This function argument is used to pass a data value that represents the argument parameter of the remote operation bind. The data is in encoded form: cdata->pci identifies the presentation context used to encode it. This presentation context identifies both the abstract syntax (which defines the type of value encoded), and the transfer syntax (which defines how it is encoded). Use of the ubuf argument is described in the ap_snd() manual page in referenced XAP specification."

(9) On pages 35, 39, 59 and 64 in the 'ubuf' DESCRIPTION, change this to match the 'ubuf' DESCRIPTION of AP_RO INVOKE_IND. So the 'ubuf' DESCRIPTION should be replaced with the following:

"This function argument is used to pass a data value that represents the argument parameter of the remote operation bind. The data is in encoded form: cdata->pci identifies the presentation context used to encode it. This presentation context identifies both the abstract syntax (which defines the type of value encoded), and the transfer syntax (which defines how it is encoded). Use of the ubuf argument is described in the ap_rcv() manual page in the referenced XAP specification."

10. The reject code type GENERAL is not in <xap_rose.h> and needs to be added. So, on page 65, in the <xap_rose.h> header file, before the line:

"#define AP_RO_INVOKE_TYPE 1"

insert the following line:

"#define AP_RO_GENERAL_TYPE 0"

11. The rsn values for the reject code types are not in <xap_rose.h> as they are referenced to be. So, on page 65, in the <xap_rose.h> header file, before the section that reads:

                  "/*
                    *  Primitive types
                    */"

insert the following:

                  "/*
                    * Possible General problem types
                    */
                    #define AP_RO_GEN_UNREC_PDU          (0)
                    #define AP_RO_GEN_MISTYPED_PDU       (1)
                    #define AP_RO_GEN_BAD_STRUCT_PDU     (2)

/* * Possible Invoke Problem types */ #define AP_RO_IN_DUP_INVOCATION (0) #define AP_RO_IN_UNREC_OPERATION (1) #define AP_RO_IN_MISTYPED_ARG (2) #define AP_RO_IN_RESOURCE_LIMIT (3) #define AP_RO_IN_RELEASE_IN_PROG (4) #define AP_RO_IN_UNREC_LINKED_ID (5) #define AP_RO_IN_LINKED_RESP_UNEXPECTED (6) #define AP_RO_IN_UNEXPECTED_LINKED_OPER (7)

/* * Possible Result problem types */ #define AP_RO_RES_UNREC_INVOCATION (0) #define AP_RO_RES_RESULT_RESP_UNEXPECTED (1) #define AP_RO_RES_MISTYPED_RESULT (2)

/* * Possible Error problem types */ #define AP_RO_ER_UNREC_INVOCATION (0) #define AP_RO_ER_ERROR_RESP_UNEXPECTED (1) #define AP_RO_ER_UNREC_ERROR (2) #define AP_RO_ER_UNEXPECTED_ERROR (3) #define AP_RO_ER_MISTYPED_PARAM

12. On pages 33, 37, 58 and 62 in the ERROR section, add the following error:

"[AP_BADPRIM] For XAP-ROSE primitives, this error code may be returned if the identified instance is not an XAP-ROSE instance - that is, the service provider selected in the call to ap_open() does not support a ROSE service provider, or the AP_ROSE_MODE flag has not been set in the AP_MODE_SEL environment attribute."


Change number : XAPROSE-4

Title

AP_RO_UNBIND_RSP is not aligned with AP_A_RELEASE_RSP

Qualifier

Minor Technical

Rationale

The AP_RO_UNBIND_RSP maps directly to an AP_A_RELEASE_RSP and should be aligned with it.

Change

On page 61, in the DESCRIPTION section, under cdata, replace the lines starting with:
"The cdata->res argument..."

through

"not finished with the association"

with:

"The cdata->res and cdata->rsn arguments should be set the same as they are for an AP_A_RELEASE_RSP. Reference this primitive in the XAP CAE specification for the correct settings."


Change number : XAPROSE-5

Title

Missing a possible returned error value for bad values in the type field.

Qualifier

Minor Technical

Rationale

There needs to be a return error value if a bad value is placed in the cdata->type element.

Change

(1) On page 66, in the xap_rose.h header file, after the line:

"#define AP_RO_T_SYTX_NSUP..."

insert the following line:

"#define AP_RO_BADCD_TYPE ((AP_ROSE_ID<<16) | 0x1A)"

(2) In the ERROR sections on pages 33, 37, 41, 45, 50 and 54, add the following line:

"[AP_RO_BADCD_TYPE] The value of type is not valid."


If you can't find the information you need, please contact X/Open at any of its offices.


Copyright X/Open Company Limited, © 1995