ppsratecheck - function to help implement rate-limited actions
#include <sys/time.h>
int
ppsratecheck(struct timeval *lasttime, int *curpps, int
maxpps);
The ppsratecheck() function provides an easy way to perform
packet-persec,
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.
log(9), printf(9), ratecheck(9), time(9)
The ppsratecheck() function appeared in NetBSD 1.5.
OpenBSD 3.6 August 3, 2000
[ Back ] |