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

#ifndef _GM_PROTOCOL_H_RPCGEN
#define _GM_PROTOCOL_H_RPCGEN

#include <rpc/rpc.h>


#ifdef __cplusplus
extern "C" {
#endif

#define UDP_HEADER_SIZE 28
#define MAX_DESC_LEN 128
#define GM_PROTOCOL_GUARD

enum Ganglia_value_types {
	GANGLIA_VALUE_UNKNOWN = 0,
	GANGLIA_VALUE_STRING = 1,
	GANGLIA_VALUE_UNSIGNED_SHORT = 2,
	GANGLIA_VALUE_SHORT = 3,
	GANGLIA_VALUE_UNSIGNED_INT = 4,
	GANGLIA_VALUE_INT = 5,
	GANGLIA_VALUE_FLOAT = 6,
	GANGLIA_VALUE_DOUBLE = 7,
};
typedef enum Ganglia_value_types Ganglia_value_types;

struct Ganglia_extra_data {
	char *name;
	char *data;
};
typedef struct Ganglia_extra_data Ganglia_extra_data;

struct Ganglia_metadata_message {
	char *type;
	char *name;
	char *units;
	u_int slope;
	u_int tmax;
	u_int dmax;
	struct {
		u_int metadata_len;
		struct Ganglia_extra_data *metadata_val;
	} metadata;
};
typedef struct Ganglia_metadata_message Ganglia_metadata_message;

struct Ganglia_metric_id {
	char *host;
	char *name;
	bool_t spoof;
};
typedef struct Ganglia_metric_id Ganglia_metric_id;

struct Ganglia_metadatadef {
	struct Ganglia_metric_id metric_id;
	struct Ganglia_metadata_message metric;
};
typedef struct Ganglia_metadatadef Ganglia_metadatadef;

struct Ganglia_metadatareq {
	struct Ganglia_metric_id metric_id;
};
typedef struct Ganglia_metadatareq Ganglia_metadatareq;

struct Ganglia_gmetric_ushort {
	struct Ganglia_metric_id metric_id;
	char *fmt;
	u_short us;
};
typedef struct Ganglia_gmetric_ushort Ganglia_gmetric_ushort;

struct Ganglia_gmetric_short {
	struct Ganglia_metric_id metric_id;
	char *fmt;
	short ss;
};
typedef struct Ganglia_gmetric_short Ganglia_gmetric_short;

struct Ganglia_gmetric_int {
	struct Ganglia_metric_id metric_id;
	char *fmt;
	int si;
};
typedef struct Ganglia_gmetric_int Ganglia_gmetric_int;

struct Ganglia_gmetric_uint {
	struct Ganglia_metric_id metric_id;
	char *fmt;
	u_int ui;
};
typedef struct Ganglia_gmetric_uint Ganglia_gmetric_uint;

struct Ganglia_gmetric_string {
	struct Ganglia_metric_id metric_id;
	char *fmt;
	char *str;
};
typedef struct Ganglia_gmetric_string Ganglia_gmetric_string;

struct Ganglia_gmetric_float {
	struct Ganglia_metric_id metric_id;
	char *fmt;
	float f;
};
typedef struct Ganglia_gmetric_float Ganglia_gmetric_float;

struct Ganglia_gmetric_double {
	struct Ganglia_metric_id metric_id;
	char *fmt;
	double d;
};
typedef struct Ganglia_gmetric_double Ganglia_gmetric_double;

enum Ganglia_msg_formats {
	gmetadata_full = 128,
	gmetric_ushort = 128 + 1,
	gmetric_short = 128 + 2,
	gmetric_int = 128 + 3,
	gmetric_uint = 128 + 4,
	gmetric_string = 128 + 5,
	gmetric_float = 128 + 6,
	gmetric_double = 128 + 7,
	gmetadata_request = 128 + 8,
};
typedef enum Ganglia_msg_formats Ganglia_msg_formats;

struct Ganglia_metadata_msg {
	Ganglia_msg_formats id;
	union {
		Ganglia_metadatadef gfull;
		Ganglia_metadatareq grequest;
	} Ganglia_metadata_msg_u;
};
typedef struct Ganglia_metadata_msg Ganglia_metadata_msg;

struct Ganglia_value_msg {
	Ganglia_msg_formats id;
	union {
		Ganglia_gmetric_ushort gu_short;
		Ganglia_gmetric_short gs_short;
		Ganglia_gmetric_int gs_int;
		Ganglia_gmetric_uint gu_int;
		Ganglia_gmetric_string gstr;
		Ganglia_gmetric_float gf;
		Ganglia_gmetric_double gd;
	} Ganglia_value_msg_u;
};
typedef struct Ganglia_value_msg Ganglia_value_msg;

struct Ganglia_25metric {
	int key;
	char *name;
	int tmax;
	Ganglia_value_types type;
	char *units;
	char *slope;
	char *fmt;
	int msg_size;
	char *desc;
	int *metadata;
};
typedef struct Ganglia_25metric Ganglia_25metric;
 #define GANGLIA_MAX_MESSAGE_LEN (1500 - 28 - 8)
#define modular_metric 4098

/* the xdr functions */

#if defined(__STDC__) || defined(__cplusplus)
extern  bool_t xdr_Ganglia_value_types (XDR *, Ganglia_value_types*);
extern  bool_t xdr_Ganglia_extra_data (XDR *, Ganglia_extra_data*);
extern  bool_t xdr_Ganglia_metadata_message (XDR *, Ganglia_metadata_message*);
extern  bool_t xdr_Ganglia_metric_id (XDR *, Ganglia_metric_id*);
extern  bool_t xdr_Ganglia_metadatadef (XDR *, Ganglia_metadatadef*);
extern  bool_t xdr_Ganglia_metadatareq (XDR *, Ganglia_metadatareq*);
extern  bool_t xdr_Ganglia_gmetric_ushort (XDR *, Ganglia_gmetric_ushort*);
extern  bool_t xdr_Ganglia_gmetric_short (XDR *, Ganglia_gmetric_short*);
extern  bool_t xdr_Ganglia_gmetric_int (XDR *, Ganglia_gmetric_int*);
extern  bool_t xdr_Ganglia_gmetric_uint (XDR *, Ganglia_gmetric_uint*);
extern  bool_t xdr_Ganglia_gmetric_string (XDR *, Ganglia_gmetric_string*);
extern  bool_t xdr_Ganglia_gmetric_float (XDR *, Ganglia_gmetric_float*);
extern  bool_t xdr_Ganglia_gmetric_double (XDR *, Ganglia_gmetric_double*);
extern  bool_t xdr_Ganglia_msg_formats (XDR *, Ganglia_msg_formats*);
extern  bool_t xdr_Ganglia_metadata_msg (XDR *, Ganglia_metadata_msg*);
extern  bool_t xdr_Ganglia_value_msg (XDR *, Ganglia_value_msg*);
extern  bool_t xdr_Ganglia_25metric (XDR *, Ganglia_25metric*);

#else /* K&R C */
extern bool_t xdr_Ganglia_value_types ();
extern bool_t xdr_Ganglia_extra_data ();
extern bool_t xdr_Ganglia_metadata_message ();
extern bool_t xdr_Ganglia_metric_id ();
extern bool_t xdr_Ganglia_metadatadef ();
extern bool_t xdr_Ganglia_metadatareq ();
extern bool_t xdr_Ganglia_gmetric_ushort ();
extern bool_t xdr_Ganglia_gmetric_short ();
extern bool_t xdr_Ganglia_gmetric_int ();
extern bool_t xdr_Ganglia_gmetric_uint ();
extern bool_t xdr_Ganglia_gmetric_string ();
extern bool_t xdr_Ganglia_gmetric_float ();
extern bool_t xdr_Ganglia_gmetric_double ();
extern bool_t xdr_Ganglia_msg_formats ();
extern bool_t xdr_Ganglia_metadata_msg ();
extern bool_t xdr_Ganglia_value_msg ();
extern bool_t xdr_Ganglia_25metric ();

#endif /* K&R C */

#ifdef __cplusplus
}
#endif

#endif /* !_GM_PROTOCOL_H_RPCGEN */
