/*
 * Please do not edit this file.
 * It was generated using rpcgen.
 */

#ifndef _NSM_ADDR_H_RPCGEN
#define	_NSM_ADDR_H_RPCGEN

#include <rpc/rpc.h>
#ifndef _KERNEL
#include <synch.h>
#include <thread.h>
#endif /* !_KERNEL */

#ifdef __cplusplus
extern "C" {
#endif

/*
 * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 *
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */

/* from nsm_addr.x */

/*
 * This is the definition for the REG procedure which is used
 * to register name/address pairs with statd.
 */


enum nsm_addr_res {
	nsm_addr_succ = 0,
	nsm_addr_fail = 1
};
typedef enum nsm_addr_res nsm_addr_res;

struct reg1args {
	u_int family;
	char *name;
	netobj address;
};
typedef struct reg1args reg1args;

struct reg1res {
	nsm_addr_res status;
};
typedef struct reg1res reg1res;

/*
 * This is the definition for the UNREG procedure which is used
 * to unregister an address (and its associated name, if that name
 * has no other addresses registered with it) with statd.
 */

struct unreg1args {
	u_int family;
	char *name;
	netobj address;
};
typedef struct unreg1args unreg1args;

struct unreg1res {
	nsm_addr_res status;
};
typedef struct unreg1res unreg1res;

/*
 * This is the definition for the NSM address registration network
 * protocol which is used to privately support address registration
 * with the status daemon statd (NSM).
 */

#define	NSM_ADDR_PROGRAM	100133
#define	NSM_ADDR_V1	1

#if defined(__STDC__) || defined(__cplusplus)
#define	NSMADDRPROC1_NULL	0
extern  enum clnt_stat nsmaddrproc1_null_1(void *, void *, CLIENT *);
extern  bool_t nsmaddrproc1_null_1_svc(void *, void *, struct svc_req *);
#define	NSMADDRPROC1_REG	1
extern  enum clnt_stat nsmaddrproc1_reg_1(reg1args *, reg1res *, CLIENT *);
extern  bool_t nsmaddrproc1_reg_1_svc(reg1args *, reg1res *, struct svc_req *);
#define	NSMADDRPROC1_UNREG	2
extern  enum clnt_stat nsmaddrproc1_unreg_1(unreg1args *, unreg1res *, CLIENT *);
extern  bool_t nsmaddrproc1_unreg_1_svc(unreg1args *, unreg1res *, struct svc_req *);
extern int nsm_addr_program_1_freeresult(SVCXPRT *, xdrproc_t, caddr_t);

#else /* K&R C */
#define	NSMADDRPROC1_NULL	0
extern  enum clnt_stat nsmaddrproc1_null_1();
extern  bool_t nsmaddrproc1_null_1_svc();
#define	NSMADDRPROC1_REG	1
extern  enum clnt_stat nsmaddrproc1_reg_1();
extern  bool_t nsmaddrproc1_reg_1_svc();
#define	NSMADDRPROC1_UNREG	2
extern  enum clnt_stat nsmaddrproc1_unreg_1();
extern  bool_t nsmaddrproc1_unreg_1_svc();
extern int nsm_addr_program_1_freeresult();
#endif /* K&R C */

/* the xdr functions */

#if defined(__STDC__) || defined(__cplusplus)
extern  bool_t xdr_nsm_addr_res(XDR *, nsm_addr_res*);
extern  bool_t xdr_reg1args(XDR *, reg1args*);
extern  bool_t xdr_reg1res(XDR *, reg1res*);
extern  bool_t xdr_unreg1args(XDR *, unreg1args*);
extern  bool_t xdr_unreg1res(XDR *, unreg1res*);

#else /* K&R C */
extern bool_t xdr_nsm_addr_res();
extern bool_t xdr_reg1args();
extern bool_t xdr_reg1res();
extern bool_t xdr_unreg1args();
extern bool_t xdr_unreg1res();

#endif /* K&R C */

#ifdef __cplusplus
}
#endif

#endif /* !_NSM_ADDR_H_RPCGEN */
