1 /*
   2  * CDDL HEADER START
   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License, Version 1.0 only
   6  * (the "License").  You may not use this file except in compliance
   7  * with the License.
   8  *
   9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  10  * or http://www.opensolaris.org/os/licensing.
  11  * See the License for the specific language governing permissions
  12  * and limitations under the License.
  13  *
  14  * When distributing Covered Code, include this CDDL HEADER in each
  15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  16  * If applicable, add the following below this CDDL HEADER, with the
  17  * fields enclosed by brackets "[]" replaced with your own identifying
  18  * information: Portions Copyright [yyyy] [name of copyright owner]
  19  *
  20  * CDDL HEADER END
  21  */
  22 /*
  23  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
  24  *
  25  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
  26  * Use is subject to license terms.
  27  */
  28 
  29 /*
  30  * Please do not edit this file.
  31  * It was generated using rpcgen.
  32  */
  33 
  34 #ifndef _SYS_FS_UFS_PROT_H
  35 #define _SYS_FS_UFS_PROT_H
  36 
  37 #include <rpc/rpc.h>
  38 
  39 #ifdef __cplusplus
  40 extern "C" {
  41 #endif
  42 
  43 #include <sys/fs/ufs_fs.h>
  44 #include <sys/types.h>
  45 #include <sys/errno.h>
  46 
  47 enum ufsdrc_t {
  48         UFSDRC_OK = 0,
  49         UFSDRC_NOENT = ENOENT,
  50         UFSDRC_PERM = EPERM,
  51         UFSDRC_INVAL = EINVAL,
  52         UFSDRC_NOEXEC = ENOEXEC,
  53         UFSDRC_NODEV = ENODEV,
  54         UFSDRC_NXIO = ENXIO,
  55         UFSDRC_BUSY = EBUSY,
  56         UFSDRC_OPNOTSUP = EOPNOTSUPP,
  57         UFSDRC_EXECERR = 254,
  58         UFSDRC_ERR = 255
  59 };
  60 typedef enum ufsdrc_t ufsdrc_t;
  61 
  62 struct fs_identity_t {
  63         dev32_t fs_dev;
  64         char *fs_name;
  65 };
  66 typedef struct fs_identity_t fs_identity_t;
  67 
  68 struct ufsd_repairfs_args_t {
  69         fs_identity_t ua_fsid;
  70         uint_t ua_attempts;
  71 };
  72 typedef struct ufsd_repairfs_args_t ufsd_repairfs_args_t;
  73 
  74 struct ufsd_repairfs_list_t {
  75         int ual_listlen;
  76         ufsd_repairfs_args_t *ual_list;
  77 };
  78 typedef struct ufsd_repairfs_list_t ufsd_repairfs_list_t;
  79 
  80 enum ufsd_event_t {
  81         UFSDEV_NONE = 0,
  82         UFSDEV_REBOOT = 0 + 1,
  83         UFSDEV_FSCK = 0 + 2,
  84         UFSDEV_LOG_OP = 0 + 3
  85 };
  86 typedef enum ufsd_event_t ufsd_event_t;
  87 
  88 enum ufsd_boot_type_t {
  89         UFSDB_NONE = 0,
  90         UFSDB_CLEAN = 0 + 1,
  91         UFSDB_POSTPANIC = 0 + 2
  92 };
  93 typedef enum ufsd_boot_type_t ufsd_boot_type_t;
  94 
  95 enum ufsd_log_op_t {
  96         UFSDLO_NONE = 0,
  97         UFSDLO_COMMIT = 0 + 1,
  98         UFSDLO_GET = 0 + 2,
  99         UFSDLO_PUT = 0 + 3,
 100         UFSDLO_RESET = 0 + 4
 101 };
 102 typedef enum ufsd_log_op_t ufsd_log_op_t;
 103 
 104 enum ufsd_fsck_state_t {
 105         UFSDFS_NONE = 0,
 106         UFSDFS_DISPATCH = 0 + 1,
 107         UFSDFS_ERREXIT = 0 + 2,
 108         UFSDFS_SUCCESS = 0 + 3
 109 };
 110 typedef enum ufsd_fsck_state_t ufsd_fsck_state_t;
 111 #define UFSD_VARMSGMAX 1024
 112 #define UFSD_SPAREMSGBYTES 4
 113 
 114 struct ufsd_log_data_t {
 115         int umld_eob;
 116         int umld_seq;
 117         struct {
 118                 uint_t umld_buf_len;
 119                 char *umld_buf_val;
 120         } umld_buf;
 121 };
 122 typedef struct ufsd_log_data_t ufsd_log_data_t;
 123 
 124 struct ufsd_log_msg_t {
 125         ufsd_log_op_t um_lop;
 126         union {
 127                 ufsd_log_data_t um_logdata;
 128         } ufsd_log_msg_t_u;
 129 };
 130 typedef struct ufsd_log_msg_t ufsd_log_msg_t;
 131 
 132 struct ufsd_msg_vardata_t {
 133         ufsd_event_t umv_ev;
 134         union {
 135                 ufsd_boot_type_t umv_b;
 136                 ufsd_fsck_state_t umv_fs;
 137                 ufsd_log_msg_t umv_lm;
 138         } ufsd_msg_vardata_t_u;
 139 };
 140 typedef struct ufsd_msg_vardata_t ufsd_msg_vardata_t;
 141 
 142 struct ufsd_msg_t {
 143         time32_t um_time;
 144         uint_t um_from;
 145         struct {
 146                 uint_t um_spare_len;
 147                 char *um_spare_val;
 148         } um_spare;
 149         ufsd_msg_vardata_t um_var;
 150 };
 151 typedef struct ufsd_msg_t ufsd_msg_t;
 152 #define UFSD_SERVNAME   "ufsd"
 153 #define xdr_dev_t       xdr_u_int
 154 #define xdr_time_t      xdr_int
 155 /*
 156  * Set UFSD_THISVERS to the newest version of the protocol
 157  * This allows the preprocessor to force an error if the
 158  * protocol changes, since the kernel xdr routines may need to be
 159  * recoded.  Note that we can't explicitly set the version to a
 160  * symbol as rpcgen will then create erroneous routine names.
 161  */
 162 #define UFSD_V1                 1
 163 #define UFSD_ORIGVERS           UFSD_V1
 164 #define UFSD_THISVERS           1
 165 
 166 #define UFSD_PROG ((unsigned long)(100233))
 167 #define UFSD_VERS ((unsigned long)(1))
 168 
 169 #define UFSD_NULL ((unsigned long)(0))
 170 extern  ufsdrc_t *ufsd_null_1(void *, CLIENT *);
 171 extern  ufsdrc_t *ufsd_null_1_svc(void *, struct svc_req *);
 172 #define UFSD_REPAIRFS ((unsigned long)(1))
 173 extern  ufsdrc_t *ufsd_repairfs_1(ufsd_repairfs_args_t *, CLIENT *);
 174 extern  ufsdrc_t *
 175                 ufsd_repairfs_1_svc(ufsd_repairfs_args_t *, struct svc_req *);
 176 #define UFSD_REPAIRFSLIST ((unsigned long)(2))
 177 extern  ufsdrc_t *ufsd_repairfslist_1(ufsd_repairfs_list_t *, CLIENT *);
 178 extern  ufsdrc_t *
 179         ufsd_repairfslist_1_svc(ufsd_repairfs_list_t *, struct svc_req *);
 180 #define UFSD_SEND ((unsigned long)(3))
 181 extern  ufsdrc_t *ufsd_send_1(ufsd_msg_t *, CLIENT *);
 182 extern  ufsdrc_t *ufsd_send_1_svc(ufsd_msg_t *, struct svc_req *);
 183 #define UFSD_RECV ((unsigned long)(4))
 184 extern  ufsdrc_t *ufsd_recv_1(ufsd_msg_t *, CLIENT *);
 185 extern  ufsdrc_t *ufsd_recv_1_svc(ufsd_msg_t *, struct svc_req *);
 186 #define UFSD_EXIT ((unsigned long)(5))
 187 extern  ufsdrc_t *ufsd_exit_1(void *, CLIENT *);
 188 extern  ufsdrc_t *ufsd_exit_1_svc(void *, struct svc_req *);
 189 extern int ufsd_prog_1_freeresult(SVCXPRT *, xdrproc_t, caddr_t);
 190 
 191 /* the xdr functions */
 192 
 193 extern  bool_t xdr_ufsdrc_t(XDR *, ufsdrc_t *);
 194 extern  bool_t xdr_fs_identity_t(XDR *, fs_identity_t *);
 195 extern  bool_t xdr_ufsd_repairfs_args_t(XDR *, ufsd_repairfs_args_t *);
 196 extern  bool_t xdr_ufsd_repairfs_list_t(XDR *, ufsd_repairfs_list_t *);
 197 extern  bool_t xdr_ufsd_event_t(XDR *, ufsd_event_t *);
 198 extern  bool_t xdr_ufsd_boot_type_t(XDR *, ufsd_boot_type_t *);
 199 extern  bool_t xdr_ufsd_log_op_t(XDR *, ufsd_log_op_t *);
 200 extern  bool_t xdr_ufsd_fsck_state_t(XDR *, ufsd_fsck_state_t *);
 201 extern  bool_t xdr_ufsd_log_data_t(XDR *, ufsd_log_data_t *);
 202 extern  bool_t xdr_ufsd_log_msg_t(XDR *, ufsd_log_msg_t *);
 203 extern  bool_t xdr_ufsd_msg_vardata_t(XDR *, ufsd_msg_vardata_t *);
 204 extern  bool_t xdr_ufsd_msg_t(XDR *, ufsd_msg_t *);
 205 
 206 #ifdef __cplusplus
 207 }
 208 #endif
 209 
 210 #endif /* !_SYS_FS_UFS_PROT_H */