Home | History | Annotate | Download | only in rpcsvc
      1 /* @(#)spray.x	2.1 88/08/01 4.0 RPCSRC */
      2 
      3 /*
      4  * Copyright (c) 2010, Oracle America, Inc.
      5  * Redistribution and use in source and binary forms, with or without
      6  * modification, are permitted provided that the following conditions are
      7  * met:
      8  *
      9  *     * Redistributions of source code must retain the above copyright
     10  *       notice, this list of conditions and the following disclaimer.
     11  *     * Redistributions in binary form must reproduce the above
     12  *       copyright notice, this list of conditions and the following
     13  *       disclaimer in the documentation and/or other materials
     14  *       provided with the distribution.
     15  *     * Neither the name of the "Oracle America, Inc." nor the names of its
     16  *       contributors may be used to endorse or promote products derived
     17  *       from this software without specific prior written permission.
     18  *
     19  *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     20  *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     21  *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
     22  *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
     23  *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
     24  *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     25  *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
     26  *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     27  *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     28  *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
     29  *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     30  *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     31  */
     32 
     33 /*
     34  * Spray a server with packets
     35  * Useful for testing flakiness of network interfaces
     36  */
     37 
     38 const SPRAYMAX = 8845;	/* max amount can spray */
     39 
     40 /*
     41  * GMT since 0:00, 1 January 1970
     42  */
     43 struct spraytimeval {
     44 	unsigned int sec;
     45 	unsigned int usec;
     46 };
     47 
     48 /*
     49  * spray statistics
     50  */
     51 struct spraycumul {
     52 	unsigned int counter;
     53 	spraytimeval clock;
     54 };
     55 
     56 /*
     57  * spray data
     58  */
     59 typedef opaque sprayarr<SPRAYMAX>;
     60 
     61 program SPRAYPROG {
     62 	version SPRAYVERS {
     63 		/*
     64 		 * Just throw away the data and increment the counter
     65 		 * This call never returns, so the client should always
     66 		 * time it out.
     67 		 */
     68 		void
     69 		SPRAYPROC_SPRAY(sprayarr) = 1;
     70 
     71 		/*
     72 		 * Get the value of the counter and elapsed time  since
     73 		 * last CLEAR.
     74 		 */
     75 		spraycumul
     76 		SPRAYPROC_GET(void) = 2;
     77 
     78 		/*
     79 		 * Clear the counter and reset the elapsed time
     80 		 */
     81 		void
     82 		SPRAYPROC_CLEAR(void) = 3;
     83 	} = 1;
     84 } = 100012;
     85