1/* 2 * Sun RPC is a product of Sun Microsystems, Inc. and is provided for 3 * unrestricted use provided that this legend is included on all tape 4 * media and as a part of the software program in whole or part. Users 5 * may copy or modify Sun RPC without charge, but are not authorized 6 * to license or distribute it to anyone else except as part of a product or 7 * program developed by the user. 8 * 9 * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE 10 * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR 11 * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. 12 * 13 * Sun RPC is provided with no support and without any obligation on the 14 * part of Sun Microsystems, Inc. to assist in its use, correction, 15 * modification or enhancement. 16 * 17 * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE 18 * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC 19 * OR ANY PART THEREOF. 20 * 21 * In no event will Sun Microsystems, Inc. be liable for any lost revenue 22 * or profits or other special, indirect and consequential damages, even if 23 * Sun has been advised of the possibility of such damages. 24 * 25 * Sun Microsystems, Inc. 26 * 2550 Garcia Avenue 27 * Mountain View, California 94043 28 */ 29 30#ifndef __RPCSVC_YP_H__ 31#define __RPCSVC_YP_H__ 32 33#include <features.h> 34#include <rpc/rpc.h> 35 36#define YPMAXRECORD 1024 37#define YPMAXDOMAIN 64 38#define YPMAXMAP 64 39#define YPMAXPEER 64 40 41enum ypstat { 42 YP_TRUE = 1, 43 YP_NOMORE = 2, 44 YP_FALSE = 0, 45 YP_NOMAP = -1, 46 YP_NODOM = -2, 47 YP_NOKEY = -3, 48 YP_BADOP = -4, 49 YP_BADDB = -5, 50 YP_YPERR = -6, 51 YP_BADARGS = -7, 52 YP_VERS = -8, 53}; 54typedef enum ypstat ypstat; 55 56enum ypxfrstat { 57 YPXFR_SUCC = 1, 58 YPXFR_AGE = 2, 59 YPXFR_NOMAP = -1, 60 YPXFR_NODOM = -2, 61 YPXFR_RSRC = -3, 62 YPXFR_RPC = -4, 63 YPXFR_MADDR = -5, 64 YPXFR_YPERR = -6, 65 YPXFR_BADARGS = -7, 66 YPXFR_DBM = -8, 67 YPXFR_FILE = -9, 68 YPXFR_SKEW = -10, 69 YPXFR_CLEAR = -11, 70 YPXFR_FORCE = -12, 71 YPXFR_XFRERR = -13, 72 YPXFR_REFUSED = -14, 73}; 74typedef enum ypxfrstat ypxfrstat; 75 76typedef char *domainname; 77typedef char *mapname; 78typedef char *peername; 79 80typedef struct { 81 u_int keydat_len; 82 char *keydat_val; 83} keydat; 84 85typedef struct { 86 u_int valdat_len; 87 char *valdat_val; 88} valdat; 89 90struct ypmap_parms { 91 domainname domain; 92 mapname map; 93 u_int ordernum; 94 peername peer; 95}; 96typedef struct ypmap_parms ypmap_parms; 97 98struct ypreq_key { 99 domainname domain; 100 mapname map; 101 keydat key; 102}; 103typedef struct ypreq_key ypreq_key; 104 105struct ypreq_nokey { 106 domainname domain; 107 mapname map; 108}; 109typedef struct ypreq_nokey ypreq_nokey; 110 111struct ypreq_xfr { 112 ypmap_parms map_parms; 113 u_int transid; 114 u_int prog; 115 u_int port; 116}; 117typedef struct ypreq_xfr ypreq_xfr; 118 119struct ypresp_val { 120 ypstat stat; 121 valdat val; 122}; 123typedef struct ypresp_val ypresp_val; 124 125struct ypresp_key_val { 126 ypstat stat; 127#ifdef STUPID_SUN_BUG 128 /* This is the form as distributed by Sun. But even the Sun NIS 129 servers expect the values in the other order. So their 130 implementation somehow must change the order internally. We 131 don't want to follow this bad example since the user should be 132 able to use rpcgen on this file. */ 133 keydat key; 134 valdat val; 135#else 136 valdat val; 137 keydat key; 138#endif 139}; 140typedef struct ypresp_key_val ypresp_key_val; 141 142struct ypresp_master { 143 ypstat stat; 144 peername peer; 145}; 146typedef struct ypresp_master ypresp_master; 147 148struct ypresp_order { 149 ypstat stat; 150 u_int ordernum; 151}; 152typedef struct ypresp_order ypresp_order; 153 154struct ypresp_all { 155 bool_t more; 156 union { 157 ypresp_key_val val; 158 } ypresp_all_u; 159}; 160typedef struct ypresp_all ypresp_all; 161 162struct ypresp_xfr { 163 u_int transid; 164 ypxfrstat xfrstat; 165}; 166typedef struct ypresp_xfr ypresp_xfr; 167 168struct ypmaplist { 169 mapname map; 170 struct ypmaplist *next; 171}; 172typedef struct ypmaplist ypmaplist; 173 174struct ypresp_maplist { 175 ypstat stat; 176 ypmaplist *maps; 177}; 178typedef struct ypresp_maplist ypresp_maplist; 179 180enum yppush_status { 181 YPPUSH_SUCC = 1, 182 YPPUSH_AGE = 2, 183 YPPUSH_NOMAP = -1, 184 YPPUSH_NODOM = -2, 185 YPPUSH_RSRC = -3, 186 YPPUSH_RPC = -4, 187 YPPUSH_MADDR = -5, 188 YPPUSH_YPERR = -6, 189 YPPUSH_BADARGS = -7, 190 YPPUSH_DBM = -8, 191 YPPUSH_FILE = -9, 192 YPPUSH_SKEW = -10, 193 YPPUSH_CLEAR = -11, 194 YPPUSH_FORCE = -12, 195 YPPUSH_XFRERR = -13, 196 YPPUSH_REFUSED = -14, 197}; 198typedef enum yppush_status yppush_status; 199 200struct yppushresp_xfr { 201 u_int transid; 202 yppush_status status; 203}; 204typedef struct yppushresp_xfr yppushresp_xfr; 205 206enum ypbind_resptype { 207 YPBIND_SUCC_VAL = 1, 208 YPBIND_FAIL_VAL = 2, 209}; 210typedef enum ypbind_resptype ypbind_resptype; 211 212struct ypbind_binding { 213 char ypbind_binding_addr[4]; 214 char ypbind_binding_port[2]; 215}; 216typedef struct ypbind_binding ypbind_binding; 217 218struct ypbind_resp { 219 ypbind_resptype ypbind_status; 220 union { 221 u_int ypbind_error; 222 ypbind_binding ypbind_bindinfo; 223 } ypbind_resp_u; 224}; 225typedef struct ypbind_resp ypbind_resp; 226 227#define YPBIND_ERR_ERR 1 228#define YPBIND_ERR_NOSERV 2 229#define YPBIND_ERR_RESC 3 230 231struct ypbind_setdom { 232 domainname ypsetdom_domain; 233 ypbind_binding ypsetdom_binding; 234 u_int ypsetdom_vers; 235}; 236typedef struct ypbind_setdom ypbind_setdom; 237 238__BEGIN_DECLS 239 240#define YPPROG 100004 241#define YPVERS 2 242 243#define YPPROC_NULL 0 244extern void *ypproc_null_2 (void *, CLIENT *); 245extern void *ypproc_null_2_svc (void *, struct svc_req *); 246#define YPPROC_DOMAIN 1 247extern bool_t *ypproc_domain_2 (domainname *, CLIENT *); 248extern bool_t *ypproc_domain_2_svc (domainname *, struct svc_req *); 249#define YPPROC_DOMAIN_NONACK 2 250extern bool_t *ypproc_domain_nonack_2 (domainname *, CLIENT *); 251extern bool_t *ypproc_domain_nonack_2_svc (domainname *, struct svc_req *); 252#define YPPROC_MATCH 3 253extern ypresp_val *ypproc_match_2 (ypreq_key *, CLIENT *); 254extern ypresp_val *ypproc_match_2_svc (ypreq_key *, struct svc_req *); 255#define YPPROC_FIRST 4 256extern ypresp_key_val *ypproc_first_2 (ypreq_key *, CLIENT *); 257extern ypresp_key_val *ypproc_first_2_svc (ypreq_key *, struct svc_req *); 258#define YPPROC_NEXT 5 259extern ypresp_key_val *ypproc_next_2 (ypreq_key *, CLIENT *); 260extern ypresp_key_val *ypproc_next_2_svc (ypreq_key *, struct svc_req *); 261#define YPPROC_XFR 6 262extern ypresp_xfr *ypproc_xfr_2 (ypreq_xfr *, CLIENT *); 263extern ypresp_xfr *ypproc_xfr_2_svc (ypreq_xfr *, struct svc_req *); 264#define YPPROC_CLEAR 7 265extern void *ypproc_clear_2 (void *, CLIENT *); 266extern void *ypproc_clear_2_svc (void *, struct svc_req *); 267#define YPPROC_ALL 8 268extern ypresp_all *ypproc_all_2 (ypreq_nokey *, CLIENT *); 269extern ypresp_all *ypproc_all_2_svc (ypreq_nokey *, struct svc_req *); 270#define YPPROC_MASTER 9 271extern ypresp_master *ypproc_master_2 (ypreq_nokey *, CLIENT *); 272extern ypresp_master *ypproc_master_2_svc (ypreq_nokey *, struct svc_req *); 273#define YPPROC_ORDER 10 274extern ypresp_order *ypproc_order_2 (ypreq_nokey *, CLIENT *); 275extern ypresp_order *ypproc_order_2_svc (ypreq_nokey *, struct svc_req *); 276#define YPPROC_MAPLIST 11 277extern ypresp_maplist *ypproc_maplist_2 (domainname *, CLIENT *); 278extern ypresp_maplist *ypproc_maplist_2_svc (domainname *, struct svc_req *); 279extern int ypprog_2_freeresult (SVCXPRT *, xdrproc_t, caddr_t); 280 281 282#define YPPUSH_XFRRESPPROG (0x40000000) 283#define YPPUSH_XFRRESPVERS 1 284 285#define YPPUSHPROC_NULL 0 286extern void *yppushproc_null_1 (void *, CLIENT *); 287extern void *yppushproc_null_1_svc (void *, struct svc_req *); 288#define YPPUSHPROC_XFRRESP 1 289extern void *yppushproc_xfrresp_1 (yppushresp_xfr *, CLIENT *); 290extern void *yppushproc_xfrresp_1_svc (yppushresp_xfr *, struct svc_req *); 291extern int yppush_xfrrespprog_1_freeresult (SVCXPRT *, xdrproc_t, caddr_t); 292 293 294#define YPBINDPROG 100007 295#define YPBINDVERS 2 296 297#define YPBINDPROC_NULL 0 298extern void *ypbindproc_null_2 (void *, CLIENT *); 299extern void *ypbindproc_null_2_svc (void *, struct svc_req *); 300#define YPBINDPROC_DOMAIN 1 301extern ypbind_resp *ypbindproc_domain_2 (domainname *, CLIENT *); 302extern ypbind_resp *ypbindproc_domain_2_svc (domainname *, struct svc_req *); 303#define YPBINDPROC_SETDOM 2 304extern void *ypbindproc_setdom_2 (ypbind_setdom *, CLIENT *); 305extern void *ypbindproc_setdom_2_svc (ypbind_setdom *, struct svc_req *); 306extern int ypbindprog_2_freeresult (SVCXPRT *, xdrproc_t, caddr_t); 307 308 309extern bool_t xdr_ypstat (XDR *, ypstat*); 310extern bool_t xdr_ypxfrstat (XDR *, ypxfrstat*); 311extern bool_t xdr_domainname (XDR *, domainname*); 312extern bool_t xdr_mapname (XDR *, mapname*); 313extern bool_t xdr_peername (XDR *, peername*); 314extern bool_t xdr_keydat (XDR *, keydat*); 315extern bool_t xdr_valdat (XDR *, valdat*); 316extern bool_t xdr_ypmap_parms (XDR *, ypmap_parms*); 317extern bool_t xdr_ypreq_key (XDR *, ypreq_key*); 318extern bool_t xdr_ypreq_nokey (XDR *, ypreq_nokey*); 319extern bool_t xdr_ypreq_xfr (XDR *, ypreq_xfr*); 320extern bool_t xdr_ypresp_val (XDR *, ypresp_val*); 321extern bool_t xdr_ypresp_key_val (XDR *, ypresp_key_val*); 322extern bool_t xdr_ypresp_master (XDR *, ypresp_master*); 323extern bool_t xdr_ypresp_order (XDR *, ypresp_order*); 324extern bool_t xdr_ypresp_all (XDR *, ypresp_all*); 325extern bool_t xdr_ypresp_xfr (XDR *, ypresp_xfr*); 326extern bool_t xdr_ypmaplist (XDR *, ypmaplist*); 327extern bool_t xdr_ypresp_maplist (XDR *, ypresp_maplist*); 328extern bool_t xdr_yppush_status (XDR *, yppush_status*); 329extern bool_t xdr_yppushresp_xfr (XDR *, yppushresp_xfr*); 330extern bool_t xdr_ypbind_resptype (XDR *, ypbind_resptype*); 331extern bool_t xdr_ypbind_binding (XDR *, ypbind_binding*); 332extern bool_t xdr_ypbind_resp (XDR *, ypbind_resp*); 333extern bool_t xdr_ypbind_setdom (XDR *, ypbind_setdom*); 334 335__END_DECLS 336 337#endif /* !__RPCSVC_YP_H__ */ 338