]> The Tcpdump Group git mirrors - libpcap/blob - pcap.3
Add APIs to put a "pcap_t" into or out of non-blocking mode, and to get
[libpcap] / pcap.3
1 .\" @(#) $Header: /tcpdump/master/libpcap/Attic/pcap.3,v 1.28 2001-12-09 05:10:02 guy Exp $
2 .\"
3 .\" Copyright (c) 1994, 1996, 1997
4 .\" The Regents of the University of California. All rights reserved.
5 .\"
6 .\" Redistribution and use in source and binary forms, with or without
7 .\" modification, are permitted provided that: (1) source code distributions
8 .\" retain the above copyright notice and this paragraph in its entirety, (2)
9 .\" distributions including binary code include the above copyright notice and
10 .\" this paragraph in its entirety in the documentation or other materials
11 .\" provided with the distribution, and (3) all advertising materials mentioning
12 .\" features or use of this software display the following acknowledgement:
13 .\" ``This product includes software developed by the University of California,
14 .\" Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
15 .\" the University nor the names of its contributors may be used to endorse
16 .\" or promote products derived from this software without specific prior
17 .\" written permission.
18 .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
19 .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
20 .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
21 .\"
22 .TH PCAP 3 "3 January 2001"
23 .SH NAME
24 pcap \- Packet Capture library
25 .SH SYNOPSIS
26 .nf
27 .ft B
28 #include <pcap.h>
29 .ft
30 .LP
31 .nf
32 .ft B
33 char errbuf[PCAP_ERRBUF_SIZE];
34 .ft
35 .LP
36 .ft B
37 pcap_t *pcap_open_live(char *device, int snaplen,
38 .ti +8
39 int promisc, int to_ms, char *errbuf)
40 pcap_t *pcap_open_dead(int linktype, int snaplen)
41 pcap_t *pcap_open_offline(char *fname, char *errbuf)
42 pcap_dumper_t *pcap_dump_open(pcap_t *p, char *fname)
43 .ft
44 .LP
45 .ft B
46 int pcap_findalldevs(pcap_if_t **alldevsp, char *errbuf)
47 void pcap_freealldevs(pcap_if_t *)
48 char *pcap_lookupdev(char *errbuf)
49 int pcap_lookupnet(char *device, bpf_u_int32 *netp,
50 .ti +8
51 bpf_u_int32 *maskp, char *errbuf)
52 .ft
53 .LP
54 .ft B
55 int pcap_dispatch(pcap_t *p, int cnt,
56 .ti +8
57 pcap_handler callback, u_char *user)
58 int pcap_loop(pcap_t *p, int cnt,
59 .ti +8
60 pcap_handler callback, u_char *user)
61 void pcap_dump(u_char *user, struct pcap_pkthdr *h,
62 .ti +8
63 u_char *sp)
64 .ft
65 .LP
66 .ft B
67 int pcap_compile(pcap_t *p, struct bpf_program *fp,
68 .ti +8
69 char *str, int optimize, bpf_u_int32 netmask)
70 int pcap_setfilter(pcap_t *p, struct bpf_program *fp)
71 void pcap_freecode(struct bpf_program *);
72 .ft
73 .LP
74 .ft B
75 u_char *pcap_next(pcap_t *p, struct pcap_pkthdr *h)
76 .ft
77 .LP
78 .ft B
79 int pcap_setnonblock(pcap_t *, int nonblock, char *errbuf);
80 int pcap_getnonblock(pcap_t *p, char *errbuf);
81 .ft
82 .LP
83 .ft B
84 int pcap_datalink(pcap_t *p)
85 int pcap_snapshot(pcap_t *p)
86 int pcap_is_swapped(pcap_t *p)
87 int pcap_major_version(pcap_t *p)
88 int pcap_minor_version(pcap_t *p)
89 int pcap_stats(pcap_t *p, struct pcap_stat *ps)
90 FILE *pcap_file(pcap_t *p)
91 int pcap_fileno(pcap_t *p)
92 void pcap_perror(pcap_t *p, char *prefix)
93 char *pcap_geterr(pcap_t *p)
94 char *pcap_strerror(int error)
95 .ft
96 .LP
97 .ft B
98 void pcap_close(pcap_t *p)
99 void pcap_dump_close(pcap_dumper_t *p)
100 .ft
101 .fi
102 .SH DESCRIPTION
103 The Packet Capture library
104 provides a high level interface to packet capture systems. All packets
105 on the network, even those destined for other hosts, are accessible
106 through this mechanism.
107 .PP
108 .SH ROUTINES
109 NOTE:
110 .I errbuf
111 in
112 .B pcap_open_live(),
113 .B pcap_open_dead(),
114 .B pcap_open_offline(),
115 .B pcap_findalldevs(),
116 .B pcap_lookupdev(),
117 and
118 .B pcap_lookupnet()
119 is assumed to be able to hold at least
120 .B PCAP_ERRBUF_SIZE
121 chars.
122 .PP
123 .B pcap_open_live()
124 is used to obtain a packet capture descriptor to look
125 at packets on the network.
126 .I device
127 is a string that specifies the network device to open; on Linux systems
128 with 2.2 or later kernels, a
129 .I device
130 argument of "any" or
131 .B NULL
132 can be used to capture packets from all interfaces.
133 .I snaplen
134 specifies the maximum number of bytes to capture.
135 .I promisc
136 specifies if the interface is to be put into promiscuous mode.
137 (Note that even if this parameter is false, the interface
138 could well be in promiscuous mode for some other reason.) For now, this
139 doesn't work on the "any" device; if an argument of "any" or NULL is
140 supplied, the
141 .I promisc
142 flag is ignored.
143 .I to_ms
144 specifies the read timeout in milliseconds. The read timeout is used to
145 arrange that the read not necessarily return immediately when a packet
146 is seen, but that it wait for some amount of time to allow more packets
147 to arrive and to read multiple packets from the OS kernel in one
148 operation. Not all platforms support a read timeout; on platforms that
149 don't, the read timeout is ignored.
150 .I errbuf
151 is used to return error or warning text. It will be set to error text when
152 .B pcap_open_live()
153 fails and returns
154 .BR NULL .
155 .I errbuf
156 may also be set to warning text when
157 .B pcap_open_live()
158 succeds; to detect this case the caller should store a zero-length string in
159 .I errbuf
160 before calling
161 .B pcap_open_live()
162 and display the warning to the user if
163 .I errbuf
164 is no longer a zero-length string.
165 .PP
166 .B pcap_open_dead()
167 is used for creating a
168 .B pcap_t
169 structure to use when calling the other functions in libpcap. It is
170 typically used when just using libpcap for compiling BPF code.
171 .PP
172 .B pcap_open_offline()
173 is called to open a ``savefile'' for reading.
174 .I fname
175 specifies the name of the file to open. The file has
176 the same format as those used by
177 .B tcpdump(1)
178 and
179 .BR tcpslice(1) .
180 The name "-" in a synonym for
181 .BR stdin .
182 .I errbuf
183 is used to return error text and is only set when
184 .B pcap_open_offline()
185 fails and returns
186 .BR NULL .
187 .PP
188 .B pcap_dump_open()
189 is called to open a ``savefile'' for writing. The name "-" in a synonym
190 for
191 .BR stdout .
192 .B NULL
193 is returned on failure.
194 .I p
195 is a
196 .I pcap
197 struct as returned by
198 .B pcap_open_offline()
199 or
200 .BR pcap_open_live() .
201 .I fname
202 specifies the name of the file to open.
203 If
204 .B NULL
205 is returned,
206 .B pcap_geterr()
207 can be used to get the error text.
208 .PP
209 .B pcap_findalldevs()
210 constructs a list of network devices that can be opened with
211 .BR pcap_open_live() .
212 (Note that there may be network devices that cannot be opened with
213 .BR pcap_open_live()
214 by the
215 process calling
216 .BR pcap_findalldevs() ,
217 because, for example, that process might not have sufficient privileges
218 to open them for capturing; if so, those devices will not appear on the
219 list.)
220 .I alldevsp
221 is set to point to the first element of the list; each element of the
222 list is of type
223 .BR pcap_if_t ,
224 and has the following members:
225 .RS
226 .TP
227 .B next
228 if not
229 .BR NULL ,
230 a pointer to the next element in the list;
231 .B NULL
232 for the last element of the list
233 .TP
234 .B name
235 a pointer to a string giving a name for the device to pass to
236 .B pcap_open_live()
237 .TP
238 .B description
239 if not
240 .BR NULL ,
241 a pointer to a string giving a human-readable description of the device
242 .TP
243 .B addresses
244 a pointer to the first element of a list of addresses for the interface
245 .TP
246 .B flags
247 interface flags:
248 .RS
249 .TP
250 .B PCAP_IF_LOOPBACK
251 set if the interface is a loopback interface
252 .RE
253 .RE
254 .PP
255 Each element of the list of addresses is of type
256 .BR pcap_addr_t ,
257 and has the following members:
258 .RS
259 .TP
260 .B next
261 if not
262 .BR NULL ,
263 a pointer to the next element in the list;
264 .B NULL
265 for the last element of the list
266 .TP
267 .B addr
268 a pointer to a
269 .B "struct sockaddr"
270 containing an address
271 .TP
272 .B netmask
273 if not
274 .BR NULL ,
275 a pointer to a
276 .B "struct sockaddr"
277 that contains the netmask corresponding to the address pointed to by
278 .B addr
279 .TP
280 .B broadaddr
281 if not
282 .BR NULL ,
283 a pointer to a
284 .B "struct sockaddr"
285 that contains the broadcast address corresponding to the address pointed
286 to by
287 .BR addr ;
288 may be null if the interface doesn't support broadcasts
289 .TP
290 .B dstaddr
291 if not
292 .BR NULL ,
293 a pointer to a
294 .B "struct sockaddr"
295 that contains the destination address corresponding to the address pointed
296 to by
297 .BR addr ;
298 may be null if the interface isn't a point-to-point interface
299 .RE
300 .PP
301 .B pcap_freealldevs()
302 is used to free a list allocated by
303 .BR pcap_findalldevs() .
304 .PP
305 .B pcap_lookupdev()
306 returns a pointer to a network device suitable for use with
307 .B pcap_open_live()
308 and
309 .BR pcap_lookupnet() .
310 If there is an error,
311 .B NULL
312 is returned and
313 .I errbuf
314 is filled in with an appropriate error message.
315 .PP
316 .B pcap_lookupnet()
317 is used to determine the network number and mask
318 associated with the network device
319 .BR device .
320 Both
321 .I netp
322 and
323 .I maskp
324 are
325 .I bpf_u_int32
326 pointers.
327 A return of \-1 indicates an error in which case
328 .I errbuf
329 is filled in with an appropriate error message.
330 .PP
331 .B pcap_dispatch()
332 is used to collect and process packets.
333 .I cnt
334 specifies the maximum number of packets to process before returning.
335 This is not a minimum number; when reading a live capture, only one
336 bufferful of packets is read at a time, so fewer than
337 .I cnt
338 packets may be processed. A
339 .I cnt
340 of \-1 processes all the packets received in one buffer when reading a
341 live capture, or all the packets in the file when reading a
342 ``savefile''.
343 .I callback
344 specifies a routine to be called with three arguments:
345 a
346 .I u_char
347 pointer which is passed in from
348 .BR pcap_dispatch() ,
349 a pointer to the
350 .I pcap_pkthdr
351 struct (which precede the actual network headers and data),
352 and a
353 .I u_char
354 pointer to the packet data.
355 .PP
356 The number of packets read is returned.
357 0 is returned if no packets were read from a live capture (if, for
358 example, they were discarded because they didn't pass the packet filter,
359 or if, on platforms that support a read timeout that starts before any
360 packets arrive, the timeout expires before any packets arrive, or if the
361 file descriptor for the capture device is in non-blocking mode and no
362 packets were available to be read) or if no more packets are available
363 in a ``savefile.'' A return of \-1 indicates
364 an error in which case
365 .B pcap_perror()
366 or
367 .B pcap_geterr()
368 may be used to display the error text.
369 .PP
370 .BR NOTE :
371 when reading a live capture,
372 .B pcap_dispatch()
373 will not necessarily return when the read times out; on some platforms,
374 the read timeout isn't supported, and, on other platforms, the timer
375 doesn't start until at least one packet arrives. This means that the
376 read timeout should
377 .B NOT
378 be used in, for example, an interactive application, to allow the packet
379 capture loop to ``poll'' for user input periodically, as there's no
380 guarantee that
381 .B pcap_dispatch()
382 will return after the timeout expires.
383 .PP
384 .B pcap_loop()
385 is similar to
386 .B pcap_dispatch()
387 except it keeps reading packets until
388 .I cnt
389 packets are processed or an error occurs.
390 It does
391 .B not
392 return when live read timeouts occur.
393 Rather, specifying a non-zero read timeout to
394 .B pcap_open_live()
395 and then calling
396 .B pcap_dispatch()
397 allows the reception and processing of any packets that arrive when the
398 timeout occurs.
399 A negative
400 .I cnt
401 causes
402 .B pcap_loop()
403 to loop forever (or at least until an error occurs).
404 .PP
405 .B pcap_next()
406 reads the next packet (by calling
407 .B pcap_dispatch()
408 with a
409 .I cnt
410 of 1) and returns a
411 .I u_char
412 pointer to the data in that packet. (The
413 .I pcap_pkthdr
414 struct for that packet is not supplied.)
415 .PP
416 .B pcap_dump()
417 outputs a packet to the ``savefile'' opened with
418 .BR pcap_dump_open() .
419 Note that its calling arguments are suitable for use with
420 .B pcap_dispatch()
421 or
422 .BR pcap_loop() .
423 If called directly, the
424 .I user
425 parameter is of type
426 .I pcap_dumper_t
427 as returned by
428 .BR pcap_dump_open() .
429 .PP
430 .B pcap_compile()
431 is used to compile the string
432 .I str
433 into a filter program.
434 .I program
435 is a pointer to a
436 .I bpf_program
437 struct and is filled in by
438 .BR pcap_compile() .
439 .I optimize
440 controls whether optimization on the resulting code is performed.
441 .I netmask
442 specifies the netmask of the local net.
443 A return of \-1 indicates an error in which case
444 .BR pcap_geterr()
445 may be used to display the error text.
446 .PP
447 .B pcap_compile_nopcap()
448 is similar to
449 .B pcap_compile()
450 except that instead of passing a pcap structure, one passes the
451 snaplen and linktype explicitly. It is intended to be used for
452 compiling filters for direct BPF usage, without necessarily having
453 called
454 .BR pcap_open() .
455 A return of \-1 indicates an error; the error text is unavailable.
456 .RB ( pcap_compile_nopcap()
457 is a wrapper around
458 .BR pcap_open_dead() ,
459 .BR pcap_compile() ,
460 and
461 .BR pcap_close() ;
462 the latter three routines can be used directly in order to get the error
463 text for a compilation error.)
464 .B
465 .PP
466 .B pcap_setfilter()
467 is used to specify a filter program.
468 .I fp
469 is a pointer to a
470 .I bpf_program
471 struct, usually the result of a call to
472 .BR pcap_compile() .
473 .B \-1
474 is returned on failure, in which case
475 .BR pcap_geterr()
476 may be used to display the error text;
477 .B 0
478 is returned on success.
479 .PP
480 .B pcap_freecode()
481 is used to free up allocated memory pointed to by a
482 .I bpf_program
483 struct generated by
484 .B pcap_compile()
485 when that BPF program is no longer needed, for example after it
486 has been made the filter program for a pcap structure by a call to
487 .BR pcap_setfilter() .
488 .PP
489 .B pcap_setnonblock()
490 puts a capture descriptor, opened with
491 .BR pcap_open_live() ,
492 into ``non-blocking'' mode, or takes it out of ``non-blocking'' mode,
493 depending on whether the
494 .I nonblock
495 argument is non-zero or zero. It has no effect on ``savefiles''.
496 If there is an error, \-1 is returned and
497 .I errbuf
498 is filled in with an appropriate error message.
499 In
500 ``non-blocking'' mode, an attempt to read from the capture descriptor
501 with
502 .B pcap_dispatch()
503 will, if no packets are currently available to be read, return 0
504 immediately rather than blocking waiting for packets to arrive.
505 .B pcap_loop()
506 and
507 .B pcap_next()
508 will not work in ``non-blocking'' mode.
509 .PP
510 .B pcap_getnonblock()
511 returns the current ``non-blocking'' state of the capture descriptor; it
512 always returns 0 on ``savefiles''.
513 If there is an error, \-1 is returned and
514 .I errbuf
515 is filled in with an appropriate error message.
516 .PP
517 .B pcap_datalink()
518 returns the link layer type; link layer types it can return include:
519 .PP
520 .RS 5
521 .TP 5
522 .B DLT_NULL
523 BSD loopback encapsulation; the link layer header is a 4-byte field, in
524 .I host
525 byte order, containing a PF_ value from
526 .B socket.h
527 for the network-layer protocol of the packet
528 .IP
529 Note that ``host byte order'' is the byte order of the machine on which
530 the packets are captured, and the PF_ values are for the OS of the
531 machine on which the packets are captured; if a live capture is being
532 done, ``host byte order'' is the byte order of the machine capturing the
533 packets, and the PF_ values are those of the OS of the machine capturing
534 the packets, but if a ``savefile'' is being read, the byte order and PF_
535 values are
536 .I not
537 necessarily those of the machine reading the capture file.
538 .TP 5
539 .B DLT_EN10MB
540 Ethernet (10Mb, 100Mb, 1000Mb, and up)
541 .TP 5
542 .B DLT_IEEE802
543 IEEE 802.5 Token Ring
544 .TP 5
545 .B DLT_ARCNET
546 ARCNET
547 .TP 5
548 .B DLT_SLIP
549 SLIP; the link layer header contains, in order:
550 .RS 10
551 .LP
552 a 1-byte flag, which is 0 for packets received by the machine and 1 for
553 packets sent by the machine;
554 .LP
555 a 1-byte field, the upper 4 bits of which indicate the type of packet,
556 as per RFC 1144:
557 .RS 5
558 .TP 5
559 0x40
560 an unmodified IP datagram (TYPE_IP);
561 .TP 5
562 0x70
563 an uncompressed-TCP IP datagram (UNCOMPRESSED_TCP), with that byte being
564 the first byte of the raw IP header on the wire, containing the
565 connection number in the protocol field;
566 .TP 5
567 0x80
568 a compressed-TCP IP datagram (COMPRESSED_TCP), with that byte being the
569 first byte of the compressed TCP/IP datagram header;
570 .RE
571 .LP
572 for UNCOMPRESSED_TCP, the rest of the modified IP header, and for
573 COMPRESSED_TCP, the compressed TCP/IP datagram header;
574 .RE
575 .RS 5
576 .LP
577 for a total of 16 bytes; the uncompressed IP datagram follows the header
578 .RE
579 .TP 5
580 .B DLT_PPP
581 PPP; if the first 2 bytes are 0xff and 0x03, it's PPP in HDLC-like
582 framing, with the PPP header following those two bytes, otherwise it's
583 PPP without framing, and the packet begins with the PPP header
584 .TP 5
585 .B DLT_FDDI
586 FDDI
587 .TP 5
588 .B DLT_ATM_RFC1483
589 RFC 1483 LLC/SNAP-encapsulated ATM; the packet begins with an IEEE 802.2
590 LLC header
591 .TP 5
592 .B DLT_RAW
593 raw IP; the packet begins with an IP header
594 .TP 5
595 .B DLT_PPP_SERIAL
596 PPP in HDLC-like framing, as per RFC 1662, or Cisco PPP with HDLC
597 framing, as per section 4.3.1 of RFC 1547; the first byte will be 0xFF
598 for PPP in HDLC-like framing, and will be 0x0F or 0x8F for Cisco PPP
599 with HDLC framing
600 .TP 5
601 .B DLT_PPP_ETHER
602 PPPoE; the packet begins with a PPPoE header, as per RFC 2516
603 .TP 5
604 .B DLT_C_HDLC
605 Cisco PPP with HDLC framing, as per section 4.3.1 of RFC 1547
606 .TP 5
607 .B DLT_IEEE802_11
608 IEEE 802.11 wireless LAN
609 .TP 5
610 .B DLT_LOOP
611 OpenBSD loopback encapsulation; the link layer header is a 4-byte field, in
612 .I network
613 byte order, containing a PF_ value from OpenBSD's
614 .B socket.h
615 for the network-layer protocol of the packet
616 .IP
617 Note that, if a ``savefile'' is being read, those PF_ values are
618 .I not
619 necessarily those of the machine reading the capture file.
620 .TP 5
621 .B DLT_LINUX_SLL
622 Linux "cooked" capture encapsulation; the link layer header contains, in
623 order:
624 .RS 10
625 .LP
626 a 2-byte "packet type", in network byte order, which is one of:
627 .RS 5
628 .TP 5
629 0
630 packet was sent to us by somebody else
631 .TP 5
632 1
633 packet was broadcast by somebody else
634 .TP 5
635 2
636 packet was multicast, but not broadcast, by somebody else
637 .TP 5
638 3
639 packet was sent by somebody else to somebody else
640 .TP 5
641 4
642 packet was sent by us
643 .RE
644 .LP
645 a 2-byte field, in network byte order, containing a Linux ARPHRD_ value
646 for the link layer device type;
647 .LP
648 a 2-byte field, in network byte order, containing the length of the
649 link layer address of the sender of the packet (which could be 0);
650 .LP
651 an 8-byte field containing that number of bytes of the link layer header
652 (if there are more than 8 bytes, only the first 8 are present);
653 .LP
654 a 2-byte field containing an Ethernet protocol type, in network byte
655 order, or containing 1 for Novell 802.3 frames without an 802.2 LLC
656 header or 4 for frames beginning with an 802.2 LLC header.
657 .RE
658 .TP 5
659 .B DLT_LTALK
660 Apple LocalTalk; the packet begins with an AppleTalk LLAP header
661 .RE
662 .PP
663 .B pcap_snapshot()
664 returns the snapshot length specified when
665 .B pcap_open_live
666 was called.
667 .PP
668 .B pcap_is_swapped()
669 returns true if the current ``savefile'' uses a different byte order
670 than the current system.
671 .PP
672 .B pcap_major_version()
673 returns the major number of the version of the pcap used to write the
674 savefile.
675 .PP
676 .B pcap_minor_version()
677 returns the minor number of the version of the pcap used to write the
678 savefile.
679 .PP
680 .B pcap_file()
681 returns the standard I/O stream of the ``savefile,'' if a ``savefile''
682 was opened with
683 .BR pcap_open_offline() ,
684 or NULL, if a network device was opened with
685 .BR pcap_open_live() .
686 .PP
687 .B pcap_stats()
688 returns 0 and fills in a
689 .B pcap_stat
690 struct. The values represent packet statistics from the start of the
691 run to the time of the call. If there is an error or the underlying
692 packet capture doesn't support packet statistics, \-1 is returned and
693 the error text can be obtained with
694 .B pcap_perror()
695 or
696 .BR pcap_geterr() .
697 .PP
698 .B pcap_fileno()
699 returns the file descriptor number from which captured packets are read,
700 if a network device was opened with
701 .BR pcap_open_live() ,
702 or \-1, if a ``savefile'' was opened with
703 .BR pcap_open_offline() .
704 .PP
705 .B pcap_perror()
706 prints the text of the last pcap library error on
707 .BR stderr ,
708 prefixed by
709 .IR prefix .
710 .PP
711 .B pcap_geterr()
712 returns the error text pertaining to the last pcap library error.
713 .BR NOTE :
714 the pointer it returns will no longer point to a valid error message
715 string after the
716 .B pcap_t
717 passed to it is closed; you must use or copy the string before closing
718 the
719 .BR pcap_t .
720 .PP
721 .B pcap_strerror()
722 is provided in case
723 .BR strerror (1)
724 isn't available.
725 .PP
726 .B pcap_close()
727 closes the files associated with
728 .I p
729 and deallocates resources.
730 .PP
731 .B pcap_dump_close()
732 closes the ``savefile.''
733 .PP
734 .SH SEE ALSO
735 tcpdump(1), tcpslice(1)
736 .SH AUTHORS
737 The original authors are:
738 .LP
739 Van Jacobson,
740 Craig Leres and
741 Steven McCanne, all of the
742 Lawrence Berkeley National Laboratory, University of California, Berkeley, CA.
743 .LP
744 The current version is available from "The Tcpdump Group"'s Web site at
745 .LP
746 .RS
747 .I http://www.tcpdump.org/
748 .RE
749 .SH BUGS
750 Please send problems, bugs, questions, desirable enhancements, etc. to:
751 .LP
752 .RS
753 tcpdump-workers@tcpdump.org
754 .RE
755 .LP
756 Please send source code contributions, etc. to:
757 .LP
758 .RS
759 patches@tcpdump.org
760 .RE