/*
Copyright (c) 2014, Ronnie Sahlberg
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer. 
2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

The views and conclusions contained in the software and documentation are those
of the authors and should not be interpreted as representing official policies, 
either expressed or implied, of the FreeBSD Project.
*/

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

#ifndef _RQUOTA_H_RPCGEN
#define _RQUOTA_H_RPCGEN

#include <nfsc/libnfs-zdr.h>


#ifdef __cplusplus
extern "C" {
#endif

#define RQUOTAPATHLEN 1024

enum rquotastat {
	RQUOTA_OK = 1,
	RQUOTA_NOQUOTA = 2,
	RQUOTA_EPERM = 3,
};
typedef enum rquotastat rquotastat;

typedef char *exportpath;

struct GETQUOTA1args {
	exportpath export;
	int uid;
};
typedef struct GETQUOTA1args GETQUOTA1args;

enum quotatype {
	RQUOTA_TYPE_UID = 0,
	RQUOTA_TYPE_GID = 1,
};
typedef enum quotatype quotatype;

struct GETQUOTA2args {
	exportpath export;
	quotatype type;
	int uid;
};
typedef struct GETQUOTA2args GETQUOTA2args;

struct GETQUOTA1res_ok {
	int bsize;
	int active;
	int bhardlimit;
	int bsoftlimit;
	int curblocks;
	int fhardlimit;
	int fsoftlimit;
	int curfiles;
	int btimeleft;
	int ftimeleft;
};
typedef struct GETQUOTA1res_ok GETQUOTA1res_ok;

struct GETQUOTA1res {
	rquotastat status;
	union {
		GETQUOTA1res_ok quota;
	} GETQUOTA1res_u;
};
typedef struct GETQUOTA1res GETQUOTA1res;

#define RQUOTA_PROGRAM 100011
#define RQUOTA_V1 1

#if defined(__STDC__) || defined(__cplusplus)
#define RQUOTA1_NULL 0
extern  void * rquota1_null_1(void *, void *);
extern  void * rquota1_null_1_svc(void *, struct svc_req *);
#define RQUOTA1_GETQUOTA 1
extern  GETQUOTA1res * rquota1_getquota_1(GETQUOTA1args *, void *);
extern  GETQUOTA1res * rquota1_getquota_1_svc(GETQUOTA1args *, struct svc_req *);
#define RQUOTA1_GETACTIVEQUOTA 2
extern  GETQUOTA1res * rquota1_getactivequota_1(GETQUOTA1args *, void *);
extern  GETQUOTA1res * rquota1_getactivequota_1_svc(GETQUOTA1args *, struct svc_req *);
extern int rquota_program_1_freeresult (void *, zdrproc_t, caddr_t);

#else /* K&R C */
#define RQUOTA1_NULL 0
extern  void * rquota1_null_1();
extern  void * rquota1_null_1_svc();
#define RQUOTA1_GETQUOTA 1
extern  GETQUOTA1res * rquota1_getquota_1();
extern  GETQUOTA1res * rquota1_getquota_1_svc();
#define RQUOTA1_GETACTIVEQUOTA 2
extern  GETQUOTA1res * rquota1_getactivequota_1();
extern  GETQUOTA1res * rquota1_getactivequota_1_svc();
extern int rquota_program_1_freeresult ();
#endif /* K&R C */
#define RQUOTA_V2 2

#if defined(__STDC__) || defined(__cplusplus)
#define RQUOTA2_NULL 0
extern  void * rquota2_null_2(void *, void *);
extern  void * rquota2_null_2_svc(void *, struct svc_req *);
#define RQUOTA2_GETQUOTA 1
extern  GETQUOTA1res * rquota2_getquota_2(GETQUOTA2args *, void *);
extern  GETQUOTA1res * rquota2_getquota_2_svc(GETQUOTA2args *, struct svc_req *);
#define RQUOTA2_GETACTIVEQUOTA 2
extern  GETQUOTA1res * rquota2_getactivequota_2(GETQUOTA2args *, void *);
extern  GETQUOTA1res * rquota2_getactivequota_2_svc(GETQUOTA2args *, struct svc_req *);
extern int rquota_program_2_freeresult (void *, zdrproc_t, caddr_t);

#else /* K&R C */
#define RQUOTA2_NULL 0
extern  void * rquota2_null_2();
extern  void * rquota2_null_2_svc();
#define RQUOTA2_GETQUOTA 1
extern  GETQUOTA1res * rquota2_getquota_2();
extern  GETQUOTA1res * rquota2_getquota_2_svc();
#define RQUOTA2_GETACTIVEQUOTA 2
extern  GETQUOTA1res * rquota2_getactivequota_2();
extern  GETQUOTA1res * rquota2_getactivequota_2_svc();
extern int rquota_program_2_freeresult ();
#endif /* K&R C */

/* the zdr functions */

#if defined(__STDC__) || defined(__cplusplus)
extern  uint32_t zdr_rquotastat (ZDR *, rquotastat*);
extern  uint32_t zdr_exportpath (ZDR *, exportpath*);
extern  uint32_t zdr_GETQUOTA1args (ZDR *, GETQUOTA1args*);
extern  uint32_t zdr_quotatype (ZDR *, quotatype*);
extern  uint32_t zdr_GETQUOTA2args (ZDR *, GETQUOTA2args*);
extern  uint32_t zdr_GETQUOTA1res_ok (ZDR *, GETQUOTA1res_ok*);
extern  uint32_t zdr_GETQUOTA1res (ZDR *, GETQUOTA1res*);

#else /* K&R C */
extern uint32_t zdr_rquotastat ();
extern uint32_t zdr_exportpath ();
extern uint32_t zdr_GETQUOTA1args ();
extern uint32_t zdr_quotatype ();
extern uint32_t zdr_GETQUOTA2args ();
extern uint32_t zdr_GETQUOTA1res_ok ();
extern uint32_t zdr_GETQUOTA1res ();

#endif /* K&R C */

#ifdef __cplusplus
}
#endif

#endif /* !_RQUOTA_H_RPCGEN */
