#ifndef _SRC_MOUNT_MOUNT_CEPH_H
#define _SRC_MOUNT_MOUNT_CEPH_H

#ifdef __cplusplus
extern "C" {
#endif

/*
 * See class CryptoKey
 *
 * 2 (for the type of secret) +
 * 8 (for the timestamp) +
 * 2 (for the length of secret) +
 * 16 (for an AES-128 key)
 */
#define MAX_RAW_SECRET_LEN (2 + 8 + 2 + 16)

/* Max length of base64 encoded secret. 4/3 original size (rounded up) */
#define MAX_SECRET_LEN ((MAX_RAW_SECRET_LEN + (3 - 1)) * 4 / 3)

/* Max Including null terminator */
#define SECRET_BUFSIZE (MAX_SECRET_LEN + 1)

/* 2k should be enough for anyone? */
#define MON_LIST_BUFSIZE	2048

#define CLUSTER_FSID_LEN        37

void mount_ceph_debug(const char *fmt, ...);

struct ceph_config_info {
	char		cci_secret[SECRET_BUFSIZE];	// auth secret
	char		cci_mons[MON_LIST_BUFSIZE];	// monitor addrs
	char		cci_fsid[CLUSTER_FSID_LEN];	// cluster fsid
};

void mount_ceph_get_config_info(const char *config_file, const char *name,
				bool v2_addrs, struct ceph_config_info *cci);

#ifdef __cplusplus
}
#endif

#endif /* _SRC_MOUNT_MOUNT_CEPH_H */
