Date: Wed, 24 Oct 2007 22:25:58 -0700 From: Julian Elischer <julian@elischer.org> To: Marko Zec <zec@FreeBSD.org> Cc: Perforce Change Reviews <perforce@FreeBSD.org> Subject: Re: PERFORCE change 128041 for review Message-ID: <472028E6.6090809@elischer.org> In-Reply-To: <200710250015.l9P0FXwh015801@repoman.freebsd.org> References: <200710250015.l9P0FXwh015801@repoman.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Marko Zec wrote: > 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. > by definition it would have to be a child vnet right? > 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); > } >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?472028E6.6090809>