From owner-p4-projects@FreeBSD.ORG Mon Aug 24 12:06:21 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 33DA31065693; Mon, 24 Aug 2009 12:06:21 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D3A73106568B for ; Mon, 24 Aug 2009 12:06:20 +0000 (UTC) (envelope-from zec@fer.hr) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id C31638FC0C for ; Mon, 24 Aug 2009 12:06:20 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7OC6KSh051449 for ; Mon, 24 Aug 2009 12:06:20 GMT (envelope-from zec@fer.hr) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7OC6KZY051445 for perforce@freebsd.org; Mon, 24 Aug 2009 12:06:20 GMT (envelope-from zec@fer.hr) Date: Mon, 24 Aug 2009 12:06:20 GMT Message-Id: <200908241206.n7OC6KZY051445@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@fer.hr using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 167725 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 Aug 2009 12:06:21 -0000 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 #include +#include 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 #endif +#include + #include #include @@ -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 #include #include +#include #include #include #include @@ -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);