xref: /onnv-gate/usr/src/uts/common/smbsrv/smb_xdr.h (revision 12508:edb7861a1533)
15331Samw /*
25331Samw  * CDDL HEADER START
35331Samw  *
45331Samw  * The contents of this file are subject to the terms of the
55331Samw  * Common Development and Distribution License (the "License").
65331Samw  * You may not use this file except in compliance with the License.
75331Samw  *
85331Samw  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
95331Samw  * or http://www.opensolaris.org/os/licensing.
105331Samw  * See the License for the specific language governing permissions
115331Samw  * and limitations under the License.
125331Samw  *
135331Samw  * When distributing Covered Code, include this CDDL HEADER in each
145331Samw  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
155331Samw  * If applicable, add the following below this CDDL HEADER, with the
165331Samw  * fields enclosed by brackets "[]" replaced with your own identifying
175331Samw  * information: Portions Copyright [yyyy] [name of copyright owner]
185331Samw  *
195331Samw  * CDDL HEADER END
205331Samw  */
215331Samw /*
2212065SKeyur.Desai@Sun.COM  * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
235331Samw  */
245331Samw 
255331Samw #ifndef	_SMBSRV_SMB_XDR_H
265331Samw #define	_SMBSRV_SMB_XDR_H
275331Samw 
285331Samw #ifdef	__cplusplus
295331Samw extern "C" {
305331Samw #endif
315331Samw 
325331Samw #include <rpc/xdr.h>
335331Samw #include <sys/param.h>
3411963SAfshin.Ardakani@Sun.COM #include <sys/avl.h>
3511337SWilliam.Krier@Sun.COM #include <smbsrv/wintypes.h>
3611337SWilliam.Krier@Sun.COM #include <smbsrv/smb_sid.h>
378670SJose.Borrego@Sun.COM #include <smbsrv/smbinfo.h>
3810122SJordan.Brown@Sun.COM #include <smbsrv/smb_ioctl.h>
3911963SAfshin.Ardakani@Sun.COM #include <smbsrv/smb_sid.h>
40*12508Samw@Sun.COM #include <smbsrv/smb_share.h>
4111963SAfshin.Ardakani@Sun.COM #include <smbsrv/smb_dfs.h>
42*12508Samw@Sun.COM #include <smbsrv/wintypes.h>
435331Samw 
445331Samw #ifdef _KERNEL
455331Samw #define	xdr_int8_t	xdr_char
465331Samw #define	xdr_uint8_t	xdr_u_char
475331Samw #define	xdr_int16_t	xdr_short
485331Samw #define	xdr_uint16_t	xdr_u_short
495331Samw #endif /* _KERNEL */
505331Samw 
5111963SAfshin.Ardakani@Sun.COM /* null-terminated string */
5211963SAfshin.Ardakani@Sun.COM typedef struct smb_string {
535331Samw 	char *buf;
5411963SAfshin.Ardakani@Sun.COM } smb_string_t;
555331Samw 
5611963SAfshin.Ardakani@Sun.COM /* 32-bit opaque buffer (non-null terminated strings) */
5711963SAfshin.Ardakani@Sun.COM typedef struct smb_buf32 {
5811963SAfshin.Ardakani@Sun.COM 	uint32_t	len;
5911963SAfshin.Ardakani@Sun.COM 	uint8_t		*val;
6011963SAfshin.Ardakani@Sun.COM } smb_buf32_t;
615331Samw 
627052Samw #define	SMB_OPIPE_HDR_MAGIC	0x4F484452	/* OHDR */
637052Samw #define	SMB_OPIPE_DOOR_BUFSIZE	(30 * 1024)
647052Samw 
655331Samw /*
667052Samw  * Door operations for opipes.
675331Samw  */
687052Samw typedef enum {
697052Samw 	SMB_OPIPE_NULL = 0,
707052Samw 	SMB_OPIPE_LOOKUP,
717052Samw 	SMB_OPIPE_OPEN,
727052Samw 	SMB_OPIPE_CLOSE,
737052Samw 	SMB_OPIPE_READ,
747052Samw 	SMB_OPIPE_WRITE,
7511963SAfshin.Ardakani@Sun.COM 	SMB_OPIPE_EXEC
767052Samw } smb_opipe_op_t;
777052Samw 
7811963SAfshin.Ardakani@Sun.COM #define	SMB_DOOR_HDR_MAGIC	0x444F4F52	/* DOOR */
7911963SAfshin.Ardakani@Sun.COM 
8011963SAfshin.Ardakani@Sun.COM /*
8111963SAfshin.Ardakani@Sun.COM  * Door header flags.
8211963SAfshin.Ardakani@Sun.COM  */
8311963SAfshin.Ardakani@Sun.COM #define	SMB_DF_ASYNC		0x00000001	/* Asynchronous call */
8411963SAfshin.Ardakani@Sun.COM #define	SMB_DF_SYSSPACE		0x00000002	/* Called from the kernel */
8511963SAfshin.Ardakani@Sun.COM #define	SMB_DF_USERSPACE	0x00000004	/* Called from user space */
8611963SAfshin.Ardakani@Sun.COM 
8711963SAfshin.Ardakani@Sun.COM /*
8811963SAfshin.Ardakani@Sun.COM  * Header for door calls.  The op codes and return codes are defined
8911963SAfshin.Ardakani@Sun.COM  * in smb_door.h.  The header is here to make it available to XDR.
9011963SAfshin.Ardakani@Sun.COM  *
9111963SAfshin.Ardakani@Sun.COM  * fid		For opipe: the pipe identifier.
9211963SAfshin.Ardakani@Sun.COM  * op		The door operation being invoked.
9311963SAfshin.Ardakani@Sun.COM  * txid		Unique transaction id for the current door call.
9411963SAfshin.Ardakani@Sun.COM  * datalen	Bytes of data following the header (excludes the header).
9511963SAfshin.Ardakani@Sun.COM  * resid	For opipe: the number of bytes remaining in the server.
9611963SAfshin.Ardakani@Sun.COM  * door_rc	Return code provided by the door server.
9711963SAfshin.Ardakani@Sun.COM  * status	A pass-through status provided by the door operation.
9811963SAfshin.Ardakani@Sun.COM  */
9911963SAfshin.Ardakani@Sun.COM typedef struct smb_doorhdr {
10011963SAfshin.Ardakani@Sun.COM 	uint32_t dh_magic;
10111963SAfshin.Ardakani@Sun.COM 	uint32_t dh_flags;
10211963SAfshin.Ardakani@Sun.COM 	uint32_t dh_fid;
10311963SAfshin.Ardakani@Sun.COM 	uint32_t dh_op;
10411963SAfshin.Ardakani@Sun.COM 	uint32_t dh_txid;
10511963SAfshin.Ardakani@Sun.COM 	uint32_t dh_datalen;
10611963SAfshin.Ardakani@Sun.COM 	uint32_t dh_resid;
10711963SAfshin.Ardakani@Sun.COM 	uint32_t dh_door_rc;
10811963SAfshin.Ardakani@Sun.COM 	uint32_t dh_status;
10911963SAfshin.Ardakani@Sun.COM } smb_doorhdr_t;
1107052Samw 
11110122SJordan.Brown@Sun.COM typedef struct smb_netuserinfo {
11210122SJordan.Brown@Sun.COM 	uint64_t	ui_session_id;
11312065SKeyur.Desai@Sun.COM 	uint16_t	ui_smb_uid;
11410122SJordan.Brown@Sun.COM 	uint16_t	ui_domain_len;
11510122SJordan.Brown@Sun.COM 	char		*ui_domain;
11610122SJordan.Brown@Sun.COM 	uint16_t	ui_account_len;
11710122SJordan.Brown@Sun.COM 	char		*ui_account;
11812065SKeyur.Desai@Sun.COM 	uid_t		ui_posix_uid;
11910122SJordan.Brown@Sun.COM 	uint16_t	ui_workstation_len;
12010122SJordan.Brown@Sun.COM 	char		*ui_workstation;
12110122SJordan.Brown@Sun.COM 	smb_inaddr_t	ui_ipaddr;
12210122SJordan.Brown@Sun.COM 	int32_t		ui_native_os;
12310122SJordan.Brown@Sun.COM 	int64_t		ui_logon_time;
12410122SJordan.Brown@Sun.COM 	uint32_t	ui_numopens;
12510122SJordan.Brown@Sun.COM 	uint32_t	ui_flags;
12610122SJordan.Brown@Sun.COM } smb_netuserinfo_t;
12710122SJordan.Brown@Sun.COM 
12810122SJordan.Brown@Sun.COM typedef struct smb_opennum {
12910122SJordan.Brown@Sun.COM 	uint32_t	open_users;
13010122SJordan.Brown@Sun.COM 	uint32_t	open_trees;
13110122SJordan.Brown@Sun.COM 	uint32_t	open_files;
13210122SJordan.Brown@Sun.COM 	uint32_t	qualtype;
13310122SJordan.Brown@Sun.COM 	char		qualifier[MAXNAMELEN];
13410122SJordan.Brown@Sun.COM } smb_opennum_t;
1355331Samw 
13610122SJordan.Brown@Sun.COM typedef struct smb_netconnectinfo {
13710122SJordan.Brown@Sun.COM 	uint32_t	ci_id;
13810122SJordan.Brown@Sun.COM 	uint32_t	ci_type;
13910122SJordan.Brown@Sun.COM 	uint32_t	ci_numopens;
14010122SJordan.Brown@Sun.COM 	uint32_t	ci_numusers;
14110122SJordan.Brown@Sun.COM 	uint32_t	ci_time;
14210122SJordan.Brown@Sun.COM 	uint32_t	ci_namelen;
14310122SJordan.Brown@Sun.COM 	uint32_t	ci_sharelen;
14410122SJordan.Brown@Sun.COM 	char		*ci_username;
14510122SJordan.Brown@Sun.COM 	char		*ci_share;
14610122SJordan.Brown@Sun.COM } smb_netconnectinfo_t;
14710122SJordan.Brown@Sun.COM 
14810122SJordan.Brown@Sun.COM typedef struct smb_netfileinfo {
14910122SJordan.Brown@Sun.COM 	uint16_t	fi_fid;
15010122SJordan.Brown@Sun.COM 	uint32_t	fi_uniqid;
15110122SJordan.Brown@Sun.COM 	uint32_t	fi_permissions;
15210122SJordan.Brown@Sun.COM 	uint32_t	fi_numlocks;
15310122SJordan.Brown@Sun.COM 	uint32_t	fi_pathlen;
15410122SJordan.Brown@Sun.COM 	uint32_t	fi_namelen;
15510122SJordan.Brown@Sun.COM 	char		*fi_path;
15610122SJordan.Brown@Sun.COM 	char		*fi_username;
15710122SJordan.Brown@Sun.COM } smb_netfileinfo_t;
15810122SJordan.Brown@Sun.COM 
15910122SJordan.Brown@Sun.COM typedef struct smb_netsvcitem {
16010122SJordan.Brown@Sun.COM 	list_node_t	nsi_lnd;
16110122SJordan.Brown@Sun.COM 	union {
16210122SJordan.Brown@Sun.COM 		smb_netuserinfo_t	nsi_user;
16310122SJordan.Brown@Sun.COM 		smb_netconnectinfo_t	nsi_tree;
16410122SJordan.Brown@Sun.COM 		smb_netfileinfo_t	nsi_ofile;
16510122SJordan.Brown@Sun.COM 	} nsi_un;
16610122SJordan.Brown@Sun.COM } smb_netsvcitem_t;
16710122SJordan.Brown@Sun.COM 
16810122SJordan.Brown@Sun.COM typedef struct smb_netsvc {
16910122SJordan.Brown@Sun.COM 	list_t			ns_list;
17010122SJordan.Brown@Sun.COM 	smb_netsvcitem_t	*ns_items;
17110122SJordan.Brown@Sun.COM 	smb_ioc_svcenum_t	*ns_ioc;
17210122SJordan.Brown@Sun.COM 	uint32_t		ns_ioclen;
17310122SJordan.Brown@Sun.COM } smb_netsvc_t;
1745331Samw 
1755331Samw 
17611963SAfshin.Ardakani@Sun.COM bool_t smb_buf32_xdr(XDR *, smb_buf32_t *);
17711963SAfshin.Ardakani@Sun.COM bool_t smb_string_xdr(XDR *, smb_string_t *);
17811963SAfshin.Ardakani@Sun.COM bool_t smb_inaddr_xdr(XDR *, smb_inaddr_t *);
17911963SAfshin.Ardakani@Sun.COM 
18011963SAfshin.Ardakani@Sun.COM const char *smb_doorhdr_opname(uint32_t);
18111963SAfshin.Ardakani@Sun.COM int smb_doorhdr_encode(smb_doorhdr_t *, uint8_t *, uint32_t);
18211963SAfshin.Ardakani@Sun.COM int smb_doorhdr_decode(smb_doorhdr_t *, uint8_t *, uint32_t);
18311963SAfshin.Ardakani@Sun.COM bool_t smb_doorhdr_xdr(XDR *xdrs, smb_doorhdr_t *objp);
18410122SJordan.Brown@Sun.COM int smb_netuserinfo_encode(smb_netuserinfo_t *, uint8_t *, uint32_t, uint_t *);
18510122SJordan.Brown@Sun.COM int smb_netuserinfo_decode(smb_netuserinfo_t *, uint8_t *, uint32_t, uint_t *);
18610122SJordan.Brown@Sun.COM bool_t smb_netuserinfo_xdr(XDR *, smb_netuserinfo_t *);
18710122SJordan.Brown@Sun.COM int smb_netconnectinfo_encode(smb_netconnectinfo_t *, uint8_t *, uint32_t,
1889832Samw@Sun.COM     uint_t *);
18910122SJordan.Brown@Sun.COM int smb_netconnectinfo_decode(smb_netconnectinfo_t *, uint8_t *, uint32_t,
1909832Samw@Sun.COM     uint_t *);
19110122SJordan.Brown@Sun.COM bool_t smb_netconnectinfo_xdr(XDR *, smb_netconnectinfo_t *);
19210122SJordan.Brown@Sun.COM int smb_netfileinfo_encode(smb_netfileinfo_t *, uint8_t *, uint32_t, uint_t *);
19310122SJordan.Brown@Sun.COM int smb_netfileinfo_decode(smb_netfileinfo_t *, uint8_t *, uint32_t, uint_t *);
19410122SJordan.Brown@Sun.COM bool_t smb_netfileinfo_xdr(XDR *, smb_netfileinfo_t *);
19510122SJordan.Brown@Sun.COM 
19611337SWilliam.Krier@Sun.COM typedef uint16_t sid_type_t;
19711337SWilliam.Krier@Sun.COM 
19811337SWilliam.Krier@Sun.COM typedef struct lsa_account {
19911337SWilliam.Krier@Sun.COM 	ntstatus_t	a_status;
20011337SWilliam.Krier@Sun.COM 	sid_type_t	a_sidtype;
20111337SWilliam.Krier@Sun.COM 	char		a_domain[MAXNAMELEN];
20211337SWilliam.Krier@Sun.COM 	char		a_name[MAXNAMELEN];
20311337SWilliam.Krier@Sun.COM 	char		a_sid[SMB_SID_STRSZ];
20411337SWilliam.Krier@Sun.COM } lsa_account_t;
20511337SWilliam.Krier@Sun.COM 
20611337SWilliam.Krier@Sun.COM int lsa_account_encode(lsa_account_t *, uint8_t *, uint32_t);
20711337SWilliam.Krier@Sun.COM int lsa_account_decode(lsa_account_t *, uint8_t *, uint32_t);
20811337SWilliam.Krier@Sun.COM bool_t lsa_account_xdr(XDR *, lsa_account_t *);
20911337SWilliam.Krier@Sun.COM 
2108474SJose.Borrego@Sun.COM /*
2118474SJose.Borrego@Sun.COM  * VSS Door Structures
2128474SJose.Borrego@Sun.COM  */
2138474SJose.Borrego@Sun.COM #define	SMB_VSS_GMT_SIZE sizeof ("@GMT-yyyy.mm.dd-hh.mm.ss")
2148474SJose.Borrego@Sun.COM 
21511963SAfshin.Ardakani@Sun.COM typedef struct smb_gmttoken_query {
21611963SAfshin.Ardakani@Sun.COM 	uint32_t	gtq_count;
21711963SAfshin.Ardakani@Sun.COM 	char		*gtq_path;
21811963SAfshin.Ardakani@Sun.COM } smb_gmttoken_query_t;
2198474SJose.Borrego@Sun.COM 
22011963SAfshin.Ardakani@Sun.COM typedef char *smb_gmttoken_t;
2218474SJose.Borrego@Sun.COM 
22211963SAfshin.Ardakani@Sun.COM typedef struct smb_gmttoken_response {
22311963SAfshin.Ardakani@Sun.COM 	uint32_t gtr_count;
2248474SJose.Borrego@Sun.COM 	struct {
22511963SAfshin.Ardakani@Sun.COM 		uint_t		gtr_gmttokens_len;
22611963SAfshin.Ardakani@Sun.COM 		smb_gmttoken_t	*gtr_gmttokens_val;
22711963SAfshin.Ardakani@Sun.COM 	} gtr_gmttokens;
22811963SAfshin.Ardakani@Sun.COM } smb_gmttoken_response_t;
22911963SAfshin.Ardakani@Sun.COM 
23011963SAfshin.Ardakani@Sun.COM typedef struct smb_gmttoken_snapname {
23111963SAfshin.Ardakani@Sun.COM 	char	*gts_path;
23211963SAfshin.Ardakani@Sun.COM 	char	*gts_gmttoken;
23311963SAfshin.Ardakani@Sun.COM } smb_gmttoken_snapname_t;
23411963SAfshin.Ardakani@Sun.COM 
23511963SAfshin.Ardakani@Sun.COM bool_t smb_gmttoken_query_xdr(XDR *, smb_gmttoken_query_t *);
23611963SAfshin.Ardakani@Sun.COM bool_t smb_gmttoken_response_xdr(XDR *, smb_gmttoken_response_t *);
23711963SAfshin.Ardakani@Sun.COM bool_t smb_gmttoken_snapname_xdr(XDR *, smb_gmttoken_snapname_t *);
23811963SAfshin.Ardakani@Sun.COM 
23911963SAfshin.Ardakani@Sun.COM /*
24011963SAfshin.Ardakani@Sun.COM  * User and Group Quotas
24111963SAfshin.Ardakani@Sun.COM  *
24211963SAfshin.Ardakani@Sun.COM  * SMB User and Group quota values of SMB_QUOTA_UNLIMITED mean
24311963SAfshin.Ardakani@Sun.COM  * No Limit. This maps to 0 (none) on ZFS.
24411963SAfshin.Ardakani@Sun.COM  */
24511963SAfshin.Ardakani@Sun.COM #define	SMB_QUOTA_UNLIMITED		0xFFFFFFFFFFFFFFFF
24611963SAfshin.Ardakani@Sun.COM 
24711963SAfshin.Ardakani@Sun.COM typedef struct smb_quota {
24811963SAfshin.Ardakani@Sun.COM 	list_node_t q_list_node;
24911963SAfshin.Ardakani@Sun.COM 	char q_sidstr[SMB_SID_STRSZ];
25011963SAfshin.Ardakani@Sun.COM 	uint32_t q_sidtype;
25111963SAfshin.Ardakani@Sun.COM 	uint64_t q_used;
25211963SAfshin.Ardakani@Sun.COM 	uint64_t q_thresh;
25311963SAfshin.Ardakani@Sun.COM 	uint64_t q_limit;
25411963SAfshin.Ardakani@Sun.COM 	avl_node_t q_avl_node;
25511963SAfshin.Ardakani@Sun.COM } smb_quota_t;
25611963SAfshin.Ardakani@Sun.COM 
25711963SAfshin.Ardakani@Sun.COM typedef struct smb_quota_sid {
25811963SAfshin.Ardakani@Sun.COM 	list_node_t qs_list_node;
25911963SAfshin.Ardakani@Sun.COM 	char qs_sidstr[SMB_SID_STRSZ];
26011963SAfshin.Ardakani@Sun.COM } smb_quota_sid_t;
2618474SJose.Borrego@Sun.COM 
26211963SAfshin.Ardakani@Sun.COM typedef enum {
26311963SAfshin.Ardakani@Sun.COM 	SMB_QUOTA_QUERY_INVALID_OP,
26411963SAfshin.Ardakani@Sun.COM 	SMB_QUOTA_QUERY_SIDLIST,
26511963SAfshin.Ardakani@Sun.COM 	SMB_QUOTA_QUERY_STARTSID,
26611963SAfshin.Ardakani@Sun.COM 	SMB_QUOTA_QUERY_ALL
26711963SAfshin.Ardakani@Sun.COM } smb_quota_query_op_t;
26811963SAfshin.Ardakani@Sun.COM 
26911963SAfshin.Ardakani@Sun.COM typedef struct smb_quota_query {
27011963SAfshin.Ardakani@Sun.COM 	char *qq_root_path;
27111963SAfshin.Ardakani@Sun.COM 	uint32_t qq_query_op;	/* smb_quota_query_op_t */
27211963SAfshin.Ardakani@Sun.COM 	bool_t qq_single;
27311963SAfshin.Ardakani@Sun.COM 	bool_t qq_restart;
27411963SAfshin.Ardakani@Sun.COM 	uint32_t qq_max_quota;
27511963SAfshin.Ardakani@Sun.COM 	list_t qq_sid_list;	/* list of smb_quota_sid_t */
27611963SAfshin.Ardakani@Sun.COM } smb_quota_query_t;
27711963SAfshin.Ardakani@Sun.COM 
27811963SAfshin.Ardakani@Sun.COM typedef struct smb_quota_response {
27911963SAfshin.Ardakani@Sun.COM 	uint32_t qr_status;
28011963SAfshin.Ardakani@Sun.COM 	list_t qr_quota_list;	/* list of smb_quota_t */
28111963SAfshin.Ardakani@Sun.COM } smb_quota_response_t;
2828474SJose.Borrego@Sun.COM 
28311963SAfshin.Ardakani@Sun.COM typedef struct smb_quota_set {
28411963SAfshin.Ardakani@Sun.COM 	char *qs_root_path;
28511963SAfshin.Ardakani@Sun.COM 	list_t qs_quota_list;	/* list of smb_quota_t */
28611963SAfshin.Ardakani@Sun.COM } smb_quota_set_t;
28711963SAfshin.Ardakani@Sun.COM 
28811963SAfshin.Ardakani@Sun.COM bool_t smb_quota_query_xdr(XDR *, smb_quota_query_t *);
28911963SAfshin.Ardakani@Sun.COM bool_t smb_quota_response_xdr(XDR *, smb_quota_response_t *);
29011963SAfshin.Ardakani@Sun.COM bool_t smb_quota_set_xdr(XDR *, smb_quota_set_t *);
29111963SAfshin.Ardakani@Sun.COM 
29211963SAfshin.Ardakani@Sun.COM typedef struct dfs_referral_query {
29311963SAfshin.Ardakani@Sun.COM 	dfs_reftype_t	rq_type;
29411963SAfshin.Ardakani@Sun.COM 	char 		*rq_path;
29511963SAfshin.Ardakani@Sun.COM } dfs_referral_query_t;
29611963SAfshin.Ardakani@Sun.COM 
29711963SAfshin.Ardakani@Sun.COM typedef struct dfs_referral_response {
29811963SAfshin.Ardakani@Sun.COM 	dfs_info_t	rp_referrals;
29911963SAfshin.Ardakani@Sun.COM 	uint32_t	rp_status;
30011963SAfshin.Ardakani@Sun.COM } dfs_referral_response_t;
30111963SAfshin.Ardakani@Sun.COM 
30211963SAfshin.Ardakani@Sun.COM bool_t dfs_referral_query_xdr(XDR *, dfs_referral_query_t *);
30311963SAfshin.Ardakani@Sun.COM bool_t dfs_referral_response_xdr(XDR *, dfs_referral_response_t *);
3047052Samw 
305*12508Samw@Sun.COM typedef struct smb_shr_hostaccess_query {
306*12508Samw@Sun.COM 	char		*shq_none;
307*12508Samw@Sun.COM 	char		*shq_ro;
308*12508Samw@Sun.COM 	char		*shq_rw;
309*12508Samw@Sun.COM 	uint32_t	shq_flag;
310*12508Samw@Sun.COM 	smb_inaddr_t	shq_ipaddr;
311*12508Samw@Sun.COM } smb_shr_hostaccess_query_t;
312*12508Samw@Sun.COM 
313*12508Samw@Sun.COM bool_t smb_shr_hostaccess_query_xdr(XDR *, smb_shr_hostaccess_query_t *);
314*12508Samw@Sun.COM bool_t smb_shr_execinfo_xdr(XDR *, smb_shr_execinfo_t *);
315*12508Samw@Sun.COM 
3165331Samw #ifdef	__cplusplus
3175331Samw }
3185331Samw #endif
3195331Samw 
3205331Samw #endif	/* _SMBSRV_SMB_XDR_H */
321