1
0
Fork 0
mirror of https://git.freebsd.org/ports.git synced 2025-06-19 19:50:31 -04:00
ports/net/tcptrace/files/patch-ad

65 lines
2.2 KiB
Text

Index: tcpdump.c
===========================================================================
--- tcpdump.c 2004/11/17 22:48:46 #1
+++ tcpdump.c 2004/11/17 22:48:46
@@ -112,6 +112,9 @@
{
case -1: /* Not an IP packet */
return (-1);
+ case EH_SIZE + ETHER_VLAN_ENCAP_LEN:
+ memcpy(&eth_header.ether_type, buf+EH_SIZE+2, 2);
+ /* FALLTHROUGH */
case EH_SIZE: /* straight Ethernet encapsulation */
memcpy((char *)ip_buf,buf+offset,iplen);
callback_plast = ip_buf+iplen-offset-1;
Index: tcpdump.h
===========================================================================
--- tcpdump.h 2004/11/17 22:48:46 #1
+++ tcpdump.h 2004/11/17 22:48:46
@@ -178,7 +178,7 @@
}
/* This function determine the offset for the IP packet in an Ethernet frame */
-/* We handle two cases : straight Ethernet encapsulation or PPPoE encapsulation */
+/* We handle three cases : straight Ethernet, PPPoE, or .1q VLAN encapsulation */
/* Written by Yann Samama (ysamama@nortelnetworks.com) on july 18th, 2003 */
static int find_ip_eth(char* buf)
{
@@ -191,10 +191,8 @@
switch (eth_proto_type)
{
case ETHERTYPE_IPV6: /* it's pure IPv6 over ethernet */
- offset = 14;
- break;
case ETHERTYPE_IP: /* it's pure IPv4 over ethernet */
- offset = 14;
+ offset = sizeof(struct ether_header);
break;
case ETHERTYPE_PPPOE_SESSION: /* it's a PPPoE session */
memcpy(&ppp_proto_type, buf+20, 2);
@@ -202,6 +200,10 @@
if (ppp_proto_type == 0x0021) /* it's IP over PPPoE */
offset = PPPOE_SIZE;
break;
+ case ETHERTYPE_VLAN:
+ offset = sizeof(struct ether_header) +
+ ETHER_VLAN_ENCAP_LEN;
+ break;
default: /* well, this is not an IP packet */
offset = -1;
break;
Index: tcptrace.h
===========================================================================
--- tcptrace.h 2004/11/17 22:48:46 #1
+++ tcptrace.h 2004/11/17 22:48:46
@@ -1172,6 +1172,10 @@
#define ETHERTYPE_VLAN 0x8100
#endif /* 802.1Q Virtual LAN */
+#ifndef ETHER_VLAN_ENCAP_LEN
+#define ETHER_VLAN_ENCAP_LEN 4
+#endif /* 802.1Q tag header length */
+
/* support for PPPoE encapsulation added by Yann Samama (ysamama@nortelnetworks.com)*/
#ifndef ETHERTYPE_PPPOE_SESSION
#define ETHERTYPE_PPPOE_SESSION 0x8864