August 3, 2000 PPSRATECHECK 9

### NAME

ppsratecheck - function to help implement rate-limited actions

### SYNOPSIS

```int` ppsratecheck(```struct timeval *lasttime``, int *curpps``, int maxpps`)

### DESCRIPTION

The ppsratecheck(``) function provides easy way to perform packet-per-sec, or event-per-sec, rate limitation. The motivation for implementing ppsratecheck(``) was to provide a mechanism that could be used to add rate limitation to network packet output. For certain network packets, we may want to impose rate limitation, to avoid denial-of-service attack possibilities.

```maxpps` specifies maximum permitted packets, or events, per second. If ppsratecheck(``) is called more than ```maxpps` times in a given one second period, the function will return 0, indicating that we exceeded the limit. If we are below the limit, the function will return 1. If ```maxpps` is set to 0, the function will always return 0 (no packets/events are permitted). Negative ```maxpps` indicates that rate limitation is disabled, and ```ppsratecheck` will always return 1.

```curpps` and ```lasttime` are used to maintain the number of recent calls. ```curpps` will be incremented every time ppsratecheck(``) is called, and will be reset whenever necessary.

### SEE ALSO

log(9), printf(9), ratecheck(9), time_second(9)

### HISTORY

The ppsratecheck(``) function appeared in NetBSD1.5.