spray(5) spray(5)
NAME
spray - scatter data in order to check the network
SYNOPSIS
#include <rpcsvc/spray.h>
DESCRIPTION
The spray protocol sends packets to a given machine to test
the speed and reliability of communications with that machine.
The spray protocol is not a C function interface, per se, but
can be accessed using the generic remote procedure calling
interface clnt_call [see rpc_clnt_calls(3N)]. The protocol
sends a packet to the called host. The host acknowledges
receipt of the packet. The protocol counts the number of
acknowledgments and can return that count.
The spray protocol currently supports the following
procedures, which should be called in the order given:
SPRAYPROC_CLEAR
This procedure clears the counter.
SPRAYPROC_SPRAY
This procedure sends the packet.
SPRAYPROC_GET
This procedure returns the count and the amount of
time since the last SPRAYPROC_CLEAR.
The following XDR routines are available in librpcsvc:
xdr_sprayarr
xdr_spraycumul
EXAMPLE
The following code fragment demonstrates how the spray
protocol is used:
#include <rpc/rpc.h>
#include <rpcsvc/spray.h>
. . .
spraycumul spray_result;
sprayarr spray_data;
char buf[100]; /* arbitrary data */
int loop = 1000;
CLIENT *clnt;
Copyright 1994 Novell, Inc. Page 1
spray(5) spray(5)
struct timeval timeout0 = {0, 0};
struct timeval timeout25 = {25, 0};
spray_data.sprayarr_len = (u_int)100;
spray_data.sprayarr_val = buf;
clnt = clnt_create("somehost", SPRAYPROG, SPRAYVERS, "netpath");
if (clnt == (CLIENT *)NULL) {
/* handle this error */
}
if (clnt_call(clnt, SPRAYPROC_CLEAR,
xdr_void, NULL, xdr_void, NULL, timeout25)) {
/* handle this error */
}
while (loop-- > 0) {
if (clnt_call(clnt, SPRAYPROC_SPRAY,
xdr_sprayarr, &spray_data, xdr_void, NULL, timeout0)) {
/* handle this error */
}
}
if (clnt_call(clnt, SPRAYPROC_GET,
xdr_void, NULL, xdr_spraycumul, &spray_result, timeout25)) {
/* handle this error */
}
printf("Acknowledged %ld of 1000 packets in %d secs %d usecs\n",
spray_result.counter,
spray_result.clock.sec,
spray_result.clock.usec);
REFERENCES
rpc_clnt_calls(3N), spray(1M), sprayd(1M)
Copyright 1994 Novell, Inc. Page 2