xref: /illumos-gate/usr/src/uts/common/sys/fs/ufs_prot.h (revision ba3594ba)
17c478bd9Sstevel@tonic-gate /*
27c478bd9Sstevel@tonic-gate  * CDDL HEADER START
37c478bd9Sstevel@tonic-gate  *
47c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
57c478bd9Sstevel@tonic-gate  * Common Development and Distribution License, Version 1.0 only
67c478bd9Sstevel@tonic-gate  * (the "License").  You may not use this file except in compliance
77c478bd9Sstevel@tonic-gate  * with the License.
87c478bd9Sstevel@tonic-gate  *
97c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
107c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
117c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
127c478bd9Sstevel@tonic-gate  * and limitations under the License.
137c478bd9Sstevel@tonic-gate  *
147c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
157c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
167c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
177c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
187c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
197c478bd9Sstevel@tonic-gate  *
207c478bd9Sstevel@tonic-gate  * CDDL HEADER END
217c478bd9Sstevel@tonic-gate  */
227c478bd9Sstevel@tonic-gate /*
23*ba3594baSGarrett D'Amore  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
24*ba3594baSGarrett D'Amore  *
257c478bd9Sstevel@tonic-gate  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
267c478bd9Sstevel@tonic-gate  * Use is subject to license terms.
277c478bd9Sstevel@tonic-gate  */
287c478bd9Sstevel@tonic-gate 
297c478bd9Sstevel@tonic-gate /*
307c478bd9Sstevel@tonic-gate  * Please do not edit this file.
317c478bd9Sstevel@tonic-gate  * It was generated using rpcgen.
327c478bd9Sstevel@tonic-gate  */
337c478bd9Sstevel@tonic-gate 
347c478bd9Sstevel@tonic-gate #ifndef _SYS_FS_UFS_PROT_H
357c478bd9Sstevel@tonic-gate #define	_SYS_FS_UFS_PROT_H
367c478bd9Sstevel@tonic-gate 
377c478bd9Sstevel@tonic-gate #include <rpc/rpc.h>
387c478bd9Sstevel@tonic-gate 
397c478bd9Sstevel@tonic-gate #ifdef __cplusplus
407c478bd9Sstevel@tonic-gate extern "C" {
417c478bd9Sstevel@tonic-gate #endif
427c478bd9Sstevel@tonic-gate 
437c478bd9Sstevel@tonic-gate #include <sys/fs/ufs_fs.h>
447c478bd9Sstevel@tonic-gate #include <sys/types.h>
457c478bd9Sstevel@tonic-gate #include <sys/errno.h>
467c478bd9Sstevel@tonic-gate 
477c478bd9Sstevel@tonic-gate enum ufsdrc_t {
487c478bd9Sstevel@tonic-gate 	UFSDRC_OK = 0,
497c478bd9Sstevel@tonic-gate 	UFSDRC_NOENT = ENOENT,
507c478bd9Sstevel@tonic-gate 	UFSDRC_PERM = EPERM,
517c478bd9Sstevel@tonic-gate 	UFSDRC_INVAL = EINVAL,
527c478bd9Sstevel@tonic-gate 	UFSDRC_NOEXEC = ENOEXEC,
537c478bd9Sstevel@tonic-gate 	UFSDRC_NODEV = ENODEV,
547c478bd9Sstevel@tonic-gate 	UFSDRC_NXIO = ENXIO,
557c478bd9Sstevel@tonic-gate 	UFSDRC_BUSY = EBUSY,
567c478bd9Sstevel@tonic-gate 	UFSDRC_OPNOTSUP = EOPNOTSUPP,
577c478bd9Sstevel@tonic-gate 	UFSDRC_EXECERR = 254,
587c478bd9Sstevel@tonic-gate 	UFSDRC_ERR = 255
597c478bd9Sstevel@tonic-gate };
607c478bd9Sstevel@tonic-gate typedef enum ufsdrc_t ufsdrc_t;
617c478bd9Sstevel@tonic-gate 
627c478bd9Sstevel@tonic-gate struct fs_identity_t {
637c478bd9Sstevel@tonic-gate 	dev32_t fs_dev;
647c478bd9Sstevel@tonic-gate 	char *fs_name;
657c478bd9Sstevel@tonic-gate };
667c478bd9Sstevel@tonic-gate typedef struct fs_identity_t fs_identity_t;
677c478bd9Sstevel@tonic-gate 
687c478bd9Sstevel@tonic-gate struct ufsd_repairfs_args_t {
697c478bd9Sstevel@tonic-gate 	fs_identity_t ua_fsid;
707c478bd9Sstevel@tonic-gate 	uint_t ua_attempts;
717c478bd9Sstevel@tonic-gate };
727c478bd9Sstevel@tonic-gate typedef struct ufsd_repairfs_args_t ufsd_repairfs_args_t;
737c478bd9Sstevel@tonic-gate 
747c478bd9Sstevel@tonic-gate struct ufsd_repairfs_list_t {
757c478bd9Sstevel@tonic-gate 	int ual_listlen;
767c478bd9Sstevel@tonic-gate 	ufsd_repairfs_args_t *ual_list;
777c478bd9Sstevel@tonic-gate };
787c478bd9Sstevel@tonic-gate typedef struct ufsd_repairfs_list_t ufsd_repairfs_list_t;
797c478bd9Sstevel@tonic-gate 
807c478bd9Sstevel@tonic-gate enum ufsd_event_t {
817c478bd9Sstevel@tonic-gate 	UFSDEV_NONE = 0,
827c478bd9Sstevel@tonic-gate 	UFSDEV_REBOOT = 0 + 1,
837c478bd9Sstevel@tonic-gate 	UFSDEV_FSCK = 0 + 2,
847c478bd9Sstevel@tonic-gate 	UFSDEV_LOG_OP = 0 + 3
857c478bd9Sstevel@tonic-gate };
867c478bd9Sstevel@tonic-gate typedef enum ufsd_event_t ufsd_event_t;
877c478bd9Sstevel@tonic-gate 
887c478bd9Sstevel@tonic-gate enum ufsd_boot_type_t {
897c478bd9Sstevel@tonic-gate 	UFSDB_NONE = 0,
907c478bd9Sstevel@tonic-gate 	UFSDB_CLEAN = 0 + 1,
917c478bd9Sstevel@tonic-gate 	UFSDB_POSTPANIC = 0 + 2
927c478bd9Sstevel@tonic-gate };
937c478bd9Sstevel@tonic-gate typedef enum ufsd_boot_type_t ufsd_boot_type_t;
947c478bd9Sstevel@tonic-gate 
957c478bd9Sstevel@tonic-gate enum ufsd_log_op_t {
967c478bd9Sstevel@tonic-gate 	UFSDLO_NONE = 0,
977c478bd9Sstevel@tonic-gate 	UFSDLO_COMMIT = 0 + 1,
987c478bd9Sstevel@tonic-gate 	UFSDLO_GET = 0 + 2,
997c478bd9Sstevel@tonic-gate 	UFSDLO_PUT = 0 + 3,
1007c478bd9Sstevel@tonic-gate 	UFSDLO_RESET = 0 + 4
1017c478bd9Sstevel@tonic-gate };
1027c478bd9Sstevel@tonic-gate typedef enum ufsd_log_op_t ufsd_log_op_t;
1037c478bd9Sstevel@tonic-gate 
1047c478bd9Sstevel@tonic-gate enum ufsd_fsck_state_t {
1057c478bd9Sstevel@tonic-gate 	UFSDFS_NONE = 0,
1067c478bd9Sstevel@tonic-gate 	UFSDFS_DISPATCH = 0 + 1,
1077c478bd9Sstevel@tonic-gate 	UFSDFS_ERREXIT = 0 + 2,
1087c478bd9Sstevel@tonic-gate 	UFSDFS_SUCCESS = 0 + 3
1097c478bd9Sstevel@tonic-gate };
1107c478bd9Sstevel@tonic-gate typedef enum ufsd_fsck_state_t ufsd_fsck_state_t;
1117c478bd9Sstevel@tonic-gate #define	UFSD_VARMSGMAX 1024
1127c478bd9Sstevel@tonic-gate #define	UFSD_SPAREMSGBYTES 4
1137c478bd9Sstevel@tonic-gate 
1147c478bd9Sstevel@tonic-gate struct ufsd_log_data_t {
1157c478bd9Sstevel@tonic-gate 	int umld_eob;
1167c478bd9Sstevel@tonic-gate 	int umld_seq;
1177c478bd9Sstevel@tonic-gate 	struct {
1187c478bd9Sstevel@tonic-gate 		uint_t umld_buf_len;
1197c478bd9Sstevel@tonic-gate 		char *umld_buf_val;
1207c478bd9Sstevel@tonic-gate 	} umld_buf;
1217c478bd9Sstevel@tonic-gate };
1227c478bd9Sstevel@tonic-gate typedef struct ufsd_log_data_t ufsd_log_data_t;
1237c478bd9Sstevel@tonic-gate 
1247c478bd9Sstevel@tonic-gate struct ufsd_log_msg_t {
1257c478bd9Sstevel@tonic-gate 	ufsd_log_op_t um_lop;
1267c478bd9Sstevel@tonic-gate 	union {
1277c478bd9Sstevel@tonic-gate 		ufsd_log_data_t um_logdata;
1287c478bd9Sstevel@tonic-gate 	} ufsd_log_msg_t_u;
1297c478bd9Sstevel@tonic-gate };
1307c478bd9Sstevel@tonic-gate typedef struct ufsd_log_msg_t ufsd_log_msg_t;
1317c478bd9Sstevel@tonic-gate 
1327c478bd9Sstevel@tonic-gate struct ufsd_msg_vardata_t {
1337c478bd9Sstevel@tonic-gate 	ufsd_event_t umv_ev;
1347c478bd9Sstevel@tonic-gate 	union {
1357c478bd9Sstevel@tonic-gate 		ufsd_boot_type_t umv_b;
1367c478bd9Sstevel@tonic-gate 		ufsd_fsck_state_t umv_fs;
1377c478bd9Sstevel@tonic-gate 		ufsd_log_msg_t umv_lm;
1387c478bd9Sstevel@tonic-gate 	} ufsd_msg_vardata_t_u;
1397c478bd9Sstevel@tonic-gate };
1407c478bd9Sstevel@tonic-gate typedef struct ufsd_msg_vardata_t ufsd_msg_vardata_t;
1417c478bd9Sstevel@tonic-gate 
1427c478bd9Sstevel@tonic-gate struct ufsd_msg_t {
1437c478bd9Sstevel@tonic-gate 	time32_t um_time;
1447c478bd9Sstevel@tonic-gate 	uint_t um_from;
1457c478bd9Sstevel@tonic-gate 	struct {
1467c478bd9Sstevel@tonic-gate 		uint_t um_spare_len;
1477c478bd9Sstevel@tonic-gate 		char *um_spare_val;
1487c478bd9Sstevel@tonic-gate 	} um_spare;
1497c478bd9Sstevel@tonic-gate 	ufsd_msg_vardata_t um_var;
1507c478bd9Sstevel@tonic-gate };
1517c478bd9Sstevel@tonic-gate typedef struct ufsd_msg_t ufsd_msg_t;
1527c478bd9Sstevel@tonic-gate #define	UFSD_SERVNAME	"ufsd"
1537c478bd9Sstevel@tonic-gate #define	xdr_dev_t	xdr_u_int
1547c478bd9Sstevel@tonic-gate #define	xdr_time_t	xdr_int
1557c478bd9Sstevel@tonic-gate /*
1567c478bd9Sstevel@tonic-gate  * Set UFSD_THISVERS to the newest version of the protocol
1577c478bd9Sstevel@tonic-gate  * This allows the preprocessor to force an error if the
1587c478bd9Sstevel@tonic-gate  * protocol changes, since the kernel xdr routines may need to be
1597c478bd9Sstevel@tonic-gate  * recoded.  Note that we can't explicitly set the version to a
1607c478bd9Sstevel@tonic-gate  * symbol as rpcgen will then create erroneous routine names.
1617c478bd9Sstevel@tonic-gate  */
1627c478bd9Sstevel@tonic-gate #define	UFSD_V1			1
1637c478bd9Sstevel@tonic-gate #define	UFSD_ORIGVERS		UFSD_V1
1647c478bd9Sstevel@tonic-gate #define	UFSD_THISVERS		1
1657c478bd9Sstevel@tonic-gate 
1667c478bd9Sstevel@tonic-gate #define	UFSD_PROG ((unsigned long)(100233))
1677c478bd9Sstevel@tonic-gate #define	UFSD_VERS ((unsigned long)(1))
1687c478bd9Sstevel@tonic-gate 
1697c478bd9Sstevel@tonic-gate #define	UFSD_NULL ((unsigned long)(0))
1707c478bd9Sstevel@tonic-gate extern  ufsdrc_t *ufsd_null_1(void *, CLIENT *);
1717c478bd9Sstevel@tonic-gate extern  ufsdrc_t *ufsd_null_1_svc(void *, struct svc_req *);
1727c478bd9Sstevel@tonic-gate #define	UFSD_REPAIRFS ((unsigned long)(1))
1737c478bd9Sstevel@tonic-gate extern  ufsdrc_t *ufsd_repairfs_1(ufsd_repairfs_args_t *, CLIENT *);
1747c478bd9Sstevel@tonic-gate extern  ufsdrc_t *
1757c478bd9Sstevel@tonic-gate 		ufsd_repairfs_1_svc(ufsd_repairfs_args_t *, struct svc_req *);
1767c478bd9Sstevel@tonic-gate #define	UFSD_REPAIRFSLIST ((unsigned long)(2))
1777c478bd9Sstevel@tonic-gate extern  ufsdrc_t *ufsd_repairfslist_1(ufsd_repairfs_list_t *, CLIENT *);
1787c478bd9Sstevel@tonic-gate extern  ufsdrc_t *
1797c478bd9Sstevel@tonic-gate 	ufsd_repairfslist_1_svc(ufsd_repairfs_list_t *, struct svc_req *);
1807c478bd9Sstevel@tonic-gate #define	UFSD_SEND ((unsigned long)(3))
1817c478bd9Sstevel@tonic-gate extern  ufsdrc_t *ufsd_send_1(ufsd_msg_t *, CLIENT *);
1827c478bd9Sstevel@tonic-gate extern  ufsdrc_t *ufsd_send_1_svc(ufsd_msg_t *, struct svc_req *);
1837c478bd9Sstevel@tonic-gate #define	UFSD_RECV ((unsigned long)(4))
1847c478bd9Sstevel@tonic-gate extern  ufsdrc_t *ufsd_recv_1(ufsd_msg_t *, CLIENT *);
1857c478bd9Sstevel@tonic-gate extern  ufsdrc_t *ufsd_recv_1_svc(ufsd_msg_t *, struct svc_req *);
1867c478bd9Sstevel@tonic-gate #define	UFSD_EXIT ((unsigned long)(5))
1877c478bd9Sstevel@tonic-gate extern  ufsdrc_t *ufsd_exit_1(void *, CLIENT *);
1887c478bd9Sstevel@tonic-gate extern  ufsdrc_t *ufsd_exit_1_svc(void *, struct svc_req *);
1897c478bd9Sstevel@tonic-gate extern int ufsd_prog_1_freeresult(SVCXPRT *, xdrproc_t, caddr_t);
1907c478bd9Sstevel@tonic-gate 
1917c478bd9Sstevel@tonic-gate /* the xdr functions */
1927c478bd9Sstevel@tonic-gate 
1937c478bd9Sstevel@tonic-gate extern  bool_t xdr_ufsdrc_t(XDR *, ufsdrc_t *);
1947c478bd9Sstevel@tonic-gate extern  bool_t xdr_fs_identity_t(XDR *, fs_identity_t *);
1957c478bd9Sstevel@tonic-gate extern  bool_t xdr_ufsd_repairfs_args_t(XDR *, ufsd_repairfs_args_t *);
1967c478bd9Sstevel@tonic-gate extern  bool_t xdr_ufsd_repairfs_list_t(XDR *, ufsd_repairfs_list_t *);
1977c478bd9Sstevel@tonic-gate extern  bool_t xdr_ufsd_event_t(XDR *, ufsd_event_t *);
1987c478bd9Sstevel@tonic-gate extern  bool_t xdr_ufsd_boot_type_t(XDR *, ufsd_boot_type_t *);
1997c478bd9Sstevel@tonic-gate extern  bool_t xdr_ufsd_log_op_t(XDR *, ufsd_log_op_t *);
2007c478bd9Sstevel@tonic-gate extern  bool_t xdr_ufsd_fsck_state_t(XDR *, ufsd_fsck_state_t *);
2017c478bd9Sstevel@tonic-gate extern  bool_t xdr_ufsd_log_data_t(XDR *, ufsd_log_data_t *);
2027c478bd9Sstevel@tonic-gate extern  bool_t xdr_ufsd_log_msg_t(XDR *, ufsd_log_msg_t *);
2037c478bd9Sstevel@tonic-gate extern  bool_t xdr_ufsd_msg_vardata_t(XDR *, ufsd_msg_vardata_t *);
2047c478bd9Sstevel@tonic-gate extern  bool_t xdr_ufsd_msg_t(XDR *, ufsd_msg_t *);
2057c478bd9Sstevel@tonic-gate 
2067c478bd9Sstevel@tonic-gate #ifdef __cplusplus
2077c478bd9Sstevel@tonic-gate }
2087c478bd9Sstevel@tonic-gate #endif
2097c478bd9Sstevel@tonic-gate 
2107c478bd9Sstevel@tonic-gate #endif /* !_SYS_FS_UFS_PROT_H */
211