Date: Mon, 24 Aug 2009 12:06:20 GMT From: Marko Zec <zec@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 167725 for review Message-ID: <200908241206.n7OC6KZY051445@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=167725 Change 167725 by zec@zec_tpx32 on 2009/08/24 12:06:15 Unbreak build. Affected files ... .. //depot/projects/vimage/src/sys/kern/vfs_export.c#24 edit .. //depot/projects/vimage/src/sys/kern/vfs_lookup.c#28 edit .. //depot/projects/vimage/src/sys/net/bpf.c#42 edit Differences ... ==== //depot/projects/vimage/src/sys/kern/vfs_export.c#24 (text+ko) ==== @@ -54,6 +54,7 @@ #include <sys/vnode.h> #include <net/radix.h> +#include <net/vnet.h> static MALLOC_DEFINE(M_NETADDR, "export_host", "Export host address structure"); ==== //depot/projects/vimage/src/sys/kern/vfs_lookup.c#28 (text+ko) ==== @@ -59,6 +59,8 @@ #include <sys/ktrace.h> #endif +#include <net/vnet.h> + #include <security/audit/audit.h> #include <security/mac/mac_framework.h> @@ -77,8 +79,12 @@ #endif #ifdef IMUNES_SYMLINK_HACK -SYSCTL_V_INT(V_PROCG, vprocg, _vfs, OID_AUTO, morphing_symlinks, CTLFLAG_RW, - morphing_symlinks, 0, "Resolve @ to vimage name in symlinks"); +static VNET_DEFINE(int, morphing_symlinks); +#define V_morphing_symlinks VNET(morphing_symlinks) + +SYSCTL_VNET_INT(_vfs, OID_AUTO, morphing_symlinks, CTLFLAG_RW, + &VNET_NAME(morphing_symlinks), 0, + "Resolve @ to vimage name in symlinks"); #endif /* @@ -142,9 +148,6 @@ struct thread *td = cnp->cn_thread; struct proc *p = td->td_proc; int vfslocked; -#ifdef IMUNES_SYMLINK_HACK - INIT_VPROCG(TD_TO_VPROCG(td)); -#endif KASSERT((cnp->cn_flags & MPSAFE) != 0 || mtx_owned(&Giant) != 0, ("NOT MPSAFE and Giant not held")); @@ -348,7 +351,7 @@ #ifdef IMUNES_SYMLINK_HACK if (V_morphing_symlinks) { char *sp = strchr(cp, '@'); - int vnamelen = strlen(TD_TO_VIMAGE(td)->vi_name); + int vnamelen = strlen(td->td_ucred->cr_prison->pr_name); if (sp) { if (vnamelen >= auio.uio_resid) { @@ -359,7 +362,8 @@ } bcopy(sp + 1, sp + vnamelen, linklen - (sp - cp)); - bcopy(TD_TO_VIMAGE(td)->vi_name, sp, vnamelen); + bcopy(td->td_ucred->cr_prison->pr_name, + sp, vnamelen); linklen += (vnamelen - 1); } } ==== //depot/projects/vimage/src/sys/net/bpf.c#42 (text+ko) ==== @@ -44,6 +44,7 @@ #include <sys/param.h> #include <sys/systm.h> #include <sys/conf.h> +#include <sys/ctype.h> #include <sys/fcntl.h> #include <sys/jail.h> #include <sys/malloc.h> @@ -1435,29 +1436,30 @@ struct bpf_if *bp; struct ifnet *theywant; -#define IMUNES_BPF_HACK -#if defined(VIMAGE) && defined(IMUNES_BPF_HACK) +#define XVNET_BPF_SNOOPING +#if defined(VIMAGE) && defined(XVNET_BPF_SNOOPING) struct vnet *target_vnet = curvnet; char *c; - /* Hack to support tapping in foreign vnets */ + /* Attempt to attach to an ifnet in a foreign vnet, specified as @ */ c = rindex(ifr->ifr_name, '@'); if ( c != NULL ) { -printf("bpf_setif: %s\n", c); - struct vimage *target_vimage; + struct prison *target_pr; *c++ = 0; - target_vimage = vimage_by_name(TD_TO_VIMAGE(curthread), c); - if (target_vimage == NULL) + if (!isascii(*c) && !isdigit(*c)) + return ENXIO; + target_pr = prison_find_name(curthread->td_ucred->cr_prison, c); + if (target_pr == NULL) return ENXIO; - target_vnet = target_vimage->v_net; + target_vnet = target_pr->pr_vnet; } CURVNET_SET_QUIET(target_vnet); #endif theywant = ifunit(ifr->ifr_name); if (theywant == NULL || theywant->if_bpf == NULL) { -#if defined(VIMAGE) && defined(IMUNES_BPF_HACK) +#if defined(VIMAGE) && defined(XVNET_BPF_SNOOPING) CURVNET_RESTORE(); #endif return (ENXIO); @@ -1501,7 +1503,7 @@ BPFD_LOCK(d); reset_d(d); BPFD_UNLOCK(d); -#if defined(VIMAGE) && defined(IMUNES_BPF_HACK) +#if defined(VIMAGE) && defined(XVNET_BPF_SNOOPING) CURVNET_RESTORE(); #endif return (0);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200908241206.n7OC6KZY051445>