PERFORCE change 128041 for review
Julian Elischer
julian at elischer.org
Wed Oct 24 22:25:34 PDT 2007
Marko Zec wrote:
> http://perforce.freebsd.org/chv.cgi?CH=128041
>
> Change 128041 by zec at 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 at 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);
> }
>
More information about the p4-projects
mailing list