---
name: "pcap_stats"
section: "3pcap"
platform: "linux"
package: "libpcap"
version: "1.11.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/pcap_stats/3pcap"
---

# pcap\_stats(3pcap)

get capture statistics

## NAME

pcap\_stats - get capture statistics

## SYNOPSIS

```
#include <pcap/pcap.h>
```

**int pcap\_stats(pcap\_t \*p, struct pcap\_stat \*ps);**

## DESCRIPTION

**pcap\_stats**() fills in the **struct pcap\_stat** pointed to by its second argument.  The values represent packet statistics from the start of the run to the time of the call.

**pcap\_stats**() is supported only on live captures, not on \`\`savefiles''; no statistics are stored in \`\`savefiles'', so no statistics are available when reading from a \`\`savefile''.

A **struct pcap\_stat** has the following members:

- **ps\_recv**

  number of packets received;

- **ps\_drop**

  number of packets dropped because there was no room in the operating system's buffer when they arrived, because packets weren't being read fast enough;

- **ps\_ifdrop**

  number of packets dropped by the network interface or its driver.

The statistics do not behave the same way on all platforms. **ps\_recv** might count packets whether they passed any filter set with **pcap\_setfilter**(3PCAP) or not, or it might count only packets that pass the filter. It also might, or might not, count packets dropped because there was no room in the operating system's buffer when they arrived. **ps\_drop** is not available on all platforms; it is zero on platforms where it's not available.  If packet filtering is done in libpcap, rather than in the operating system, it would count packets that don't pass the filter. Both **ps\_recv** and **ps\_drop** might, or might not, count packets not yet read from the operating system and thus not yet seen by the application. **ps\_ifdrop** might, or might not, be implemented; if it's zero, that might mean that no packets were dropped by the interface, or it might mean that the statistic is unavailable, so it should not be treated as an indication that the interface did not drop any packets.

## RETURN VALUE

**pcap\_stats**() returns **0** on success, **PCAP\_ERROR\_NOT\_ACTIVATED** if called on a capture handle that has been created but not activated, or **PCAP\_ERROR** if there is another error or if *p* doesn't support packet statistics.  If **PCAP\_ERROR** is returned, **pcap\_geterr**(3PCAP) or **pcap\_perror**(3PCAP) may be called with *p* as an argument to fetch or display the error text.

## SEE ALSO

**pcap**(3PCAP)
