*/
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/libpcap/pcap-bpf.c,v 1.99.2.10 2008-04-10 03:10:59 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/libpcap/pcap-bpf.c,v 1.99.2.11 2008-04-14 20:41:51 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
* Turn off rfmon mode if necessary.
*/
static void
-pcap_close_bpf(pcap_t *p)
+pcap_cleanup_bpf(pcap_t *p)
{
#ifdef HAVE_BSD_IEEE80211
int sock;
* have to take the interface out of some mode.
*/
pcap_remove_from_pcaps_to_close(p);
+ p->md.must_clear = 0;
}
- if (p->md.device != NULL)
+ if (p->md.device != NULL) {
free(p->md.device);
- p->md.device = NULL;
- pcap_close_common(p);
+ p->md.device = NULL;
+ }
+ pcap_cleanup_live_common(p);
}
static int
#endif /* _AIX */
if (p->opt.promisc) {
- /* set promiscuous mode, okay if it fails */
+ /* set promiscuous mode, just warn if it fails */
if (ioctl(p->fd, BIOCPROMISC, NULL) < 0) {
snprintf(p->errbuf, PCAP_ERRBUF_SIZE, "BIOCPROMISC: %s",
pcap_strerror(errno));
p->getnonblock_op = pcap_getnonblock_fd;
p->setnonblock_op = pcap_setnonblock_fd;
p->stats_op = pcap_stats_bpf;
- p->close_op = pcap_close_bpf;
+ p->cleanup_op = pcap_cleanup_bpf;
return (status);
bad:
- (void)close(fd);
- if (p->dlt_list != NULL) {
- free(p->dlt_list);
- p->dlt_list = NULL;
- }
- if (p->md.device != NULL) {
- free(p->md.device);
- p->md.device = NULL;
- }
- if (p->buffer != NULL) {
- free(p->buffer);
- p->buffer = NULL;
- }
+ pcap_cleanup_bpf(p);
return (status);
}