d0e518695adc90b82233b99af7dffbb3d3f92c00amw * CDDL HEADER START
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * The contents of this file are subject to the terms of the
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * Common Development and Distribution License (the "License").
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * You may not use this file except in compliance with the License.
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * See the License for the specific language governing permissions
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * and limitations under the License.
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * When distributing Covered Code, include this CDDL HEADER in each
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * If applicable, add the following below this CDDL HEADER, with the
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * fields enclosed by brackets "[]" replaced with your own identifying
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * information: Portions Copyright [yyyy] [name of copyright owner]
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * CDDL HEADER END
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * Use is subject to license terms.
d0e518695adc90b82233b99af7dffbb3d3f92c00amwstatic void generate_member_macro(char *, char *, ndr_member_t *,
d0e518695adc90b82233b99af7dffbb3d3f92c00amwstatic void generate_member_macro_with_arg(char *, char *, ndr_member_t *,
d0e518695adc90b82233b99af7dffbb3d3f92c00amwstatic void generate_prototypes(ndr_typeinfo_t *, char *);
d0e518695adc90b82233b99af7dffbb3d3f92c00amwstatic void generate_member_prototypes(ndr_typeinfo_t *, ndr_member_t *,
d0e518695adc90b82233b99af7dffbb3d3f92c00amwstatic void generate_member(ndr_typeinfo_t *, ndr_member_t *);
d0e518695adc90b82233b99af7dffbb3d3f92c00amwstatic void generate_aggregate_common_begin(ndr_typeinfo_t *);
d0e518695adc90b82233b99af7dffbb3d3f92c00amwstatic void generate_aggregate_common_finish(ndr_typeinfo_t *);
d0e518695adc90b82233b99af7dffbb3d3f92c00amwstatic void generate_typeinfo_typeinfo(ndr_typeinfo_t *, int, char *);
d0e518695adc90b82233b99af7dffbb3d3f92c00amw "extern struct ndr_typeinfo ndt_%s;\n",
d0e518695adc90b82233b99af7dffbb3d3f92c00amw /* silently skip */
d0e518695adc90b82233b99af7dffbb3d3f92c00amwstatic void
d0e518695adc90b82233b99af7dffbb3d3f92c00amw /* just use generate_params(), which can safely do this */
d0e518695adc90b82233b99af7dffbb3d3f92c00amw (void) printf(" /* do all constructed elements w/o pointers */\n");
d0e518695adc90b82233b99af7dffbb3d3f92c00amw (void) printf(" /* do members with pointers in order */\n");
d0e518695adc90b82233b99af7dffbb3d3f92c00amwstatic void
d0e518695adc90b82233b99af7dffbb3d3f92c00amwstatic void
d0e518695adc90b82233b99af7dffbb3d3f92c00amw "NDR_ERR_SWITCH_VALUE_INVALID);\n");
d0e518695adc90b82233b99af7dffbb3d3f92c00amwstatic void
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright if (np->label != IDENTIFIER && np->label != INTEGER)
d0e518695adc90b82233b99af7dffbb3d3f92c00amwstatic void
d0e518695adc90b82233b99af7dffbb3d3f92c00amwgenerate_member_macro(char *memkind, char *macro, ndr_member_t *mem,
d0e518695adc90b82233b99af7dffbb3d3f92c00amwstatic void
d0e518695adc90b82233b99af7dffbb3d3f92c00amwgenerate_member_macro_with_arg(char *memkind, char *macro,
d0e518695adc90b82233b99af7dffbb3d3f92c00amwstatic void
d0e518695adc90b82233b99af7dffbb3d3f92c00amwgenerate_prototypes(ndr_typeinfo_t *ti, char *fname_type)
d0e518695adc90b82233b99af7dffbb3d3f92c00amw if (ti->type_op == STRUCT_KW && ti->advice.a_operation) {
d0e518695adc90b82233b99af7dffbb3d3f92c00amwstatic void
d0e518695adc90b82233b99af7dffbb3d3f92c00amwstatic void
d0e518695adc90b82233b99af7dffbb3d3f92c00amw " * Cannot use the canned offsets to unmarshall multiple",
d0e518695adc90b82233b99af7dffbb3d3f92c00amw " * entry discriminated unions. The service must provide",
d0e518695adc90b82233b99af7dffbb3d3f92c00amw " * this function to patch the offsets at runtime.",
d0e518695adc90b82233b99af7dffbb3d3f92c00amw "_ARR_WITH_SIZE_IS",
d0e518695adc90b82233b99af7dffbb3d3f92c00amw "_WITH_LENGTH_IS",
d0e518695adc90b82233b99af7dffbb3d3f92c00amw "_ARR_WITH_DIMENSION",
d0e518695adc90b82233b99af7dffbb3d3f92c00amwstatic void
d0e518695adc90b82233b99af7dffbb3d3f92c00amw (void) printf("ndr_%s (struct ndr_reference *encl_ref)\n",
d0e518695adc90b82233b99af7dffbb3d3f92c00amw (void) printf(" %s = %s encl_ref->datum;\n", val_buf, cast_buf);
d0e518695adc90b82233b99af7dffbb3d3f92c00amw (void) printf(" (void) bzero(&myref, sizeof (myref));\n");
d0e518695adc90b82233b99af7dffbb3d3f92c00amw/* ARGSUSED */
d0e518695adc90b82233b99af7dffbb3d3f92c00amwstatic void
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * Structures are normally 4-byte (dword) aligned but the align directive
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * can be used to pack on a 2-byte (word) boundary. An align value of
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * zero is taken to mean use default (dword) alignment. Default packing
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * doesn't need to be flagged.
d0e518695adc90b82233b99af7dffbb3d3f92c00amwstatic void
d0e518695adc90b82233b99af7dffbb3d3f92c00amw /* default alignment */
d0e518695adc90b82233b99af7dffbb3d3f92c00amw /* NOTREACHED */
d0e518695adc90b82233b99af7dffbb3d3f92c00amw (void) printf(" myref.packed_alignment = %lu;\n", packing);
d0e518695adc90b82233b99af7dffbb3d3f92c00amwstatic void
d0e518695adc90b82233b99af7dffbb3d3f92c00amwgenerate_typeinfo_typeinfo(ndr_typeinfo_t *ti, int is_static, char *fname_type)
d0e518695adc90b82233b99af7dffbb3d3f92c00amw if (*flags == 0)
d0e518695adc90b82233b99af7dffbb3d3f92c00amw (void) printf("int ndr_%s (struct ndr_reference *encl_ref);\n",
d0e518695adc90b82233b99af7dffbb3d3f92c00amw (void) printf("struct ndr_typeinfo ndt_%s = {\n", fname_type);
d0e518695adc90b82233b99af7dffbb3d3f92c00amw (void) printf("\t%d, /* alignment */\n", ti->alignment);
d0e518695adc90b82233b99af7dffbb3d3f92c00amw (void) printf("\tndr_%s, /* ndr_func */\n", fname_type);