int iscsi_target_get_groupsinfo(struct getgroupsinfo *groupsinfo,int len)
{
struct t10_alua_lu_gp * lu_gp;
struct getgroupinfo *groupinfo;
struct t10_alua_lu_gp_member *lu_gp_mem;
struct se_portal_group *se_tpg;
struct se_device *dev;
struct se_port *port;
struct se_lun *lun;
int ret=-1;
int groupsnum=0;
list_for_each_entry(lu_gp, &g_lu_gp, lu_gp_node)
{
groupsinfo->groupsnum++;
if(groupsinfo->groupsnum>MAXGROUPNUM)
return ret ;
}
if(groupsnum>=groupsinfo->groupsnum)
return ret ;
list_for_each_entry(lu_gp, &g_lu_gp, lu_gp_node)
{
if(!lu_gp)
continue;
groupinfo=groupsinfo->groupinfo+groupsnum;
strcpy(groupinfo->groupname,lu_gp->lu_gp_ibgroup->groupname);
list_for_each_entry(lu_gp_mem, &lu_gp->lu_gp_mem_list,lu_gp_mem_list)
{
if(!lu_gp_mem)
continue;
groupinfo->lunnum++;
dev = lu_gp_mem->lu_gp_mem_dev;
list_for_each_entry(port, &dev->dev_sep_list,sep_list)
{
if(!port)
continue;
se_tpg=port->sep_tpg;
if(!se_tpg)
continue;
else
{
groupinfo->link=1;
}
break;
}
}
groupsnum++;
}
return 0;
}