xref: /onnv-gate/usr/src/uts/common/nfs/nfs_cmd.h (revision 11632:32a585d893ca)
17961SNatalie.Li@Sun.COM /*
27961SNatalie.Li@Sun.COM  * CDDL HEADER START
37961SNatalie.Li@Sun.COM  *
47961SNatalie.Li@Sun.COM  * The contents of this file are subject to the terms of the
57961SNatalie.Li@Sun.COM  * Common Development and Distribution License (the "License").
67961SNatalie.Li@Sun.COM  * You may not use this file except in compliance with the License.
77961SNatalie.Li@Sun.COM  *
87961SNatalie.Li@Sun.COM  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
97961SNatalie.Li@Sun.COM  * or http://www.opensolaris.org/os/licensing.
107961SNatalie.Li@Sun.COM  * See the License for the specific language governing permissions
117961SNatalie.Li@Sun.COM  * and limitations under the License.
127961SNatalie.Li@Sun.COM  *
137961SNatalie.Li@Sun.COM  * When distributing Covered Code, include this CDDL HEADER in each
147961SNatalie.Li@Sun.COM  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
157961SNatalie.Li@Sun.COM  * If applicable, add the following below this CDDL HEADER, with the
167961SNatalie.Li@Sun.COM  * fields enclosed by brackets "[]" replaced with your own identifying
177961SNatalie.Li@Sun.COM  * information: Portions Copyright [yyyy] [name of copyright owner]
187961SNatalie.Li@Sun.COM  *
197961SNatalie.Li@Sun.COM  * CDDL HEADER END
207961SNatalie.Li@Sun.COM  */
217961SNatalie.Li@Sun.COM /*
22*11632SJan.Kryl@Sun.COM  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
237961SNatalie.Li@Sun.COM  * Use is subject to license terms.
247961SNatalie.Li@Sun.COM  */
257961SNatalie.Li@Sun.COM 
267961SNatalie.Li@Sun.COM /*	Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T	*/
277961SNatalie.Li@Sun.COM /*	  All Rights Reserved  	*/
287961SNatalie.Li@Sun.COM 
297961SNatalie.Li@Sun.COM #ifndef	_NFS_CMD_H
307961SNatalie.Li@Sun.COM #define	_NFS_CMD_H
317961SNatalie.Li@Sun.COM 
327961SNatalie.Li@Sun.COM #ifdef	__cplusplus
337961SNatalie.Li@Sun.COM extern "C" {
347961SNatalie.Li@Sun.COM #endif
357961SNatalie.Li@Sun.COM 
367961SNatalie.Li@Sun.COM #include <sys/types.h>
377961SNatalie.Li@Sun.COM #include <sys/param.h>
387961SNatalie.Li@Sun.COM #include <sys/kiconv.h>
397961SNatalie.Li@Sun.COM 
407961SNatalie.Li@Sun.COM #define	KICONV_MAX_CODENAME_LEN	63 /* copied from sys/kiconv.h */
417961SNatalie.Li@Sun.COM 
427961SNatalie.Li@Sun.COM #define	NFSCMD_VERS_1	1
437961SNatalie.Li@Sun.COM #define	NFSCMD_VERSION	NFSCMD_VERS_1
447961SNatalie.Li@Sun.COM 
457961SNatalie.Li@Sun.COM typedef enum { NFSCMD_CHARMAP_LOOKUP, NFSCMD_ERROR } nfscmd_t;
467961SNatalie.Li@Sun.COM typedef enum { NFSCMD_ERR_SUCCESS, NFSCMD_ERR_BADCMD, NFSCMD_ERR_NOTFOUND,
477961SNatalie.Li@Sun.COM     NFSCMD_ERR_FAIL, NFSCMD_ERR_DROP, NFSCMD_ERR_NOMEM } nfscmd_err_t;
487961SNatalie.Li@Sun.COM #define	NFSCMD_ERR_RET	0x100000
497961SNatalie.Li@Sun.COM 
507961SNatalie.Li@Sun.COM typedef struct nfscmd_arg {
517961SNatalie.Li@Sun.COM 	uint32_t	version;
527961SNatalie.Li@Sun.COM 	nfscmd_t	cmd;
537961SNatalie.Li@Sun.COM 	union {
547961SNatalie.Li@Sun.COM 		struct {
557961SNatalie.Li@Sun.COM 			char path[MAXPATHLEN];
567961SNatalie.Li@Sun.COM 			struct sockaddr addr;
577961SNatalie.Li@Sun.COM 		} charmap;
587961SNatalie.Li@Sun.COM 	} arg;
597961SNatalie.Li@Sun.COM } nfscmd_arg_t;
607961SNatalie.Li@Sun.COM 
617961SNatalie.Li@Sun.COM typedef struct nfscmd_res {
627961SNatalie.Li@Sun.COM 	uint32_t	version;
637961SNatalie.Li@Sun.COM 	uint32_t	cmd;
647961SNatalie.Li@Sun.COM 	nfscmd_err_t	error;
657961SNatalie.Li@Sun.COM 	union {
667961SNatalie.Li@Sun.COM 		struct {
677961SNatalie.Li@Sun.COM 		    char	codeset[KICONV_MAX_CODENAME_LEN + 1];
687961SNatalie.Li@Sun.COM 		    uint32_t	apply;
697961SNatalie.Li@Sun.COM 		} charmap;
707961SNatalie.Li@Sun.COM 	} result;
717961SNatalie.Li@Sun.COM } nfscmd_res_t;
727961SNatalie.Li@Sun.COM 
737961SNatalie.Li@Sun.COM #ifdef _KERNEL
747961SNatalie.Li@Sun.COM 
757961SNatalie.Li@Sun.COM #define	NFSCMD_CONV_INBOUND	1
767961SNatalie.Li@Sun.COM #define	NFSCMD_CONV_OUTBOUND	0
777961SNatalie.Li@Sun.COM 
787961SNatalie.Li@Sun.COM extern int nfscmd_send(nfscmd_arg_t *, nfscmd_res_t *);
797961SNatalie.Li@Sun.COM extern struct charset_cache *nfscmd_findmap(struct exportinfo *,
807961SNatalie.Li@Sun.COM     struct sockaddr *);
817961SNatalie.Li@Sun.COM extern char *nfscmd_convname(struct sockaddr *, struct exportinfo *,
827961SNatalie.Li@Sun.COM     char *, int, size_t);
837961SNatalie.Li@Sun.COM extern char *nfscmd_convdirent(struct sockaddr *, struct exportinfo *, char *,
847961SNatalie.Li@Sun.COM     size_t, enum nfsstat3 *);
857961SNatalie.Li@Sun.COM extern size_t nfscmd_convdirplus(struct sockaddr *, struct exportinfo *, char *,
867961SNatalie.Li@Sun.COM     size_t, size_t, char **);
877961SNatalie.Li@Sun.COM extern size_t nfscmd_countents(char *, size_t);
887961SNatalie.Li@Sun.COM extern size_t nfscmd_dropped_entrysize(struct dirent64 *, size_t, size_t);
897961SNatalie.Li@Sun.COM 
907961SNatalie.Li@Sun.COM #endif
917961SNatalie.Li@Sun.COM 
927961SNatalie.Li@Sun.COM #ifdef	__cplusplus
937961SNatalie.Li@Sun.COM }
947961SNatalie.Li@Sun.COM #endif
957961SNatalie.Li@Sun.COM 
967961SNatalie.Li@Sun.COM #endif	/* _NFS_CMD_H */
97