-#define i_mode i_ic.ic_mode
-#define i_nlink i_ic.ic_nlink
-#define i_uid i_ic.ic_uid
-#define i_gid i_ic.ic_gid
-/* ugh! -- must be fixed */
-#ifdef vax
-#define i_size i_ic.ic_size.val[0]
-#endif
-#define i_db i_ic.ic_db
-#define i_ib i_ic.ic_ib
-#define i_atime i_ic.ic_atime
-#define i_mtime i_ic.ic_mtime
-#define i_ctime i_ic.ic_ctime
-#define i_blocks i_ic.ic_blocks
-#define i_rdev i_ic.ic_db[0]
-#define i_lastr i_un.if_lastr
-#define i_socket i_un.is_socket
-#define i_forw i_chain[0]
-#define i_back i_chain[1]
-#define i_freef i_un.i_fr.if_freef
-#define i_freeb i_un.i_fr.if_freeb
-
-#define di_ic di_un.di_icom
-#define di_mode di_ic.ic_mode
-#define di_nlink di_ic.ic_nlink
-#define di_uid di_ic.ic_uid
-#define di_gid di_ic.ic_gid
-#ifdef vax
-#define di_size di_ic.ic_size.val[0]
-#endif
-#define di_db di_ic.ic_db
-#define di_ib di_ic.ic_ib
-#define di_atime di_ic.ic_atime
-#define di_mtime di_ic.ic_mtime
-#define di_ctime di_ic.ic_ctime
-#define di_rdev di_ic.ic_db[0]
-#define di_blocks di_ic.ic_blocks
-
-#ifdef KERNEL
-struct inode *inode; /* the inode table itself */
-struct inode *inodeNINODE; /* the end of the inode table */
-int ninode; /* number of slots in the table */
-long nextinodeid; /* unique id generator */
-
-struct inode *rootdir; /* pointer to inode of root directory */
-
-struct inode *ialloc();
-struct inode *iget();
-#ifdef notdef
-struct inode *ifind();
-#endif
-struct inode *owner();
-struct inode *maknode();
-struct inode *namei();
-
-ino_t dirpref();
-#endif
-
-/* flags */
-#define ILOCKED 0x1 /* inode is locked */
-#define IUPD 0x2 /* file has been modified */
-#define IACC 0x4 /* inode access time to be updated */
-#define IMOUNT 0x8 /* inode is mounted on */
-#define IWANT 0x10 /* some process waiting on lock */
-#define ITEXT 0x20 /* inode is pure text prototype */
-#define ICHG 0x40 /* inode has been changed */
-#define ISHLOCK 0x80 /* file has shared lock */
-#define IEXLOCK 0x100 /* file has exclusive lock */
-#define ILWAIT 0x200 /* someone waiting on file lock */
-#define IMOD 0x400 /* inode has been modified */
-
-/* modes */
-#define IFMT 0170000 /* type of file */
-#define IFCHR 0020000 /* character special */
+/*
+ * The di_db fields may be overlaid with other information for
+ * file types that do not have associated disk storage. Block
+ * and character devices overlay the first data block with their
+ * dev_t value. Short symbolic links place their path in the
+ * di_db area.
+ */
+#define di_ouid di_u.oldids[0]
+#define di_ogid di_u.oldids[1]
+#define di_inumber di_u.inumber
+#define di_rdev di_db[0]
+#define di_shortlink di_db
+#define MAXSYMLINKLEN ((NDADDR + NIADDR) * sizeof(daddr_t))
+
+/* file modes */
+#define IFMT 0170000 /* mask of file type */
+#define IFIFO 0010000 /* named pipe (fifo) */
+#define IFCHR 0020000 /* character special device */