/*
 * Used for tfc_wwn_cit attributes
 */

#include <target/configfs_macros.h>

CONFIGFS_EATTR_STRUCT(target_fabric_nacl_attrib, se_node_acl);
#define TF_NACL_ATTRIB_ATTR(_fabric, _name, _mode)			\
static struct target_fabric_nacl_attrib_attribute _fabric##_nacl_attrib_##_name = \
	__CONFIGFS_EATTR(_name, _mode,					\
	_fabric##_nacl_attrib_show_##_name,				\
	_fabric##_nacl_attrib_store_##_name);

CONFIGFS_EATTR_STRUCT(target_fabric_nacl_auth, se_node_acl);
#define TF_NACL_AUTH_ATTR(_fabric, _name, _mode)			\
static struct target_fabric_nacl_auth_attribute _fabric##_nacl_auth_##_name = \
	__CONFIGFS_EATTR(_name, _mode,					\
	_fabric##_nacl_auth_show_##_name,				\
	_fabric##_nacl_auth_store_##_name);

#define TF_NACL_AUTH_ATTR_RO(_fabric, _name)				\
static struct target_fabric_nacl_auth_attribute _fabric##_nacl_auth_##_name = \
	__CONFIGFS_EATTR_RO(_name,					\
	_fabric##_nacl_auth_show_##_name);

CONFIGFS_EATTR_STRUCT(target_fabric_nacl_param, se_node_acl);
#define TF_NACL_PARAM_ATTR(_fabric, _name, _mode)			\
static struct target_fabric_nacl_param_attribute _fabric##_nacl_param_##_name = \
	__CONFIGFS_EATTR(_name, _mode,					\
	_fabric##_nacl_param_show_##_name,				\
	_fabric##_nacl_param_store_##_name);

#define TF_NACL_PARAM_ATTR_RO(_fabric, _name)				\
static struct target_fabric_nacl_param_attribute _fabric##_nacl_param_##_name = \
	__CONFIGFS_EATTR_RO(_name,					\
	_fabric##_nacl_param_show_##_name);


CONFIGFS_EATTR_STRUCT(target_fabric_nacl_base, se_node_acl);
#define TF_NACL_BASE_ATTR(_fabric, _name, _mode)			\
static struct target_fabric_nacl_base_attribute _fabric##_nacl_##_name = \
	__CONFIGFS_EATTR(_name, _mode,					\
	_fabric##_nacl_show_##_name,					\
	_fabric##_nacl_store_##_name);

#define TF_NACL_BASE_ATTR_RO(_fabric, _name)				\
static struct target_fabric_nacl_base_attribute _fabric##_nacl_##_name = \
	__CONFIGFS_EATTR_RO(_name,					\
	_fabric##_nacl_show_##_name);

CONFIGFS_EATTR_STRUCT(target_fabric_np_base, se_tpg_np);
#define TF_NP_BASE_ATTR(_fabric, _name, _mode)				\
static struct target_fabric_np_base_attribute _fabric##_np_##_name =	\
	__CONFIGFS_EATTR(_name, _mode,					\
	_fabric##_np_show_##_name,					\
	_fabric##_np_store_##_name);

CONFIGFS_EATTR_STRUCT(target_fabric_tpg_attrib, se_portal_group);
#define TF_TPG_ATTRIB_ATTR(_fabric, _name, _mode)			\
static struct target_fabric_tpg_attrib_attribute _fabric##_tpg_attrib_##_name = \
	__CONFIGFS_EATTR(_name, _mode,					\
	_fabric##_tpg_attrib_show_##_name,				\
	_fabric##_tpg_attrib_store_##_name);


CONFIGFS_EATTR_STRUCT(target_fabric_tpg_param, se_portal_group);
#define TF_TPG_PARAM_ATTR(_fabric, _name, _mode)			\
static struct target_fabric_tpg_param_attribute _fabric##_tpg_param_##_name = \
	__CONFIGFS_EATTR(_name, _mode,					\
	_fabric##_tpg_param_show_##_name,				\
	_fabric##_tpg_param_store_##_name);


CONFIGFS_EATTR_STRUCT(target_fabric_tpg, se_portal_group);
#define TF_TPG_BASE_ATTR(_fabric, _name, _mode)				\
static struct target_fabric_tpg_attribute _fabric##_tpg_##_name =	\
	__CONFIGFS_EATTR(_name, _mode,					\
	_fabric##_tpg_show_##_name,					\
	_fabric##_tpg_store_##_name);


CONFIGFS_EATTR_STRUCT(target_fabric_wwn, target_fabric_configfs);
#define TF_WWN_ATTR(_fabric, _name, _mode)				\
static struct target_fabric_wwn_attribute _fabric##_wwn_##_name =	\
	__CONFIGFS_EATTR(_name, _mode,					\
	_fabric##_wwn_show_attr_##_name,				\
	_fabric##_wwn_store_attr_##_name);

#define TF_WWN_ATTR_RO(_fabric, _name)					\
static struct target_fabric_wwn_attribute _fabric##_wwn_##_name =	\
	__CONFIGFS_EATTR_RO(_name,					\
	_fabric##_wwn_show_attr_##_name);

CONFIGFS_EATTR_STRUCT(target_fabric_discovery, target_fabric_configfs);
#define TF_DISC_ATTR(_fabric, _name, _mode)				\
static struct target_fabric_discovery_attribute _fabric##_disc_##_name = \
	__CONFIGFS_EATTR(_name, _mode,					\
	_fabric##_disc_show_##_name,					\
	_fabric##_disc_store_##_name);

#define TF_DISC_ATTR_RO(_fabric, _name)					\
static struct target_fabric_discovery_attribute _fabric##_disc_##_name = \
	__CONFIGFS_EATTR_RO(_name,					\
	_fabric##_disc_show_##_name);

extern int target_fabric_setup_cits(struct target_fabric_configfs *);
