rpcpdu.ndl revision da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0
/*
* 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
*/
/*
* Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#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
*/
* of single connection */
* call did not execute */
/*
* Header common to all Connection-oriented RPC PDUs
****************************************************************
*/
packed_drep; /* 04:04 NDR representation label */
/* 16: */
};
/*
* A plethora of supporting types, only defined the ones we need
*/
};
/*SIZE_IS(n_transfer_syn)*/
};
/*SIZE_IS(n_context_elem)*/
};
* result!=ACCEPT*/
};
/*SIZE_IS(n_results)*/
};
/*SIZE_IS(length)*/
/* \PIPE\ntsvcs */
/* We cheat by using 18, and pad on the right with zeroes */
};
/*
* 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)
*/
/*
* Presentation context list (see bind hdr comments).
*/
/* optional authentication verifier if auth_length != 0 */
/* auth_verifier_co_t auth_verifier; */
};
/*
* Bind PDU (0x0B)
****************************************************************
*/
* association group (???) */
/* 24: */
/* presentation, a variable**2 list, of presentation contexts */
/*
* This could be follow by more transfer_syntaxes[] for
* the p_cont_elem[0], and subsequently followed by
* more p_cont_elem[] each with one ore more
* transfer_syntaxes[]. The single p_cont_elem[]
* with a single transfer_syntaxes[] is so common,
* though, we embed such right in the bind_hdr.
* The mlrpc_s_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)
****************************************************************
*/
/*
* hand coded in mlrpc_encdec.c because sec_addr is an
* interior conformant (variable length) array.
*/
IMPORT_EXTERN /* don't generate function */
* association group (???) */
/* 24: */
/* 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 MLRPC_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 */
p_cont_id; /* 20:02 pres context, i.e. data rep */
/* optional field if PFC_OBJECT_UUID, not present */
/* mlrpc_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 */
p_cont_id; /* 20:02 pres context, i.e. data rep */
/* 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(mlrpc_uuid_t); */
/* optional authentication verifier iff auth_length != 0 */
/* auth_verifier_co_t auth_verifier; */
};
/*
* Hack 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 */
p_cont_id; /* 20:02 pres context, i.e. data rep */
/* 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)
*/
p_cont_id; /* 20:02 pres context, i.e. data rep */
/* 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 /* _MLRPCPDU_NDL_ */