diff options
author | guy <guy> | 2003-12-18 23:32:31 +0000 |
---|---|---|
committer | guy <guy> | 2003-12-18 23:32:31 +0000 |
commit | 619a9fe31b91dc70a28efe6a38e63d630e7397df (patch) | |
tree | 34fdb5bb37e016a8a7066ca9a3aceef7259d919b /pcap-nit.c | |
parent | 22a42b8996ccdd27920f2e4d7eb76b54564a2b33 (diff) |
For devices that we have some reason to believe are real live Ethernet
devices, offer DLT_DOCSIS as one of the choices of link-layer type, and
support setting that type as meaning just "set libpcap's notion of the
link-layer type to DLT_DOCSIS" without telling the driver to use
DLT_DOCSIS.
Diffstat (limited to 'pcap-nit.c')
-rw-r--r-- | pcap-nit.c | 22 |
1 files changed, 21 insertions, 1 deletions
@@ -20,7 +20,7 @@ */ #ifndef lint static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/libpcap/pcap-nit.c,v 1.53 2003-11-21 10:19:35 guy Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/libpcap/pcap-nit.c,v 1.54 2003-12-18 23:32:32 guy Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -285,6 +285,26 @@ pcap_open_live(const char *device, int snaplen, int promisc, int to_ms, */ p->selectable_fd = p->fd; + /* + * This is (presumably) a real Ethernet capture; give it a + * link-layer-type list with DLT_EN10MB and DLT_DOCSIS, so + * that an application can let you choose it, in case you're + * capturing DOCSIS traffic that a Cisco Cable Modem + * Termination System is putting out onto an Ethernet (it + * doesn't put an Ethernet header onto the wire, it puts raw + * DOCSIS frames out on the wire inside the low-level + * Ethernet framing). + */ + p->dlt_list = (u_int *) malloc(sizeof(u_int) * 2); + /* + * If that fails, just leave the list empty. + */ + if (p->dlt_list != NULL) { + p->dlt_list[0] = DLT_EN10MB; + p->dlt_list[1] = DLT_DOCSIS; + p->dlt_count = 2; + } + p->read_op = pcap_read_nit; p->setfilter_op = install_bpf_program; /* no kernel filtering */ p->set_datalink_op = NULL; /* can't change data link type */ |