aboutsummaryrefslogtreecommitdiff
path: root/pcap-dag.c
diff options
context:
space:
mode:
Diffstat (limited to 'pcap-dag.c')
-rw-r--r--pcap-dag.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/pcap-dag.c b/pcap-dag.c
index 039d9260144d..938ec26dce45 100644
--- a/pcap-dag.c
+++ b/pcap-dag.c
@@ -17,7 +17,7 @@
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/libpcap/pcap-dag.c,v 1.31.2.8 2008-04-14 20:41:51 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/libpcap/pcap-dag.c,v 1.39 2008-04-14 20:40:58 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -368,6 +368,10 @@ dag_read(pcap_t *p, int cnt, pcap_handler callback, u_char *user)
case TYPE_MC_AAL5:
case TYPE_MC_ATM:
case TYPE_MC_HDLC:
+ case TYPE_MC_RAW_CHANNEL:
+ case TYPE_MC_RAW:
+ case TYPE_MC_AAL2:
+ case TYPE_COLOR_MC_HDLC_POS:
packet_len += 4; /* MC header */
break;
@@ -487,6 +491,7 @@ dag_read(pcap_t *p, int cnt, pcap_handler callback, u_char *user)
break;
case TYPE_IPV4:
+ case TYPE_IPV6:
packet_len = ntohs(header->wlen);
caplen = rlen - dag_record_size;
if (caplen > packet_len) {
@@ -494,6 +499,14 @@ dag_read(pcap_t *p, int cnt, pcap_handler callback, u_char *user)
}
break;
+ /* These types have no matching 'native' DLT, but can be used with DLT_ERF above */
+ case TYPE_MC_RAW:
+ case TYPE_MC_RAW_CHANNEL:
+ case TYPE_IP_COUNTER:
+ case TYPE_TCP_FLOW_COUNTER:
+ case TYPE_INFINIBAND:
+ case TYPE_RAW_LINK:
+ case TYPE_INFINIBAND_LINK:
default:
/* Unhandled ERF type.
* Ignore rather than generating error
@@ -790,6 +803,7 @@ static int dag_activate(pcap_t* handle)
handle->cleanup_op = dag_platform_cleanup;
handle->md.stat.ps_drop = 0;
handle->md.stat.ps_recv = 0;
+ handle->md.stat.ps_ifdrop = 0;
return 0;
#ifdef HAVE_DAG_STREAMS_API
@@ -1089,6 +1103,7 @@ dag_get_datalink(pcap_t *p)
break;
case TYPE_IPV4:
+ case TYPE_IPV6:
if(!p->linktype)
p->linktype = DLT_RAW;
break;
@@ -1099,10 +1114,11 @@ dag_get_datalink(pcap_t *p)
case TYPE_IP_COUNTER:
case TYPE_TCP_FLOW_COUNTER:
case TYPE_INFINIBAND:
- case TYPE_IPV6:
+ case TYPE_RAW_LINK:
+ case TYPE_INFINIBAND_LINK:
default:
/* Libpcap cannot deal with these types yet */
- /* Add no DLTs, but still covered by DLT_ERF */
+ /* Add no 'native' DLTs, but still covered by DLT_ERF */
break;
} /* switch */