diff --git a/src/afs/FBSD/osi_file.c b/src/afs/FBSD/osi_file.c
index 564cd63..c06c763 100644
--- a/src/afs/FBSD/osi_file.c
+++ b/src/afs/FBSD/osi_file.c
@@ -75,7 +75,7 @@ afs_osi_Stat(register struct osi_file *afile, register struct osi_stat *astat)
     AFS_GUNLOCK();
 #if defined(AFS_FBSD80_ENV)
     vn_lock(afile->vnode, LK_EXCLUSIVE | LK_RETRY);
-    code = VOP_GETATTR(afile->vnode, &tvattr, afs_osi_credp, curthread);
+    code = VOP_GETATTR(afile->vnode, &tvattr, afs_osi_credp);
     VOP_UNLOCK(afile->vnode, 0);
 #elif defined(AFS_FBSD50_ENV)
     vn_lock(afile->vnode, LK_EXCLUSIVE | LK_RETRY, curthread);
@@ -126,7 +126,7 @@ osi_UFSTruncate(register struct osi_file *afile, afs_int32 asize)
       AFS_GUNLOCK();
 #if defined(AFS_FBSD80_ENV)
     vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
-    code = VOP_GETATTR(afile->vnode, &tvattr, afs_osi_credp, curthread);
+    code = VOP_GETATTR(afile->vnode, &tvattr, afs_osi_credp);
 #elif defined(AFS_FBSD50_ENV)
     vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, curthread);
     code = VOP_GETATTR(afile->vnode, &tvattr, afs_osi_credp, curthread);
@@ -139,7 +139,10 @@ osi_UFSTruncate(register struct osi_file *afile, afs_int32 asize)
 
     VATTR_NULL(&tvattr);
     tvattr.va_size = asize;
-#if defined(AFS_FBSD50_ENV)
+
+#if defined(AFS_FBSD80_ENV)
+    code = VOP_SETATTR(vp, &tvattr, afs_osi_credp);
+#elif defined(AFS_FBSD50_ENV)
     code = VOP_SETATTR(vp, &tvattr, afs_osi_credp, curthread);
 #else
     code = VOP_SETATTR(vp, &tvattr, afs_osi_credp, curproc);
diff --git a/src/afs/FBSD/osi_machdep.h b/src/afs/FBSD/osi_machdep.h
index bd305cf..b0446ef 100644
--- a/src/afs/FBSD/osi_machdep.h
+++ b/src/afs/FBSD/osi_machdep.h
@@ -34,6 +34,11 @@
 #define	AFS_UCRED	ucred
 #define	AFS_PROC	struct proc
 
+#if !defined(VSUID) /* AFS_FBSD80_ENV so far, but 7.1 in flux */
+#define VSUID S_ISUID
+#define VSGID S_ISGID
+#endif
+
 #define afs_bufferpages bufpages
 #ifndef iodone
 #define iodone biodone
@@ -76,12 +81,20 @@ extern struct vop_vector afs_vnodeops;
 #endif
 
 #undef osi_getpid
+
+#if defined(AFS_FBSD80_ENV)
+#define afs_suser(x)	(!priv_check(curthread))
+#elif defined(AFS_FBSD50_ENV)
+#define afs_suser(x)	(!suser(curthread))
+#else
+#define afs_suser(x)	(!suser(curproc))
+#endif
+
 #if defined(AFS_FBSD50_ENV)
 #define VT_AFS		"afs"
 #define VROOT		VV_ROOT
 #define v_flag		v_vflag
 #define osi_curcred()	(curthread->td_ucred)
-#define afs_suser(x)	(!suser(curthread))
 #define osi_getpid()	(curthread->td_proc->p_pid)
 #define simple_lock(x)	mtx_lock(x)
 #define simple_unlock(x) mtx_unlock(x)
@@ -94,7 +107,6 @@ extern struct mtx afs_global_mtx;
 #else /* FBSD50 */
 extern struct lock afs_global_lock;
 #define osi_curcred()	(curproc->p_cred->pc_ucred)
-#define afs_suser(x)	(!suser(curproc))
 #define osi_getpid()	(curproc->p_pid)
 #define        gop_rdwr(rw,gp,base,len,offset,segflg,unit,cred,aresid) \
   vn_rdwr((rw),(gp),(base),(len),(offset),(segflg),(unit),(cred),(aresid), curproc)
@@ -116,6 +128,12 @@ extern struct proc *afs_global_owner;
 #define ISAFS_GLOCK() (afs_global_owner == curproc && curproc)
 #endif /* FBSD50 */
 
+#if defined(AFS_FBSD80_ENV)
+#define osi_vinvalbuf(vp, flags, td, slpflag, slptimeo) (vinvalbuf((vp), (flags), (slpflag), (slptimeo)))
+#else
+#define osi_vinvalbuf(vp, flags, td, slpflag, slptimeo) (vinvalbuf((vp), (flags), (td), (slpflag), (slptimeo)))
+#endif
+
 #undef SPLVAR
 #define SPLVAR int splvar
 #undef NETPRI
diff --git a/src/afs/FBSD/osi_vm.c b/src/afs/FBSD/osi_vm.c
index 228f8ed..dd2d9eb 100644
--- a/src/afs/FBSD/osi_vm.c
+++ b/src/afs/FBSD/osi_vm.c
@@ -237,9 +237,9 @@ osi_VM_TryToSmush(struct vcache *avc, struct AFS_UCRED *acred, int sync)
     }
 
     tries = 5;
-    code = vinvalbuf(vp, V_SAVE, curthread, PCATCH, 0);
+    code = osi_vinvalbuf(vp, V_SAVE, curthread, PCATCH, 0);
     while (code && (tries > 0)) {
-      code = vinvalbuf(vp, V_SAVE, curthread, PCATCH, 0);
+      code = osi_vinvalbuf(vp, V_SAVE, curthread, PCATCH, 0);
       --tries;
     }
     USERPRI;
diff --git a/src/afs/FBSD/osi_vnodeops.c b/src/afs/FBSD/osi_vnodeops.c
index 05fd280..19ddbdf 100644
--- a/src/afs/FBSD/osi_vnodeops.c
+++ b/src/afs/FBSD/osi_vnodeops.c
@@ -681,14 +681,19 @@ int
 afs_vop_access(ap)
      struct vop_access_args	/* {
 				 * struct vnode *a_vp;
-				 * int  a_mode;
+				 * int  a_mode/a_accmode (8.0);
 				 * struct ucred *a_cred;
 				 * struct proc *a_p;
 				 * } */ *ap;
 {
     int code;
     AFS_GLOCK();
-    code = afs_access(VTOAFS(ap->a_vp), ap->a_mode, ap->a_cred);
+    code =
+#if defined(AFS_FBSD80_ENV)
+    afs_access(VTOAFS(ap->a_vp), ap->a_accmode, ap->a_cred);
+#else
+    afs_access(VTOAFS(ap->a_vp), ap->a_mode, ap->a_cred);
+#endif
     AFS_GUNLOCK();
     return code;
 }
diff --git a/src/afs/afs_server.c b/src/afs/afs_server.c
index 3e683c3..f0d8c3a 100644
--- a/src/afs/afs_server.c
+++ b/src/afs/afs_server.c
@@ -49,6 +49,10 @@ RCSID
 #endif
 #if !defined(AFS_HPUX110_ENV) && !defined(AFS_LINUX20_ENV) && !defined(AFS_DARWIN60_ENV)
 #include <netinet/in_var.h>
+#if defined(AFS_FBSD80_ENV)
+/* XXX network stack virtualization [bz] */
+#include <rx/rx_kcommon.h>
+#endif /* VIMAGE_GLOBALS */
 #endif /* AFS_HPUX110_ENV */
 #ifdef AFS_DARWIN60_ENV
 #include <net/if_var.h>
@@ -1498,10 +1502,16 @@ static int afs_SetServerPrefs(struct srvAddr *sa) {
 	    TAILQ_FOREACH(ifa, &ifn->if_addrhead, ifa_link) {
 		afsi_SetServerIPRank(sa, ifa);
     }}}
+#elif defined(AFS_FBSD80_ENV)
+    {
+	struct in_ifaddr *ifa;
+	TAILQ_FOREACH(ifa, &MODULE_GLOBAL(MOD_NET, in_ifaddrhead), ia_link) {
+	    afsi_SetServerIPRank(sa, ifa);
+    }}
 #elif defined(AFS_DARWIN_ENV) || defined(AFS_FBSD_ENV)
     {
 	struct in_ifaddr *ifa;
-	  TAILQ_FOREACH(ifa, &in_ifaddrhead, ia_link) {
+	TAILQ_FOREACH(ifa, &in_ifaddrhead, ia_link) {
 	    afsi_SetServerIPRank(sa, ifa);
     }}
 #elif defined(AFS_OBSD_ENV)
diff --git a/src/afs/afs_vcache.c b/src/afs/afs_vcache.c
index 07e8701..eea3bcb 100644
--- a/src/afs/afs_vcache.c
+++ b/src/afs/afs_vcache.c
@@ -1837,7 +1837,7 @@ afs_GetVCache(register struct VenusFid *afid, struct vrequest *areq,
 	    if (glocked)
 		AFS_GLOCK();
 	}
-	vinvalbuf(vp, V_SAVE, curthread, PINOD, 0);
+	osi_vinvalbuf(vp, V_SAVE, curthread, PINOD, 0);
 	if (!iheldthelock)
 	    VOP_UNLOCK(vp, 0);
 #elif defined(AFS_FBSD60_ENV)
diff --git a/src/rx/rx_kcommon.c b/src/rx/rx_kcommon.c
index 187406f..7845c45 100644
--- a/src/rx/rx_kcommon.c
+++ b/src/rx/rx_kcommon.c
@@ -694,7 +694,11 @@ rxi_GetIFInfo(void)
     }
 #else
 #if defined(AFS_DARWIN_ENV) || defined(AFS_FBSD_ENV)
+#if defined(AFS_FBSD80_ENV)
+    TAILQ_FOREACH(ifn, &MODULE_GLOBAL(MOD_NET, ifnet), if_link) {
+#else
     TAILQ_FOREACH(ifn, &ifnet, if_link) {
+#endif
 	if (i >= ADDRSPERSITE)
 	    break;
 #elif defined(AFS_OBSD_ENV)
diff --git a/src/rx/rx_kcommon.h b/src/rx/rx_kcommon.h
index 717f477..3e4c877 100644
--- a/src/rx/rx_kcommon.h
+++ b/src/rx/rx_kcommon.h
@@ -68,6 +68,48 @@ typedef unsigned short etap_event_t;
 #endif
 #include "h/buf.h"
 #include "h/mbuf.h"
+
+#if defined(AFS_FBSD80_ENV) && !defined(__sctp_os_bsd_h__)
+
+/* Borrow FreeBSD SCTP elegant macros to hide details of network stack 
+ * virtualization, if SCTP not already included  */
+
+#include <net/if.h>
+#include <net/if_types.h>
+#include <net/if_var.h>
+#include <net/route.h>
+#include <net/vnet.h>
+
+#include <netinet/in.h>
+#include <netinet/in_systm.h>
+#include <netinet/ip.h>
+#include <netinet/in_pcb.h>
+#include <netinet/in_var.h>
+#include <netinet/ip_var.h>
+#include <netinet/ip_icmp.h>
+#include <netinet/icmp_var.h>
+#include <netinet/vinet.h>
+
+/*
+ * Macros to expand out globals defined by various modules
+ * to either a real global or a virtualized instance of one,
+ * depending on whether VIMAGE is defined.
+ */
+/* first define modules that supply us information */
+#define MOD_NET net
+#define MOD_INET inet
+#define MOD_INET6 inet6
+#define MOD_IPSEC ipsec
+
+/* then define the macro(s) that hook into the vimage macros */
+#if defined(__FreeBSD__) && __FreeBSD_version >= 800056
+#define MODULE_GLOBAL(__MODULE, __SYMBOL) V_ ## __SYMBOL
+#else
+#define MODULE_GLOBAL(__MODULE, __SYMBOL) (__SYMBOL)
+#endif
+
+#endif /* AFS_FBSD80_ENV (vnet) */
+
 #endif /* AFS_FBSD_ENV */
 #endif /* !defined(AFS_SUN5_ENV) && !defined(AFS_XBSD_ENV) */
 #endif /* !defined(AFS_LINUX22_ENV) && !defined(AFS_OBSD_ENV) */
