- if (pcap_compile(pcap, &filter_prog, filter, 1, 0) < 0)
- die("Error compiling filter: %s", pcap_geterr(pcap));
- pcap_setfilter(pcap, &filter_prog);
+ fprintf(stderr, "Processing %s...\n", argv[optind]);
+ if (!(pcap = pcap_open_offline(argv[optind], errbuf)))
+ die("Unable to open %s", errbuf);
+ dlt = pcap_datalink(pcap);
+ if (!link_setup_handler(dlt))
+ die("Don't know how to handle data link type %d", dlt);
+ if (filter)
+ {
+ if (pcap_compile(pcap, &filter_prog, filter, 1, 0) < 0)
+ die("Error compiling filter: %s", pcap_geterr(pcap));
+ pcap_setfilter(pcap, &filter_prog);
+ pcap_freecode(&filter_prog);
+ }
+ if (pcap_loop(pcap, max_packets, got_pcap_packet, NULL) < 0)
+ die("Capture failed: %s", pcap_geterr(pcap));
+ pcap_close(pcap);
+ optind++;