date and time created 82/06/26 14:01:31 by sam
authorSam Leffler <sam@ucbvax.Berkeley.EDU>
Sun, 27 Jun 1982 05:01:31 +0000 (21:01 -0800)
committerSam Leffler <sam@ucbvax.Berkeley.EDU>
Sun, 27 Jun 1982 05:01:31 +0000 (21:01 -0800)
SCCS-vsn: sys/sys/efs.h 4.1

usr/src/sys/sys/efs.h [new file with mode: 0644]

diff --git a/usr/src/sys/sys/efs.h b/usr/src/sys/sys/efs.h
new file mode 100644 (file)
index 0000000..7108e30
--- /dev/null
@@ -0,0 +1,167 @@
+/*     efs.h   4.1     82/06/26        */
+
+/*
+ *     Extended File System
+ *
+ * Protocol:
+ *
+ *     send:   EFS_ACCESS      <name> <mode> <ruid> <rgid>
+ *     reply:  EFS_OK
+ *     reply:  EFS_ERROR       <errno>
+ *
+ *     send:   EFS_CHMOD       <name> <mode> <uid> <gid>
+ *     reply:  EFS_OK
+ *     reply:  EFS_ERROR       <errno>
+ *
+ *     send:   EFS_CHOWN       <name> <owner> <group> <uid> <gid>
+ *     reply:  EFS_OK
+ *     reply:  EFS_ERROR       <errno>
+ *
+ *     send:   EFS_CLOSE
+ *     reply:  EFS_OK
+ *     reply:  EFS_ERROR       <errno>
+ *
+ *     send:   EFS_CREAT       <name> <mode> <umask> <uid> <gid>
+ *     reply:  EFS_OK
+ *     reply:  EFS_ERROR       <errno>
+ *
+ *     send:   EFS_FSTAT       
+ *     reply:  EFS_OK          <data>...
+ *     reply:  EFS_ERROR       <errno>
+ *
+ *     send:   EFS_IOCTL
+ *     reply:  EFS_OK          <data>...
+ *     reply:  EFS_ERROR       <errno>
+ *
+ *     send:   EFS_LINK        <name1> <name2> <uid> <gid>
+ *     reply:  EFS_OK
+ *     reply:  EFS_ERROR       <errno>
+ *
+ *     send:   EFS_LSTAT       <name> <uid> <gid>
+ *     reply:  EFS_OK          <data>...
+ *     reply:  EFS_ERROR       <errno>
+ *
+ *     send:   EFS_OPEN        <name> <mode> <uid> <gid>
+ *     reply:  EFS_OK          <size>
+ *     reply:  EFS_ERROR       <errno>
+ *
+ *     send:   EFS_READ        <offset> <count>
+ *     reply:  EFS_OK          <data>...
+ *     reply:  EFS_ERROR       <errno>
+ *
+ *     send:   EFS_READLINK    <name> <uid> <gid>
+ *     reply:  EFS_OK          <data>...
+ *     reply:  EFS_ERROR       <errno>
+ *
+ *     send:   EFS_STAT        <name> <uid> <gid>
+ *     reply:  EFS_OK          <data>...
+ *     reply:  EFS_ERROR       <errno>
+ *
+ *     send:   EFS_SYMLINK     <name1> <name2> <uid> <gid>
+ *     reply:  EFS_OK
+ *     reply:  EFS_ERROR       <errno>
+ *
+ *     send:   EFS_UNLINK      <name> <uid> <gid>
+ *     reply:  EFS_OK
+ *     reply:  EFS_ERROR       <errno>
+ *
+ *     send:   EFS_UTIME       <name> <uid> <gid>
+ *     reply:  EFS_OK
+ *     reply:  EFS_ERROR       <errno>
+ *
+ *     send:   EFS_WRITE       <offset> <count> <data>...
+ *     reply:  EFS_OK
+ *     reply:  EFS_ERROR       <errno>
+ *
+ */
+
+#define        EFSIOSHTAB      (('e'<<8)|0)            /* set hosttable */
+#define        EFSIOGHTAB      (('e'<<8)|1)            /* get hosttable */
+
+#define EFS_NHT        10
+#define EFS_HTMAX      32
+#define EFS_NPB                32
+
+struct efs_controlblock {
+       u_char  efs_cmd;                /* command */
+       char    efs_error;              /* return error code */
+       union {
+               struct {
+                       short   efs_a_uid;      /* user id */
+                       short   efs_a_gid;      /* group id */
+                       int     efs_a_grps[NGRPS/(sizeof(int)*8)];
+                                               /* group bit array */
+                       union {
+                               struct {
+                                       short   efs_aa_owner;   /* user id */
+                                       short   efs_aa_group;   /* group id */
+                               } efs_aa;
+                               struct {
+                                       short   efs_ab_cmask;   /* cmask */
+                                       short   efs_ab_mode;    /* mode */
+                               } efs_ab;
+                               time_t  efs_ac_time[2];         /* utime */
+                       } efs_a_un;
+               } efs_a;
+               struct {
+                       u_long  efs_b_count;    /* bytes remaining for IO */
+                       off_t   efs_b_offset;   /* offset in file for IO */
+               } efs_b;
+               off_t   efs_c_size;             /* size of file or transfer */
+       } efs_un;
+};
+
+#define efs_uid                efs_un.efs_a.efs_a_uid
+#define efs_gid                efs_un.efs_a.efs_a_gid
+#define efs_grps       efs_un.efs_a.efs_a_grps
+#define efs_owner      efs_un.efs_a.efs_a_un.efs_aa.efs_aa_owner
+#define efs_group      efs_un.efs_a.efs_a_un.efs_aa.efs_aa_group
+#define efs_cmask      efs_un.efs_a.efs_a_un.efs_ab.efs_ab_cmask
+#define efs_mode       efs_un.efs_a.efs_a_un.efs_ab.efs_ab_mode
+#define efs_time       efs_un.efs_a.efs_a_un.efs_ac_time
+#define efs_count      efs_un.efs_b.efs_b_count
+#define efs_offset     efs_un.efs_b.efs_b_offset
+#define efs_size       efs_un.efs_c_size
+
+#define        EFS_ACCESS      0
+#define        EFS_CHMOD       1
+#define        EFS_CHOWN       2
+#define        EFS_CLOSE       3
+#define        EFS_CREAT       4
+#define        EFS_FSTAT       5
+#define        EFS_LINK        6
+#define        EFS_OPEN        7
+#define        EFS_READ        8
+#define        EFS_STAT        9
+#define        EFS_UNLINK      10
+#define        EFS_UTIME       11
+#define        EFS_WRITE       12
+#define        EFS_IOCTL       13
+#define        EFS_LSTAT       14
+#define EFS_READLINK   15
+#define EFS_SYMLINK    16
+#define        EFS_OK          100
+#define        EFS_ERROR       101
+
+/* The hosttable relates a host name to a network address */
+
+struct hosttable {
+       char ht_name[EFS_HTMAX];
+       struct sockaddr_in ht_addr;
+} efs_hosttable[EFS_NHT];
+
+#ifdef KERNEL
+
+int efs_major;         /* major device of efs char special routines */
+
+/* The patchboard connects file pointers on the local machine and sockets
+       on the remote machine */
+
+struct patchboard {
+       struct file *pb_fp;             /* file pointer associated with pb */
+       struct socket *pb_so;           /* socket associated with pb */
+       off_t pb_filesize;              /* size of remote file */
+       struct patchboard *pb_link;     /* link to next free pb */
+} efs_patchboard[EFS_NPB], *efs_freepb;
+
+#endif