Hi,

I've reworked the stuff to deal with autofs protocol versions so its somewhat
cleaner.  v3 and v4 share definitions for their common parts, but there's an
auto_fs4.h header for all the v4-specific stuff.  There's still a couple of
warts, but its more self-evidently correct that mushing it all into one header.

        J
[ Linus, I hope this attachment works better for you ]
--- /dev/null   Tue May  5 13:32:27 1998
+++ linux/include/linux/auto_fs4.h      Fri Feb  4 20:19:31 2000
@@ -0,0 +1,45 @@
+/* -*- c-mode -*-
+ * linux/include/linux/auto_fs4.h
+ *
+ * Copyright 1999-2000 Jeremy Fitzhardinge <[EMAIL PROTECTED]>
+ *
+ * This file is part of the Linux kernel and is made available under
+ * the terms of the GNU General Public License, version 2, or at your
+ * option, any later version, incorporated herein by reference.
+ */
+
+#ifndef _LINUX_AUTO_FS4_H
+#define _LINUX_AUTO_FS4_H
+
+/* Include common v3 definitions */
+#include <linux/auto_fs.h>
+
+/* autofs v4 definitions */
+#undef AUTOFS_PROTO_VERSION
+#define AUTOFS_PROTO_VERSION 4
+
+#undef AUTOFS_MAX_PROTO_VERSION
+#define AUTOFS_MAX_PROTO_VERSION       AUTOFS_PROTO_VERSION
+
+/* New message type */
+#define autofs_ptype_expire_multi      2       /* Expire entry (umount request) */
+
+/* v4 multi expire (via pipe) */
+struct autofs_packet_expire_multi {
+       struct autofs_packet_hdr hdr;
+        autofs_wqt_t wait_queue_token;
+       int len;
+       char name[NAME_MAX+1];
+};
+
+union autofs_packet_union {
+       struct autofs_packet_hdr hdr;
+       struct autofs_packet_missing missing;
+       struct autofs_packet_expire expire;
+       struct autofs_packet_expire_multi expire_multi;
+};
+
+#define AUTOFS_IOC_EXPIRE_MULTI _IOW(0x93,0x66,int)
+
+
+#endif /* _LINUX_AUTO_FS4_H */
--- 2.3/include/linux/auto_fs.h Wed Feb  2 18:08:15 2000
+++ linux/include/linux/auto_fs.h       Fri Feb  4 20:19:15 2000
@@ -14,20 +14,21 @@
 #ifndef _LINUX_AUTO_FS_H
 #define _LINUX_AUTO_FS_H
 
+#ifdef __KERNEL__
 #include <linux/version.h>
 #include <linux/fs.h>
 #include <linux/limits.h>
-#include <linux/ioctl.h>
 #include <asm/types.h>
+#endif /* __KERNEL__ */
+
+#include <linux/ioctl.h>
 
-/* This header file describes a range of autofs interface versions;
-   the new implementation ("autofs4") supports them all, but the old
-   implementation only supports v3.  */
-#define AUTOFS_MIN_PROTO_VERSION 3     /* Min version we support */
-#define AUTOFS_MAX_PROTO_VERSION 4     /* Max (current) version */
+/* This file describes autofs v3 */
+#define AUTOFS_PROTO_VERSION   3
 
-/* Backwards compat for autofs v3; it just implements a version */
-#define AUTOFS_PROTO_VERSION 3         /* v3 version */
+/* Range of protocol versions defined */
+#define AUTOFS_MAX_PROTO_VERSION       AUTOFS_PROTO_VERSION
+#define AUTOFS_MIN_PROTO_VERSION       AUTOFS_PROTO_VERSION
 
 /*
  * Architectures where both 32- and 64-bit binaries can be executed
@@ -50,15 +51,13 @@
 typedef unsigned long autofs_wqt_t;
 #endif
 
-enum autofs_packet_type {
-       autofs_ptype_missing,   /* Missing entry (mount request) */
-       autofs_ptype_expire,    /* Expire entry (umount request) */
-       autofs_ptype_expire_multi,      /* Expire entry (umount request) */
-};
+/* Packet types */
+#define autofs_ptype_missing   0       /* Missing entry (mount request) */
+#define autofs_ptype_expire    1       /* Expire entry (umount request) */
 
 struct autofs_packet_hdr {
-       int proto_version;            /* Protocol version */
-       enum autofs_packet_type type; /* Type of packet */
+       int proto_version;              /* Protocol version */
+       int type;                       /* Type of packet */
 };
 
 struct autofs_packet_missing {
@@ -75,28 +74,12 @@
        char name[NAME_MAX+1];
 };
 
-/* v4 multi expire (via pipe) */
-struct autofs_packet_expire_multi {
-       struct autofs_packet_hdr hdr;
-        autofs_wqt_t wait_queue_token;
-       int len;
-       char name[NAME_MAX+1];
-};
-
-union autofs_packet_union {
-       struct autofs_packet_hdr hdr;
-       struct autofs_packet_missing missing;
-       struct autofs_packet_expire expire;
-       struct autofs_packet_expire_multi expire_multi;
-};
-
 #define AUTOFS_IOC_READY      _IO(0x93,0x60)
 #define AUTOFS_IOC_FAIL       _IO(0x93,0x61)
 #define AUTOFS_IOC_CATATONIC  _IO(0x93,0x62)
 #define AUTOFS_IOC_PROTOVER   _IOR(0x93,0x63,int)
 #define AUTOFS_IOC_SETTIMEOUT _IOWR(0x93,0x64,unsigned long)
 #define AUTOFS_IOC_EXPIRE     _IOR(0x93,0x65,struct autofs_packet_expire)
-#define AUTOFS_IOC_EXPIRE_MULTI _IOW(0x93,0x66,int)
 
 #ifdef __KERNEL__
 
diff -X ../diffexcl -Nur 2.3/fs/autofs4/autofs_i.h abulafia-2.3/fs/autofs4/autof
s_i.h
--- 2.3/fs/autofs4/autofs_i.h   Sat Jan 29 14:47:39 2000
+++ linux/fs/autofs4/autofs_i.h Fri Feb  4 19:57:35 2000
@@ -12,7 +12,7 @@
 
 /* Internal header file for autofs */
 
-#include <linux/auto_fs.h>
+#include <linux/auto_fs4.h>
 #include <linux/list.h>
 
 /* This is the range of ioctl() numbers we claim as ours */
diff -X ../diffexcl -Nur 2.3/fs/autofs4/waitq.c abulafia-2.3/fs/autofs4/waitq.c
--- 2.3/fs/autofs4/waitq.c      Sat Jan 29 14:47:39 2000
+++ linux/fs/autofs4/waitq.c    Fri Feb  4 19:50:49 2000
@@ -86,7 +86,7 @@
        
 static void autofs4_notify_daemon(struct autofs_sb_info *sbi,
                                 struct autofs_wait_queue *wq,
-                                enum autofs_packet_type type)
+                                int type)
 {
        union autofs_packet_union pkt;
        size_t pktsz;

Reply via email to