Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

rpc_clnt_calls(3N)

spray(1M)

sprayd(1M)





   spray(3N)                                                         spray(3N)


   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;
               struct timeval timeout0 = {0, 0};
               struct timeval timeout25 = {25, 0};

               spray_data.sprayarr_len = (u_int)100;


   7/91                                                                 Page 1









   spray(3N)                                                         spray(3N)


               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);


   SEE ALSO
         rpc_clnt_calls(3N), spray(1M), sprayd(1M).

























   Page 2                                                                 7/91





Typewritten Software • bear@typewritten.org • Edmonds, WA 98026