--- a/tcpdump.c
+++ b/tcpdump.c
@@ -68,9 +68,6 @@
 
 
 
-/* external ref, in case missing in older version */
-extern int pcap_offline_read(void *, int, pcap_handler, u_char *);
-
 /* global pointer, the pcap info header */
 static pcap_t *pcap;
 
@@ -248,9 +245,12 @@
     void		**pplast)
 {
     int ret;
+    struct pcap_pkthdr *pkt_header;
+    const u_char *pkt_data;
 
     while (1) {
-	if ((ret = pcap_offline_read(pcap,1,(pcap_handler)callback,0)) != 1) {
+       ret = pcap_next_ex(pcap, &pkt_header, &pkt_data);
+       if (ret != 1) {
 	    /* prob EOF */
 
 	    if (ret == -1) {
@@ -265,6 +265,10 @@
 	    return(0);
 	}
 
+   if (callback(0, pkt_header, (char *)pkt_data)) {
+      continue;
+   }
+
 	/* at least one tcpdump implementation (AIX) seems to be */
 	/* storing NANOseconds in the usecs field of the timestamp. */
 	/* This confuses EVERYTHING.  Try to compensate. */
