da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * CDDL HEADER START
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * The contents of this file are subject to the terms of the
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Common Development and Distribution License (the "License").
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * You may not use this file except in compliance with the License.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * or http://www.opensolaris.org/os/licensing.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * See the License for the specific language governing permissions
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * and limitations under the License.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * When distributing Covered Code, include this CDDL HEADER in each
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * If applicable, add the following below this CDDL HEADER, with the
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * fields enclosed by brackets "[]" replaced with your own identifying
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * information: Portions Copyright [yyyy] [name of copyright owner]
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * CDDL HEADER END
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Use is subject to license terms.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#ifndef _NDR_TYPES_NDL_
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define _NDR_TYPES_NDL_
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define TYPEINFO(TYPE) ndt__##TYPE
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#ifdef NDRGEN
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define ALIGN(X) [align(X)]
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define OPERATION(X) [operation(X)]
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define IN [in]
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define OUT [out]
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define INOUT [in out]
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define STRING [string]
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SIZE_IS(X) [size_is(X)]
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SWITCH(X) [switch_is(X)]
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define CASE(X) [case(X)]
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define DEFAULT [default]
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define INTERFACE(X) [interface(X)]
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define UUID(X) [uuid(X)]
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define ARG_IS(X) [arg_is(X)]
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define REFERENCE [reference]
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define REF [reference]
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define UNIQUE [unique]
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define PTR [ptr]
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define POINTER_DEFAULT(X) [pointer_default(X)]
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define ANY_SIZE_ARRAY *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define IMPORT_EXTERN [extern]
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define BYTE uchar
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define WORD ushort
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define DWORD ulong
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define ntstatus_t ulong
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define LPTSTR STRING wchar *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define LPBYTE uchar *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define LPWORD ushort *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define LPDWORD ulong *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
8d7e41661dc4633488e93b13363137523ce59977jose borrego/*
8d7e41661dc4633488e93b13363137523ce59977jose borrego * Opaque context handle.
8d7e41661dc4633488e93b13363137523ce59977jose borrego */
8d7e41661dc4633488e93b13363137523ce59977jose borrego#ifndef CONTEXT_HANDLE
8d7e41661dc4633488e93b13363137523ce59977jose borrego#define CONTEXT_HANDLE(NAME) \
8d7e41661dc4633488e93b13363137523ce59977jose borrego struct NAME { \
8d7e41661dc4633488e93b13363137523ce59977jose borrego DWORD data1; \
8d7e41661dc4633488e93b13363137523ce59977jose borrego DWORD data2; \
8d7e41661dc4633488e93b13363137523ce59977jose borrego WORD data3[2]; \
8d7e41661dc4633488e93b13363137523ce59977jose borrego BYTE data4[8]; \
8d7e41661dc4633488e93b13363137523ce59977jose borrego }; \
8d7e41661dc4633488e93b13363137523ce59977jose borrego typedef struct NAME
8d7e41661dc4633488e93b13363137523ce59977jose borrego#endif /* CONTEXT_HANDLE */
8d7e41661dc4633488e93b13363137523ce59977jose borrego
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define EXTERNTYPEINFO(TYPE)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#else /* NDRGEN */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define ALIGN(X)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define OPERATION(X)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define IN
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define OUT
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define INOUT
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define STRING
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SIZE_IS(X)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SWITCH(X)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define CASE(X)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define DEFAULT
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define INTERFACE(X)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define UUID(X)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define ARG_IS(X)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define REFERENCE
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define REF
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define UNIQUE
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define PTR
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define POINTER_DEFAULT(X)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define IMPORT_EXTERN
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
8d7e41661dc4633488e93b13363137523ce59977jose borrego/*
8d7e41661dc4633488e93b13363137523ce59977jose borrego * When not using ndrgen, get BYTE, WORD, DWORD definitions from wintypes.h.
8d7e41661dc4633488e93b13363137523ce59977jose borrego */
8d7e41661dc4633488e93b13363137523ce59977jose borrego#include <smbsrv/wintypes.h>
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
8d7e41661dc4633488e93b13363137523ce59977jose borrego#define EXTERNTYPEINFO(TYPE) extern struct ndr_typeinfo TYPEINFO(TYPE);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * There is a bug in the way that midl and the marshalling code handles
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * unions so we need to fix some of the data offsets at runtime. The
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * following macros and the fixup function handle the correction.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * DECL_FIXUP_STRUCT allows us to declare external references to data
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * structures generated by ndrgen in the _ndr.c file.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
8d7e41661dc4633488e93b13363137523ce59977jose borrego#define DECL_FIXUP_STRUCT(NAME) extern struct ndr_typeinfo ndt__##NAME
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * CASE_INFO_ENT is intended to simplify the declaration of the case
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * statement in the fixup function. Assuming you have followed the
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * convention for naming the individual structures all you have to do
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * is add a single line to the fixup function for each new case.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define CASE_INFO_ENT(NAME,N) \
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw case N: size1 = sizeof (struct NAME##N); \
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw break
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * FIXUP_PDU_SIZE is used to patch the appropriate structures (identified
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * by DECL_FIXUP_STRUCT) at runtime. The values are based on the
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * switch_index.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define FIXUP_PDU_SIZE(NAME,SIZE) { \
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ndt__##NAME.pdu_size_fixed_part = SIZE; \
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ndt__##NAME.c_size_fixed_part = SIZE; \
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw}
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#endif /* NDRGEN */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * UNION_INFO_ENT is intended to simplify adding new entries to a union.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * If the entry structures are named using the form FunctionNameX,
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * where X is the sitch_value, you can just add a single line. Note
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * that you must also update the fixup function in mlsvc_xxx.c.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define UNION_INFO_ENT(N,NAME) CASE(N) struct NAME##N info##N
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define UNION_INFO_PTR(N,NAME) CASE(N) struct NAME##N *info##N
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#endif /* _NDR_TYPES_NDL_ */