$OpenBSD: patch-tcpdump_c,v 1.3 2011/08/25 22:40:21 bluhm Exp $ --- tcpdump.c.orig Thu Oct 7 22:07:30 2004 +++ tcpdump.c Sun May 22 22:54:01 2011 @@ -189,6 +189,22 @@ static int callback( memcpy((char*)ip_buf,buf+8,iplen-8); callback_plast = ip_buf+iplen-8-1; break; + case PCAP_DLT_LOOP: + /* loopback type (af header) */ + switch (ntohl(*(u_int *)buf)) { + case AF_INET: + eth_header.ether_type = htons(ETHERTYPE_IP); + break; + case AF_INET6: + eth_header.ether_type = htons(ETHERTYPE_IPV6); + break; + default: + eth_header.ether_type = 0; + } + offset = 4; + memcpy((char *)ip_buf,buf+offset,iplen-offset); + callback_plast = ip_buf+iplen-offset-1; + break; case PCAP_DLT_RAW: /* raw IP */ offset = 0; @@ -363,6 +379,9 @@ pread_f *is_tcpdump(char *filename) case PCAP_DLT_ATM_RFC1483: eth_header.ether_type = htons(ETHERTYPE_IP); physname = "ATM, LLC/SNAP encapsulated"; + break; + case PCAP_DLT_LOOP: + physname = "LOOP"; break; case PCAP_DLT_RAW: eth_header.ether_type = htons(ETHERTYPE_IP);