On Jun 15, 2014, at 1:56 PM, Fernando Gont <ferna...@gont.com.ar> wrote:

> I will certainly file a bug report, and CC you. My understanding is that
> this should be filled in most (if not all) of the BSD variants? (because
> besides the error message one obtains, it seems that in several flavors
> of them, pcap_inject() fails for the same reason).

NetBSD, OpenBSD, and Dragonfly BSD appear not to even have the

        /* BPF writes need to be handled specially. */
        if (dst->sa_family == AF_UNSPEC)
                bcopy(dst->sa_data, &af, sizeof(af));
        else
                af = dst->sa_family;

code, so

        /* BPF writes need to be handled specially. */
        if (dst->sa_family == pseudo_AF_HDRCMPLT)
                bcopy(dst->sa_data, &af, sizeof(af));
        else
                af = dst->sa_family;

code needs to be added, and the subsequent switch needs to be changed from

        switch (dst->sa_family) {

to

        switch (af) {

with a

        u_int32_t af;

added to looutput().

Darwin's code path is very different, and I haven't followed the twisty little 
maze of code paths into xnu:bsd/net/dlil.c and through if_loop.c to see whether 
this bug exists or not (and haven't written code to test it).
_______________________________________________
tcpdump-workers mailing list
tcpdump-workers@lists.tcpdump.org
https://lists.sandelman.ca/mailman/listinfo/tcpdump-workers

Reply via email to