xref: /illumos-gate/usr/src/uts/common/nfs/nfs_cmd.h (revision 0dfe541e13279d277d838d6a27e55188b9486cb1)
1b89a8333Snatalie li - Sun Microsystems - Irvine United States /*
2b89a8333Snatalie li - Sun Microsystems - Irvine United States  * CDDL HEADER START
3b89a8333Snatalie li - Sun Microsystems - Irvine United States  *
4b89a8333Snatalie li - Sun Microsystems - Irvine United States  * The contents of this file are subject to the terms of the
5b89a8333Snatalie li - Sun Microsystems - Irvine United States  * Common Development and Distribution License (the "License").
6b89a8333Snatalie li - Sun Microsystems - Irvine United States  * You may not use this file except in compliance with the License.
7b89a8333Snatalie li - Sun Microsystems - Irvine United States  *
8b89a8333Snatalie li - Sun Microsystems - Irvine United States  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9b89a8333Snatalie li - Sun Microsystems - Irvine United States  * or http://www.opensolaris.org/os/licensing.
10b89a8333Snatalie li - Sun Microsystems - Irvine United States  * See the License for the specific language governing permissions
11b89a8333Snatalie li - Sun Microsystems - Irvine United States  * and limitations under the License.
12b89a8333Snatalie li - Sun Microsystems - Irvine United States  *
13b89a8333Snatalie li - Sun Microsystems - Irvine United States  * When distributing Covered Code, include this CDDL HEADER in each
14b89a8333Snatalie li - Sun Microsystems - Irvine United States  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15b89a8333Snatalie li - Sun Microsystems - Irvine United States  * If applicable, add the following below this CDDL HEADER, with the
16b89a8333Snatalie li - Sun Microsystems - Irvine United States  * fields enclosed by brackets "[]" replaced with your own identifying
17b89a8333Snatalie li - Sun Microsystems - Irvine United States  * information: Portions Copyright [yyyy] [name of copyright owner]
18b89a8333Snatalie li - Sun Microsystems - Irvine United States  *
19b89a8333Snatalie li - Sun Microsystems - Irvine United States  * CDDL HEADER END
20b89a8333Snatalie li - Sun Microsystems - Irvine United States  */
21*0dfe541eSEvan Layton 
22b89a8333Snatalie li - Sun Microsystems - Irvine United States /*
23593cc11bSJan Kryl  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
24b89a8333Snatalie li - Sun Microsystems - Irvine United States  * Use is subject to license terms.
25b89a8333Snatalie li - Sun Microsystems - Irvine United States  */
26b89a8333Snatalie li - Sun Microsystems - Irvine United States 
27b89a8333Snatalie li - Sun Microsystems - Irvine United States /*	Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T	*/
28b89a8333Snatalie li - Sun Microsystems - Irvine United States /*	  All Rights Reserved	*/
29b89a8333Snatalie li - Sun Microsystems - Irvine United States 
30*0dfe541eSEvan Layton /*
31*0dfe541eSEvan Layton  * Copyright 2018 Nexenta Systems, Inc.
32*0dfe541eSEvan Layton  */
33*0dfe541eSEvan Layton 
34b89a8333Snatalie li - Sun Microsystems - Irvine United States #ifndef	_NFS_CMD_H
35b89a8333Snatalie li - Sun Microsystems - Irvine United States #define	_NFS_CMD_H
36b89a8333Snatalie li - Sun Microsystems - Irvine United States 
37b89a8333Snatalie li - Sun Microsystems - Irvine United States #ifdef	__cplusplus
38b89a8333Snatalie li - Sun Microsystems - Irvine United States extern "C" {
39b89a8333Snatalie li - Sun Microsystems - Irvine United States #endif
40b89a8333Snatalie li - Sun Microsystems - Irvine United States 
41b89a8333Snatalie li - Sun Microsystems - Irvine United States #include <sys/types.h>
42b89a8333Snatalie li - Sun Microsystems - Irvine United States #include <sys/param.h>
43b89a8333Snatalie li - Sun Microsystems - Irvine United States #include <sys/kiconv.h>
44b89a8333Snatalie li - Sun Microsystems - Irvine United States 
45b89a8333Snatalie li - Sun Microsystems - Irvine United States #define	KICONV_MAX_CODENAME_LEN	63 /* copied from sys/kiconv.h */
46b89a8333Snatalie li - Sun Microsystems - Irvine United States 
47b89a8333Snatalie li - Sun Microsystems - Irvine United States #define	NFSCMD_VERS_1	1
48b89a8333Snatalie li - Sun Microsystems - Irvine United States #define	NFSCMD_VERSION	NFSCMD_VERS_1
49b89a8333Snatalie li - Sun Microsystems - Irvine United States 
50b89a8333Snatalie li - Sun Microsystems - Irvine United States typedef enum { NFSCMD_CHARMAP_LOOKUP, NFSCMD_ERROR } nfscmd_t;
51b89a8333Snatalie li - Sun Microsystems - Irvine United States typedef enum { NFSCMD_ERR_SUCCESS, NFSCMD_ERR_BADCMD, NFSCMD_ERR_NOTFOUND,
52b89a8333Snatalie li - Sun Microsystems - Irvine United States     NFSCMD_ERR_FAIL, NFSCMD_ERR_DROP, NFSCMD_ERR_NOMEM } nfscmd_err_t;
53b89a8333Snatalie li - Sun Microsystems - Irvine United States #define	NFSCMD_ERR_RET	0x100000
54b89a8333Snatalie li - Sun Microsystems - Irvine United States 
55b89a8333Snatalie li - Sun Microsystems - Irvine United States typedef struct nfscmd_arg {
56b89a8333Snatalie li - Sun Microsystems - Irvine United States 	uint32_t	version;
57b89a8333Snatalie li - Sun Microsystems - Irvine United States 	nfscmd_t	cmd;
58b89a8333Snatalie li - Sun Microsystems - Irvine United States 	union {
59b89a8333Snatalie li - Sun Microsystems - Irvine United States 		struct {
60b89a8333Snatalie li - Sun Microsystems - Irvine United States 			char path[MAXPATHLEN];
61b89a8333Snatalie li - Sun Microsystems - Irvine United States 			struct sockaddr addr;
62b89a8333Snatalie li - Sun Microsystems - Irvine United States 		} charmap;
63b89a8333Snatalie li - Sun Microsystems - Irvine United States 	} arg;
64b89a8333Snatalie li - Sun Microsystems - Irvine United States } nfscmd_arg_t;
65b89a8333Snatalie li - Sun Microsystems - Irvine United States 
66b89a8333Snatalie li - Sun Microsystems - Irvine United States typedef struct nfscmd_res {
67b89a8333Snatalie li - Sun Microsystems - Irvine United States 	uint32_t	version;
68b89a8333Snatalie li - Sun Microsystems - Irvine United States 	uint32_t	cmd;
69b89a8333Snatalie li - Sun Microsystems - Irvine United States 	nfscmd_err_t	error;
70b89a8333Snatalie li - Sun Microsystems - Irvine United States 	union {
71b89a8333Snatalie li - Sun Microsystems - Irvine United States 		struct {
72b89a8333Snatalie li - Sun Microsystems - Irvine United States 		    char	codeset[KICONV_MAX_CODENAME_LEN + 1];
73b89a8333Snatalie li - Sun Microsystems - Irvine United States 		    uint32_t	apply;
74b89a8333Snatalie li - Sun Microsystems - Irvine United States 		} charmap;
75b89a8333Snatalie li - Sun Microsystems - Irvine United States 	} result;
76b89a8333Snatalie li - Sun Microsystems - Irvine United States } nfscmd_res_t;
77b89a8333Snatalie li - Sun Microsystems - Irvine United States 
78b89a8333Snatalie li - Sun Microsystems - Irvine United States #ifdef _KERNEL
79b89a8333Snatalie li - Sun Microsystems - Irvine United States 
80b89a8333Snatalie li - Sun Microsystems - Irvine United States #define	NFSCMD_CONV_INBOUND	1
81b89a8333Snatalie li - Sun Microsystems - Irvine United States #define	NFSCMD_CONV_OUTBOUND	0
82b89a8333Snatalie li - Sun Microsystems - Irvine United States 
83b89a8333Snatalie li - Sun Microsystems - Irvine United States extern int nfscmd_send(nfscmd_arg_t *, nfscmd_res_t *);
84b89a8333Snatalie li - Sun Microsystems - Irvine United States extern struct charset_cache *nfscmd_findmap(struct exportinfo *,
85b89a8333Snatalie li - Sun Microsystems - Irvine United States     struct sockaddr *);
86b89a8333Snatalie li - Sun Microsystems - Irvine United States extern char *nfscmd_convname(struct sockaddr *, struct exportinfo *,
87b89a8333Snatalie li - Sun Microsystems - Irvine United States     char *, int, size_t);
88*0dfe541eSEvan Layton 
89b89a8333Snatalie li - Sun Microsystems - Irvine United States extern char *nfscmd_convdirent(struct sockaddr *, struct exportinfo *, char *,
90b89a8333Snatalie li - Sun Microsystems - Irvine United States     size_t, enum nfsstat3 *);
91b89a8333Snatalie li - Sun Microsystems - Irvine United States extern size_t nfscmd_convdirplus(struct sockaddr *, struct exportinfo *, char *,
92b89a8333Snatalie li - Sun Microsystems - Irvine United States     size_t, size_t, char **);
93b89a8333Snatalie li - Sun Microsystems - Irvine United States extern size_t nfscmd_countents(char *, size_t);
94b89a8333Snatalie li - Sun Microsystems - Irvine United States extern size_t nfscmd_dropped_entrysize(struct dirent64 *, size_t, size_t);
95b89a8333Snatalie li - Sun Microsystems - Irvine United States 
96*0dfe541eSEvan Layton extern void nfscmd_init(void);
97*0dfe541eSEvan Layton extern void nfscmd_fini(void);
98*0dfe541eSEvan Layton 
99b89a8333Snatalie li - Sun Microsystems - Irvine United States #endif
100b89a8333Snatalie li - Sun Microsystems - Irvine United States 
101b89a8333Snatalie li - Sun Microsystems - Irvine United States #ifdef	__cplusplus
102b89a8333Snatalie li - Sun Microsystems - Irvine United States }
103b89a8333Snatalie li - Sun Microsystems - Irvine United States #endif
104b89a8333Snatalie li - Sun Microsystems - Irvine United States 
105b89a8333Snatalie li - Sun Microsystems - Irvine United States #endif	/* _NFS_CMD_H */
106