rpcpdu.ndl revision c586600796766c83eb9485c446886fd9ed2359a9
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
*/
#include "ndrtypes.ndl"
/*
* Normally, constructs are (un)marshalled atoms first, then
* constructs, then pointers. This can be confusing sometimes
* when debugging. We know that everything in here can be
* safely (un)marshalled in member order, so we say so.
*/
#else
/*
* UUID (Universal Unique IDentifier)
*/
};
};
/*
* Representation label -- needed for RPC header
*
* Bits Data Type Description
* ---- --------- -----------
* 0-3 charset 0=ASCII
* 1=EBCDIC
* 4-7 byte-order 0=big-endian
* 1=little-endian
* 8-15 float 0=IEEE
* 1=VAX
* 2=Cray
* 3=IBM
* 16-31 reserved
*/
};
/*
* RPC PDU (Protocol Data Unit) types
****************************************************************
*/
/*
* Flags in the RPC header for Connection-oriented PDU data types
*
* MS-RPCE 2.2.2.3 PFC_SUPPORT_HEADER_SIGN
* For PDU types bind, bind_ack, alter_context and alter_context_resp,
* 0x04 means PFC_SUPPORT_HEADER_SIGN.
* For other PDU types 0x04 means PFC_PENDING_CANCEL.
*/
* of single connection */
* call did not execute */
/*
* Security Providers
* MS-RPCE 2.2.1.1.6
*/
/*
* Encoding protection levels
* MS-RPCE 2.2.1.1.7
*/
/*
* Header common to all Connection-oriented RPC PDUs
*/
};
packed_drep; /* 04:04 NDR representation label */
/* 16: */
};
/*
* MS-RPCE 2.2.6 Type Serialization Version 1 extensions to IDL/+ pickle
* One header per serialization stream: the header must be little endian.
* The filler must be set to 0xcccccccc during marshaling and ignored
* during unmarshaling.
*/
/* 8: */
};
/*
* Type Serialization Version 1 Private Header.
* A private header must precede a top-level NDR constructed type.
*/
/* 8: */
};
/*
* MS-RPCE 2.2.7 Type Serialization Version 2 extensions Version 1 (2.2.6).
* The header must be little endian.
* The endianinfo and reserved fields must be set to 0xcccccccc during
* marshaling and ignored during unmarshaling.
*/
/* 64: */
};
/*
* Type Serialization Version 2 Private Header.
* A private header must precede a top-level NDR constructed type.
*/
/* 16: */
};
/*
* This header comes before the NDR-encoded KERB_VALIDATION_INFO structure,
* which can be found in one of the info buffers of the PAC.
*/
};
/*
*/
/*SIZE_IS(n_transfer_syn)*/
};
/*SIZE_IS(n_context_elem)*/
};
/*
* Reasons for provider rejection.
*/
};
/*SIZE_IS(n_results)*/
};
/*SIZE_IS(length)*/
/* \PIPE\ntsvcs */
/* We cheat by using 18, and pad on the right with zeroes */
};
/*
* Reasons for rejecting an association in the bind_nak PDU.
* MS-RPCE 2.2.2.5
*/
/*
* Alter Context PDU (0x0E)
*/
/*
* Presentation context list (see bind hdr comments).
*/
/* optional authentication verifier if auth_length != 0 */
/* auth_verifier_co_t auth_verifier; */
};
/*
* Alter Context Response PDU (0x0F)
*
* We can't automatically generate an alter context response header because
* the sec_addr is an interior conformant (variable length) array, which is
* a hand-coded marshalling function.
*/
/*
* Presentation context list (see bind hdr comments).
*/
/* optional authentication verifier if auth_length != 0 */
/* auth_verifier_co_t auth_verifier; */
};
/*
* Bind PDU (0x0B)
*/
/* 24: */
/* presentation, a variable**2 list, of presentation contexts */
/*
* This could be followed by more transfer_syntaxes[] for the
* p_cont_elem[0], and subsequently followed by more p_cont_elem[],
* each with one or more transfer_syntaxes[]. A single
* p_cont_elem[] with a single transfer_syntaxes[] is so common,
* though, we embed it in the bind_hdr but the bind processor must
* walk through this tail if there is one.
*/
/* optional authentication verifier iff auth_length != 0 */
/* auth_verifier_co_t auth_verifier; */
};
/*
* Bind_Ack PDU (0x0C)
*
* We can't automatically generate a bind ack header because the sec_addr
* is an interior conformant (variable length) array, which is inconsistent
* marshalling function.
*/
/* This could be followed by more. See bind_hdr above */
/* optional authentication verifier iff auth_length != 0 */
/* auth_verifier_co_t auth_verifier; */
};
/*
* Request PDU (0x00)
****************************************************************
* Two flavors, selected based on PFC_OBJECT_UUID in hdr.pfc_flags
* one without the "object" (flag clear)
* one with the "object" (flag set)
*/
/* needed for request, response, or fault */
/* optional field if PFC_OBJECT_UUID, not present */
/* ndr_uuid_t object; */
/* stub-data, 8-octet aligned */ /* 24:nn */
/* nn = frag_len - sizeof(common_header) - auth_len */
/* optional authentication verifier iff auth_length != 0 */
/* auth_verifier_co_t auth_verifier; */
};
/* needed for request, response, or fault */
/* optional field if PFC_OBJECT_UUID, is present */
/* stub-data, 8-octet aligned */ /* 28:nn */
/* nn = frag_len - sizeof(common_header) - auth_len */
/* nn -= sizeof(ndr_uuid_t); */
/* optional authentication verifier iff auth_length != 0 */
/* auth_verifier_co_t auth_verifier; */
};
/*
* Convenient for response header sizing and multi-fragment responses.
* We know the header is going to be 24 bytes.
*/
/*
* Response PDU (0x02)
*/
/* needed for request, response, or fault */
/* needed for response or fault */
/* stub-data, 8-octet aligned */ /* 24:nn */
/* nn = frag_len - sizeof(common_header) - auth_len */
/* optional authentication verifier iff auth_length != 0 */
/* auth_verifier_co_t auth_verifier; */
};
/*
* Fault PDU (0x03)
*/
/* needed for response or fault */
/* fault code */
/* pad to 8-byte alignment */
/* stub-data here if status==0. We do not use this mode. */
/* optional authentication verifier iff auth_length != 0 */
/* auth_verifier_co_t auth_verifier; */
};
/*
****************************************************************
*/
INTERFACE(0)
};
#endif /* _RPCPDU_NDL_ */