This small program receives UDP datagrams on a given port, and resends those datagrams to a specified set of receivers. In addition, a sampling divisor N may be specified individually for each receiver, which will then only receive one in N of the received packets.
This package is distributed under https://github.com/sleinen/samplicator/
The usage convention for the program is
$ samplicate [<option>...] [<destination>...]
<option> can be one of
-d <level> to set the debugging level -s <address> to set interface address on which to listen for incoming packets (default any) -p <port> to set the UDP port on which to listen for incoming packets (default 2000) -b <buflen> size of receive buffer (default 65536) -c <configfile> specify a config file to read -x <delay> to specify a transmission delay after each packet, in units of microseconds -S maintain (spoof) source addresses -n don't compute UDP checksum (only relevant with -S) -f fork program into background -m <pidfile> write the process ID to a file -4 IPv4 only -6 IPv6 only -h to print a usage message and exit -u <pdulen> size of max pdu on listened socket (default 65536)
<destination> should be specified as
<addr> IP address of the receiver <port> port UDP number of the receiver (default 2000) <freq> number of received datagrams between successive copied datagrams for this receiver. <ttl> The TTL (IPv4) or hop-limit (IPv6) for outgoing datagrams.
Config file format:
a.b.c.d[/e.f.g.h]: receiver ...
a.b.c.d is the sender's IP address e.f.g.h is a mask to apply to the sender (default 255.255.255.255) receiver see above.
Receivers specified on the command line will get all packets, those specified in the config-file will get only packets with a matching source.