Home | History | Annotate | Line # | Download | only in rpc
rpcb_st_xdr.c revision 1.10
      1  1.10      tron /*	$NetBSD: rpcb_st_xdr.c,v 1.10 2013/03/11 20:19:29 tron Exp $	*/
      2   1.1      fvdl 
      3   1.1      fvdl /*
      4  1.10      tron  * Copyright (c) 2010, Oracle America, Inc.
      5  1.10      tron  *
      6  1.10      tron  * Redistribution and use in source and binary forms, with or without
      7  1.10      tron  * modification, are permitted provided that the following conditions are
      8  1.10      tron  * met:
      9  1.10      tron  *
     10  1.10      tron  *     * Redistributions of source code must retain the above copyright
     11  1.10      tron  *       notice, this list of conditions and the following disclaimer.
     12  1.10      tron  *     * Redistributions in binary form must reproduce the above
     13  1.10      tron  *       copyright notice, this list of conditions and the following
     14  1.10      tron  *       disclaimer in the documentation and/or other materials
     15  1.10      tron  *       provided with the distribution.
     16  1.10      tron  *     * Neither the name of the "Oracle America, Inc." nor the names of its
     17  1.10      tron  *       contributors may be used to endorse or promote products derived
     18  1.10      tron  *       from this software without specific prior written permission.
     19  1.10      tron  *
     20  1.10      tron  *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     21  1.10      tron  *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     22  1.10      tron  *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
     23  1.10      tron  *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
     24  1.10      tron  *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
     25  1.10      tron  *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     26  1.10      tron  *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
     27  1.10      tron  *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     28  1.10      tron  *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     29  1.10      tron  *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
     30  1.10      tron  *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     31  1.10      tron  *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     32   1.1      fvdl  */
     33   1.1      fvdl /*
     34   1.1      fvdl  * Copyright 1991 Sun Microsystems, Inc.
     35   1.1      fvdl  * rpcb_stat_xdr.c
     36   1.1      fvdl  */
     37   1.1      fvdl 
     38   1.1      fvdl /*
     39   1.1      fvdl  * This file was generated from rpcb_prot.x, but includes only those
     40   1.1      fvdl  * routines used with the rpcbind stats facility.
     41   1.1      fvdl  */
     42   1.6    itojun 
     43   1.6    itojun #include <sys/cdefs.h>
     44   1.6    itojun #if defined(LIBC_SCCS) && !defined(lint)
     45  1.10      tron __RCSID("$NetBSD: rpcb_st_xdr.c,v 1.10 2013/03/11 20:19:29 tron Exp $");
     46   1.6    itojun #endif
     47   1.1      fvdl 
     48   1.1      fvdl #include "namespace.h"
     49   1.1      fvdl #include <rpc/rpc.h>
     50   1.1      fvdl 
     51   1.4     lukem #include <assert.h>
     52   1.4     lukem 
     53   1.1      fvdl /* Link list of all the stats about getport and getaddr */
     54   1.1      fvdl 
     55   1.1      fvdl #ifdef __weak_alias
     56   1.1      fvdl __weak_alias(xdr_rpcbs_addrlist,_xdr_rpcbs_addrlist)
     57   1.1      fvdl __weak_alias(xdr_rpcbs_rmtcalllist,_xdr_rpcbs_rmtcalllist)
     58   1.1      fvdl __weak_alias(xdr_rpcbs_proc,_xdr_rpcbs_proc)
     59   1.1      fvdl __weak_alias(xdr_rpcbs_addrlist_ptr,_xdr_rpcbs_addrlist_ptr)
     60   1.1      fvdl __weak_alias(xdr_rpcbs_rmtcalllist_ptr,_xdr_rpcbs_rmtcalllist_ptr)
     61   1.1      fvdl __weak_alias(xdr_rpcb_stat,_xdr_rpcb_stat)
     62   1.1      fvdl __weak_alias(xdr_rpcb_stat_byvers,_xdr_rpcb_stat_byvers)
     63   1.1      fvdl #endif
     64   1.1      fvdl 
     65   1.1      fvdl bool_t
     66   1.9       abs xdr_rpcbs_addrlist(XDR *xdrs, rpcbs_addrlist *objp)
     67   1.1      fvdl {
     68   1.1      fvdl 
     69   1.4     lukem 	_DIAGASSERT(objp != NULL);
     70   1.4     lukem 
     71   1.1      fvdl 	    if (!xdr_u_int32_t(xdrs, &objp->prog)) {
     72   1.1      fvdl 		return (FALSE);
     73   1.1      fvdl 	    }
     74   1.1      fvdl 	    if (!xdr_u_int32_t(xdrs, &objp->vers)) {
     75   1.1      fvdl 		return (FALSE);
     76   1.1      fvdl 	    }
     77   1.1      fvdl 	    if (!xdr_int(xdrs, &objp->success)) {
     78   1.1      fvdl 		return (FALSE);
     79   1.1      fvdl 	    }
     80   1.1      fvdl 	    if (!xdr_int(xdrs, &objp->failure)) {
     81   1.1      fvdl 		return (FALSE);
     82   1.1      fvdl 	    }
     83   1.2  christos 	    if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
     84   1.1      fvdl 		return (FALSE);
     85   1.1      fvdl 	    }
     86   1.1      fvdl 
     87   1.7       mrg 	    if (!xdr_pointer(xdrs, (char **)(void *)&objp->next,
     88   1.8  christos 			(u_int)sizeof (rpcbs_addrlist),
     89   1.1      fvdl 			(xdrproc_t)xdr_rpcbs_addrlist)) {
     90   1.1      fvdl 		return (FALSE);
     91   1.1      fvdl 	    }
     92   1.1      fvdl 
     93   1.1      fvdl 	return (TRUE);
     94   1.1      fvdl }
     95   1.1      fvdl 
     96   1.1      fvdl /* Link list of all the stats about rmtcall */
     97   1.1      fvdl 
     98   1.1      fvdl bool_t
     99   1.9       abs xdr_rpcbs_rmtcalllist(XDR *xdrs, rpcbs_rmtcalllist *objp)
    100   1.1      fvdl {
    101   1.2  christos 	int32_t *buf;
    102   1.1      fvdl 
    103   1.4     lukem 	_DIAGASSERT(xdrs != NULL);
    104   1.4     lukem 	_DIAGASSERT(objp != NULL);
    105   1.4     lukem 
    106   1.1      fvdl 	if (xdrs->x_op == XDR_ENCODE) {
    107   1.1      fvdl 	buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT);
    108   1.1      fvdl 	if (buf == NULL) {
    109   1.1      fvdl 		if (!xdr_u_int32_t(xdrs, &objp->prog)) {
    110   1.1      fvdl 			return (FALSE);
    111   1.1      fvdl 		}
    112   1.1      fvdl 		if (!xdr_u_int32_t(xdrs, &objp->vers)) {
    113   1.1      fvdl 			return (FALSE);
    114   1.1      fvdl 		}
    115   1.1      fvdl 		if (!xdr_u_int32_t(xdrs, &objp->proc)) {
    116   1.1      fvdl 			return (FALSE);
    117   1.1      fvdl 		}
    118   1.1      fvdl 		if (!xdr_int(xdrs, &objp->success)) {
    119   1.1      fvdl 			return (FALSE);
    120   1.1      fvdl 		}
    121   1.1      fvdl 		if (!xdr_int(xdrs, &objp->failure)) {
    122   1.1      fvdl 			return (FALSE);
    123   1.1      fvdl 		}
    124   1.1      fvdl 		if (!xdr_int(xdrs, &objp->indirect)) {
    125   1.1      fvdl 			return (FALSE);
    126   1.1      fvdl 		}
    127   1.1      fvdl 	} else {
    128   1.3      fvdl 		IXDR_PUT_U_INT32(buf, objp->prog);
    129   1.3      fvdl 		IXDR_PUT_U_INT32(buf, objp->vers);
    130   1.3      fvdl 		IXDR_PUT_U_INT32(buf, objp->proc);
    131   1.3      fvdl 		IXDR_PUT_INT32(buf, objp->success);
    132   1.3      fvdl 		IXDR_PUT_INT32(buf, objp->failure);
    133   1.3      fvdl 		IXDR_PUT_INT32(buf, objp->indirect);
    134   1.1      fvdl 	}
    135   1.2  christos 	if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
    136   1.1      fvdl 		return (FALSE);
    137   1.1      fvdl 	}
    138   1.7       mrg 	if (!xdr_pointer(xdrs, (char **)(void *)&objp->next,
    139   1.8  christos 			(u_int)sizeof (rpcbs_rmtcalllist),
    140   1.1      fvdl 			(xdrproc_t)xdr_rpcbs_rmtcalllist)) {
    141   1.1      fvdl 		return (FALSE);
    142   1.1      fvdl 	}
    143   1.1      fvdl 	return (TRUE);
    144   1.1      fvdl 	} else if (xdrs->x_op == XDR_DECODE) {
    145   1.1      fvdl 	buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT);
    146   1.1      fvdl 	if (buf == NULL) {
    147   1.1      fvdl 		if (!xdr_u_int32_t(xdrs, &objp->prog)) {
    148   1.1      fvdl 			return (FALSE);
    149   1.1      fvdl 		}
    150   1.1      fvdl 		if (!xdr_u_int32_t(xdrs, &objp->vers)) {
    151   1.1      fvdl 			return (FALSE);
    152   1.1      fvdl 		}
    153   1.1      fvdl 		if (!xdr_u_int32_t(xdrs, &objp->proc)) {
    154   1.1      fvdl 			return (FALSE);
    155   1.1      fvdl 		}
    156   1.1      fvdl 		if (!xdr_int(xdrs, &objp->success)) {
    157   1.1      fvdl 			return (FALSE);
    158   1.1      fvdl 		}
    159   1.1      fvdl 		if (!xdr_int(xdrs, &objp->failure)) {
    160   1.1      fvdl 			return (FALSE);
    161   1.1      fvdl 		}
    162   1.1      fvdl 		if (!xdr_int(xdrs, &objp->indirect)) {
    163   1.1      fvdl 			return (FALSE);
    164   1.1      fvdl 		}
    165   1.1      fvdl 	} else {
    166   1.3      fvdl 		objp->prog = (rpcprog_t)IXDR_GET_U_INT32(buf);
    167   1.3      fvdl 		objp->vers = (rpcvers_t)IXDR_GET_U_INT32(buf);
    168   1.3      fvdl 		objp->proc = (rpcproc_t)IXDR_GET_U_INT32(buf);
    169   1.3      fvdl 		objp->success = (int)IXDR_GET_INT32(buf);
    170   1.3      fvdl 		objp->failure = (int)IXDR_GET_INT32(buf);
    171   1.3      fvdl 		objp->indirect = (int)IXDR_GET_INT32(buf);
    172   1.1      fvdl 	}
    173   1.2  christos 	if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
    174   1.1      fvdl 		return (FALSE);
    175   1.1      fvdl 	}
    176   1.7       mrg 	if (!xdr_pointer(xdrs, (char **)(void *)&objp->next,
    177   1.8  christos 			(u_int)sizeof (rpcbs_rmtcalllist),
    178   1.1      fvdl 			(xdrproc_t)xdr_rpcbs_rmtcalllist)) {
    179   1.1      fvdl 		return (FALSE);
    180   1.1      fvdl 	}
    181   1.1      fvdl 	return (TRUE);
    182   1.1      fvdl 	}
    183   1.1      fvdl 	if (!xdr_u_int32_t(xdrs, &objp->prog)) {
    184   1.1      fvdl 		return (FALSE);
    185   1.1      fvdl 	}
    186   1.1      fvdl 	if (!xdr_u_int32_t(xdrs, &objp->vers)) {
    187   1.1      fvdl 		return (FALSE);
    188   1.1      fvdl 	}
    189   1.1      fvdl 	if (!xdr_u_int32_t(xdrs, &objp->proc)) {
    190   1.1      fvdl 		return (FALSE);
    191   1.1      fvdl 	}
    192   1.1      fvdl 	if (!xdr_int(xdrs, &objp->success)) {
    193   1.1      fvdl 		return (FALSE);
    194   1.1      fvdl 	}
    195   1.1      fvdl 	if (!xdr_int(xdrs, &objp->failure)) {
    196   1.1      fvdl 		return (FALSE);
    197   1.1      fvdl 	}
    198   1.1      fvdl 	if (!xdr_int(xdrs, &objp->indirect)) {
    199   1.1      fvdl 		return (FALSE);
    200   1.1      fvdl 	}
    201   1.2  christos 	if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
    202   1.1      fvdl 		return (FALSE);
    203   1.1      fvdl 	}
    204   1.7       mrg 	if (!xdr_pointer(xdrs, (char **)(void *)&objp->next,
    205   1.8  christos 			(u_int)sizeof (rpcbs_rmtcalllist),
    206   1.1      fvdl 			(xdrproc_t)xdr_rpcbs_rmtcalllist)) {
    207   1.1      fvdl 		return (FALSE);
    208   1.1      fvdl 	}
    209   1.1      fvdl 	return (TRUE);
    210   1.1      fvdl }
    211   1.1      fvdl 
    212   1.1      fvdl bool_t
    213   1.9       abs xdr_rpcbs_proc(XDR *xdrs, rpcbs_proc objp)
    214   1.1      fvdl {
    215   1.2  christos 	if (!xdr_vector(xdrs, (char *)(void *)objp, RPCBSTAT_HIGHPROC,
    216   1.8  christos 	    (u_int)sizeof (int), (xdrproc_t)xdr_int)) {
    217   1.1      fvdl 		return (FALSE);
    218   1.1      fvdl 	}
    219   1.1      fvdl 	return (TRUE);
    220   1.1      fvdl }
    221   1.1      fvdl 
    222   1.1      fvdl bool_t
    223   1.9       abs xdr_rpcbs_addrlist_ptr(XDR *xdrs, rpcbs_addrlist_ptr *objp)
    224   1.1      fvdl {
    225   1.8  christos 	if (!xdr_pointer(xdrs, (char **)objp, (u_int)sizeof (rpcbs_addrlist),
    226   1.1      fvdl 			(xdrproc_t)xdr_rpcbs_addrlist)) {
    227   1.1      fvdl 		return (FALSE);
    228   1.1      fvdl 	}
    229   1.1      fvdl 	return (TRUE);
    230   1.1      fvdl }
    231   1.1      fvdl 
    232   1.1      fvdl bool_t
    233   1.9       abs xdr_rpcbs_rmtcalllist_ptr(XDR *xdrs, rpcbs_rmtcalllist_ptr *objp)
    234   1.1      fvdl {
    235   1.8  christos 	if (!xdr_pointer(xdrs, (char **)objp, (u_int)sizeof (rpcbs_rmtcalllist),
    236   1.1      fvdl 			(xdrproc_t)xdr_rpcbs_rmtcalllist)) {
    237   1.1      fvdl 		return (FALSE);
    238   1.1      fvdl 	}
    239   1.1      fvdl 	return (TRUE);
    240   1.1      fvdl }
    241   1.1      fvdl 
    242   1.1      fvdl bool_t
    243   1.9       abs xdr_rpcb_stat(XDR *xdrs, rpcb_stat *objp)
    244   1.1      fvdl {
    245   1.4     lukem 
    246   1.4     lukem 	_DIAGASSERT(objp != NULL);
    247   1.1      fvdl 
    248   1.1      fvdl 	if (!xdr_rpcbs_proc(xdrs, objp->info)) {
    249   1.1      fvdl 		return (FALSE);
    250   1.1      fvdl 	}
    251   1.1      fvdl 	if (!xdr_int(xdrs, &objp->setinfo)) {
    252   1.1      fvdl 		return (FALSE);
    253   1.1      fvdl 	}
    254   1.1      fvdl 	if (!xdr_int(xdrs, &objp->unsetinfo)) {
    255   1.1      fvdl 		return (FALSE);
    256   1.1      fvdl 	}
    257   1.1      fvdl 	if (!xdr_rpcbs_addrlist_ptr(xdrs, &objp->addrinfo)) {
    258   1.1      fvdl 		return (FALSE);
    259   1.1      fvdl 	}
    260   1.1      fvdl 	return (TRUE);
    261   1.1      fvdl }
    262   1.1      fvdl 
    263   1.1      fvdl /*
    264   1.1      fvdl  * One rpcb_stat structure is returned for each version of rpcbind
    265   1.1      fvdl  * being monitored.
    266   1.1      fvdl  */
    267   1.1      fvdl bool_t
    268   1.9       abs xdr_rpcb_stat_byvers(XDR *xdrs, rpcb_stat_byvers objp)
    269   1.1      fvdl {
    270   1.2  christos 	if (!xdr_vector(xdrs, (char *)(void *)objp, RPCBVERS_STAT,
    271   1.8  christos 	    (u_int)sizeof (rpcb_stat), (xdrproc_t)xdr_rpcb_stat)) {
    272   1.1      fvdl 		return (FALSE);
    273   1.1      fvdl 	}
    274   1.1      fvdl 	return (TRUE);
    275   1.1      fvdl }
    276