Home | History | Annotate | Line # | Download | only in rpc
      1  1.12  ginsbach /*	$NetBSD: rpcb_st_xdr.c,v 1.12 2017/08/13 01:08:41 ginsbach 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.12  ginsbach __RCSID("$NetBSD: rpcb_st_xdr.c,v 1.12 2017/08/13 01:08:41 ginsbach 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.11  christos #include <rpc/rpc_com.h>
     51   1.1      fvdl 
     52   1.4     lukem #include <assert.h>
     53   1.4     lukem 
     54   1.1      fvdl /* Link list of all the stats about getport and getaddr */
     55   1.1      fvdl 
     56   1.1      fvdl #ifdef __weak_alias
     57   1.1      fvdl __weak_alias(xdr_rpcbs_addrlist,_xdr_rpcbs_addrlist)
     58   1.1      fvdl __weak_alias(xdr_rpcbs_rmtcalllist,_xdr_rpcbs_rmtcalllist)
     59   1.1      fvdl __weak_alias(xdr_rpcbs_proc,_xdr_rpcbs_proc)
     60   1.1      fvdl __weak_alias(xdr_rpcbs_addrlist_ptr,_xdr_rpcbs_addrlist_ptr)
     61   1.1      fvdl __weak_alias(xdr_rpcbs_rmtcalllist_ptr,_xdr_rpcbs_rmtcalllist_ptr)
     62   1.1      fvdl __weak_alias(xdr_rpcb_stat,_xdr_rpcb_stat)
     63   1.1      fvdl __weak_alias(xdr_rpcb_stat_byvers,_xdr_rpcb_stat_byvers)
     64   1.1      fvdl #endif
     65   1.1      fvdl 
     66   1.1      fvdl bool_t
     67   1.9       abs xdr_rpcbs_addrlist(XDR *xdrs, rpcbs_addrlist *objp)
     68   1.1      fvdl {
     69   1.1      fvdl 
     70   1.4     lukem 	_DIAGASSERT(objp != NULL);
     71   1.4     lukem 
     72   1.1      fvdl 	    if (!xdr_u_int32_t(xdrs, &objp->prog)) {
     73   1.1      fvdl 		return (FALSE);
     74   1.1      fvdl 	    }
     75   1.1      fvdl 	    if (!xdr_u_int32_t(xdrs, &objp->vers)) {
     76   1.1      fvdl 		return (FALSE);
     77   1.1      fvdl 	    }
     78   1.1      fvdl 	    if (!xdr_int(xdrs, &objp->success)) {
     79   1.1      fvdl 		return (FALSE);
     80   1.1      fvdl 	    }
     81   1.1      fvdl 	    if (!xdr_int(xdrs, &objp->failure)) {
     82   1.1      fvdl 		return (FALSE);
     83   1.1      fvdl 	    }
     84  1.11  christos 	    if (!xdr_string(xdrs, &objp->netid, RPC_MAXDATASIZE)) {
     85   1.1      fvdl 		return (FALSE);
     86   1.1      fvdl 	    }
     87   1.1      fvdl 
     88   1.7       mrg 	    if (!xdr_pointer(xdrs, (char **)(void *)&objp->next,
     89   1.8  christos 			(u_int)sizeof (rpcbs_addrlist),
     90   1.1      fvdl 			(xdrproc_t)xdr_rpcbs_addrlist)) {
     91   1.1      fvdl 		return (FALSE);
     92   1.1      fvdl 	    }
     93   1.1      fvdl 
     94   1.1      fvdl 	return (TRUE);
     95   1.1      fvdl }
     96   1.1      fvdl 
     97   1.1      fvdl /* Link list of all the stats about rmtcall */
     98   1.1      fvdl 
     99   1.1      fvdl bool_t
    100   1.9       abs xdr_rpcbs_rmtcalllist(XDR *xdrs, rpcbs_rmtcalllist *objp)
    101   1.1      fvdl {
    102   1.2  christos 	int32_t *buf;
    103   1.1      fvdl 
    104   1.4     lukem 	_DIAGASSERT(xdrs != NULL);
    105   1.4     lukem 	_DIAGASSERT(objp != NULL);
    106   1.4     lukem 
    107   1.1      fvdl 	if (xdrs->x_op == XDR_ENCODE) {
    108   1.1      fvdl 	buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT);
    109   1.1      fvdl 	if (buf == NULL) {
    110   1.1      fvdl 		if (!xdr_u_int32_t(xdrs, &objp->prog)) {
    111   1.1      fvdl 			return (FALSE);
    112   1.1      fvdl 		}
    113   1.1      fvdl 		if (!xdr_u_int32_t(xdrs, &objp->vers)) {
    114   1.1      fvdl 			return (FALSE);
    115   1.1      fvdl 		}
    116   1.1      fvdl 		if (!xdr_u_int32_t(xdrs, &objp->proc)) {
    117   1.1      fvdl 			return (FALSE);
    118   1.1      fvdl 		}
    119   1.1      fvdl 		if (!xdr_int(xdrs, &objp->success)) {
    120   1.1      fvdl 			return (FALSE);
    121   1.1      fvdl 		}
    122   1.1      fvdl 		if (!xdr_int(xdrs, &objp->failure)) {
    123   1.1      fvdl 			return (FALSE);
    124   1.1      fvdl 		}
    125   1.1      fvdl 		if (!xdr_int(xdrs, &objp->indirect)) {
    126   1.1      fvdl 			return (FALSE);
    127   1.1      fvdl 		}
    128   1.1      fvdl 	} else {
    129   1.3      fvdl 		IXDR_PUT_U_INT32(buf, objp->prog);
    130   1.3      fvdl 		IXDR_PUT_U_INT32(buf, objp->vers);
    131   1.3      fvdl 		IXDR_PUT_U_INT32(buf, objp->proc);
    132   1.3      fvdl 		IXDR_PUT_INT32(buf, objp->success);
    133   1.3      fvdl 		IXDR_PUT_INT32(buf, objp->failure);
    134   1.3      fvdl 		IXDR_PUT_INT32(buf, objp->indirect);
    135   1.1      fvdl 	}
    136  1.11  christos 	if (!xdr_string(xdrs, &objp->netid, RPC_MAXDATASIZE)) {
    137   1.1      fvdl 		return (FALSE);
    138   1.1      fvdl 	}
    139   1.7       mrg 	if (!xdr_pointer(xdrs, (char **)(void *)&objp->next,
    140   1.8  christos 			(u_int)sizeof (rpcbs_rmtcalllist),
    141   1.1      fvdl 			(xdrproc_t)xdr_rpcbs_rmtcalllist)) {
    142   1.1      fvdl 		return (FALSE);
    143   1.1      fvdl 	}
    144   1.1      fvdl 	return (TRUE);
    145   1.1      fvdl 	} else if (xdrs->x_op == XDR_DECODE) {
    146   1.1      fvdl 	buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT);
    147   1.1      fvdl 	if (buf == NULL) {
    148   1.1      fvdl 		if (!xdr_u_int32_t(xdrs, &objp->prog)) {
    149   1.1      fvdl 			return (FALSE);
    150   1.1      fvdl 		}
    151   1.1      fvdl 		if (!xdr_u_int32_t(xdrs, &objp->vers)) {
    152   1.1      fvdl 			return (FALSE);
    153   1.1      fvdl 		}
    154   1.1      fvdl 		if (!xdr_u_int32_t(xdrs, &objp->proc)) {
    155   1.1      fvdl 			return (FALSE);
    156   1.1      fvdl 		}
    157   1.1      fvdl 		if (!xdr_int(xdrs, &objp->success)) {
    158   1.1      fvdl 			return (FALSE);
    159   1.1      fvdl 		}
    160   1.1      fvdl 		if (!xdr_int(xdrs, &objp->failure)) {
    161   1.1      fvdl 			return (FALSE);
    162   1.1      fvdl 		}
    163   1.1      fvdl 		if (!xdr_int(xdrs, &objp->indirect)) {
    164   1.1      fvdl 			return (FALSE);
    165   1.1      fvdl 		}
    166   1.1      fvdl 	} else {
    167   1.3      fvdl 		objp->prog = (rpcprog_t)IXDR_GET_U_INT32(buf);
    168   1.3      fvdl 		objp->vers = (rpcvers_t)IXDR_GET_U_INT32(buf);
    169   1.3      fvdl 		objp->proc = (rpcproc_t)IXDR_GET_U_INT32(buf);
    170   1.3      fvdl 		objp->success = (int)IXDR_GET_INT32(buf);
    171   1.3      fvdl 		objp->failure = (int)IXDR_GET_INT32(buf);
    172   1.3      fvdl 		objp->indirect = (int)IXDR_GET_INT32(buf);
    173   1.1      fvdl 	}
    174  1.11  christos 	if (!xdr_string(xdrs, &objp->netid, RPC_MAXDATASIZE)) {
    175   1.1      fvdl 		return (FALSE);
    176   1.1      fvdl 	}
    177   1.7       mrg 	if (!xdr_pointer(xdrs, (char **)(void *)&objp->next,
    178   1.8  christos 			(u_int)sizeof (rpcbs_rmtcalllist),
    179   1.1      fvdl 			(xdrproc_t)xdr_rpcbs_rmtcalllist)) {
    180   1.1      fvdl 		return (FALSE);
    181   1.1      fvdl 	}
    182   1.1      fvdl 	return (TRUE);
    183   1.1      fvdl 	}
    184   1.1      fvdl 	if (!xdr_u_int32_t(xdrs, &objp->prog)) {
    185   1.1      fvdl 		return (FALSE);
    186   1.1      fvdl 	}
    187   1.1      fvdl 	if (!xdr_u_int32_t(xdrs, &objp->vers)) {
    188   1.1      fvdl 		return (FALSE);
    189   1.1      fvdl 	}
    190   1.1      fvdl 	if (!xdr_u_int32_t(xdrs, &objp->proc)) {
    191   1.1      fvdl 		return (FALSE);
    192   1.1      fvdl 	}
    193   1.1      fvdl 	if (!xdr_int(xdrs, &objp->success)) {
    194   1.1      fvdl 		return (FALSE);
    195   1.1      fvdl 	}
    196   1.1      fvdl 	if (!xdr_int(xdrs, &objp->failure)) {
    197   1.1      fvdl 		return (FALSE);
    198   1.1      fvdl 	}
    199   1.1      fvdl 	if (!xdr_int(xdrs, &objp->indirect)) {
    200   1.1      fvdl 		return (FALSE);
    201   1.1      fvdl 	}
    202  1.11  christos 	if (!xdr_string(xdrs, &objp->netid, RPC_MAXDATASIZE)) {
    203   1.1      fvdl 		return (FALSE);
    204   1.1      fvdl 	}
    205   1.7       mrg 	if (!xdr_pointer(xdrs, (char **)(void *)&objp->next,
    206   1.8  christos 			(u_int)sizeof (rpcbs_rmtcalllist),
    207   1.1      fvdl 			(xdrproc_t)xdr_rpcbs_rmtcalllist)) {
    208   1.1      fvdl 		return (FALSE);
    209   1.1      fvdl 	}
    210   1.1      fvdl 	return (TRUE);
    211   1.1      fvdl }
    212   1.1      fvdl 
    213   1.1      fvdl bool_t
    214   1.9       abs xdr_rpcbs_proc(XDR *xdrs, rpcbs_proc objp)
    215   1.1      fvdl {
    216   1.2  christos 	if (!xdr_vector(xdrs, (char *)(void *)objp, RPCBSTAT_HIGHPROC,
    217   1.8  christos 	    (u_int)sizeof (int), (xdrproc_t)xdr_int)) {
    218   1.1      fvdl 		return (FALSE);
    219   1.1      fvdl 	}
    220   1.1      fvdl 	return (TRUE);
    221   1.1      fvdl }
    222   1.1      fvdl 
    223   1.1      fvdl bool_t
    224   1.9       abs xdr_rpcbs_addrlist_ptr(XDR *xdrs, rpcbs_addrlist_ptr *objp)
    225   1.1      fvdl {
    226   1.8  christos 	if (!xdr_pointer(xdrs, (char **)objp, (u_int)sizeof (rpcbs_addrlist),
    227   1.1      fvdl 			(xdrproc_t)xdr_rpcbs_addrlist)) {
    228   1.1      fvdl 		return (FALSE);
    229   1.1      fvdl 	}
    230   1.1      fvdl 	return (TRUE);
    231   1.1      fvdl }
    232   1.1      fvdl 
    233   1.1      fvdl bool_t
    234   1.9       abs xdr_rpcbs_rmtcalllist_ptr(XDR *xdrs, rpcbs_rmtcalllist_ptr *objp)
    235   1.1      fvdl {
    236   1.8  christos 	if (!xdr_pointer(xdrs, (char **)objp, (u_int)sizeof (rpcbs_rmtcalllist),
    237   1.1      fvdl 			(xdrproc_t)xdr_rpcbs_rmtcalllist)) {
    238   1.1      fvdl 		return (FALSE);
    239   1.1      fvdl 	}
    240   1.1      fvdl 	return (TRUE);
    241   1.1      fvdl }
    242   1.1      fvdl 
    243   1.1      fvdl bool_t
    244   1.9       abs xdr_rpcb_stat(XDR *xdrs, rpcb_stat *objp)
    245   1.1      fvdl {
    246   1.4     lukem 
    247   1.4     lukem 	_DIAGASSERT(objp != NULL);
    248   1.1      fvdl 
    249   1.1      fvdl 	if (!xdr_rpcbs_proc(xdrs, objp->info)) {
    250   1.1      fvdl 		return (FALSE);
    251   1.1      fvdl 	}
    252   1.1      fvdl 	if (!xdr_int(xdrs, &objp->setinfo)) {
    253   1.1      fvdl 		return (FALSE);
    254   1.1      fvdl 	}
    255   1.1      fvdl 	if (!xdr_int(xdrs, &objp->unsetinfo)) {
    256   1.1      fvdl 		return (FALSE);
    257   1.1      fvdl 	}
    258   1.1      fvdl 	if (!xdr_rpcbs_addrlist_ptr(xdrs, &objp->addrinfo)) {
    259   1.1      fvdl 		return (FALSE);
    260   1.1      fvdl 	}
    261  1.12  ginsbach 	if (!xdr_rpcbs_rmtcalllist_ptr(xdrs, &objp->rmtinfo)) {
    262  1.12  ginsbach 		return (FALSE);
    263  1.12  ginsbach 	}
    264   1.1      fvdl 	return (TRUE);
    265   1.1      fvdl }
    266   1.1      fvdl 
    267   1.1      fvdl /*
    268   1.1      fvdl  * One rpcb_stat structure is returned for each version of rpcbind
    269   1.1      fvdl  * being monitored.
    270   1.1      fvdl  */
    271   1.1      fvdl bool_t
    272   1.9       abs xdr_rpcb_stat_byvers(XDR *xdrs, rpcb_stat_byvers objp)
    273   1.1      fvdl {
    274   1.2  christos 	if (!xdr_vector(xdrs, (char *)(void *)objp, RPCBVERS_STAT,
    275   1.8  christos 	    (u_int)sizeof (rpcb_stat), (xdrproc_t)xdr_rpcb_stat)) {
    276   1.1      fvdl 		return (FALSE);
    277   1.1      fvdl 	}
    278   1.1      fvdl 	return (TRUE);
    279   1.1      fvdl }
    280