From owner-p4-projects@FreeBSD.ORG Thu Oct 25 00:15:34 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3416216A421; Thu, 25 Oct 2007 00:15:34 +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 D81B116A41B for ; Thu, 25 Oct 2007 00:15:33 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id C24C513C465 for ; Thu, 25 Oct 2007 00:15:33 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id l9P0FXGK015804 for ; Thu, 25 Oct 2007 00:15:33 GMT (envelope-from zec@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id l9P0FXwh015801 for perforce@freebsd.org; Thu, 25 Oct 2007 00:15:33 GMT (envelope-from zec@FreeBSD.org) Date: Thu, 25 Oct 2007 00:15:33 GMT Message-Id: <200710250015.l9P0FXwh015801@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@FreeBSD.org using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 128041 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: Thu, 25 Oct 2007 00:15:34 -0000 http://perforce.freebsd.org/chv.cgi?CH=128041 Change 128041 by zec@zec_tpx32 on 2007/10/25 00:15:01 A hack to allow for bpf taps to be open directly on ifnets attached to foreign vnets. ifname@vimage_name is the form that should be used for tcpdump or ethereal to attach directly to an ifnet in a foerign vnet. Affected files ... .. //depot/projects/vimage/src/sys/net/bpf.c#15 edit Differences ... ==== //depot/projects/vimage/src/sys/net/bpf.c#15 (text+ko) ==== @@ -1156,9 +1156,32 @@ struct bpf_if *bp; struct ifnet *theywant; +#define IMUNES_BPF_HACK +#if defined(VIMAGE) && defined(IMUNES_BPF_HACK) + struct vnet *target_vnet = curvnet; + char *c; + + /* Hack to support tapping in foreign vnets */ + c = rindex(ifr->ifr_name, '@'); + if ( c != NULL ) { + struct vimage *target_vimage; + + *c++ = 0; + target_vimage = vimage_by_name(TD_TO_VIMAGE(curthread), c); + if (target_vimage == NULL) + return ENXIO; + target_vnet = target_vimage->v_net; + } + CURVNET_SET_QUIET(target_vnet); +#endif + theywant = ifunit(ifr->ifr_name); - if (theywant == NULL || theywant->if_bpf == NULL) + if (theywant == NULL || theywant->if_bpf == NULL) { +#if defined(VIMAGE) && defined(IMUNES_BPF_HACK) + CURVNET_RESTORE(); +#endif return (ENXIO); + } bp = theywant->if_bpf; /* @@ -1180,6 +1203,9 @@ BPFD_LOCK(d); reset_d(d); BPFD_UNLOCK(d); +#if defined(VIMAGE) && defined(IMUNES_BPF_HACK) + CURVNET_RESTORE(); +#endif return (0); }