xref: /spdk/lib/iscsi/init_grp.h (revision a6dbe3721eb3b5990707fc3e378c95e505dd8ab5)
1 /*   SPDX-License-Identifier: BSD-3-Clause
2  *   Copyright (C) 2008-2012 Daisuke Aoyama <aoyama@peach.ne.jp>.
3  *   Copyright (C) 2016 Intel Corporation.
4  *   All rights reserved.
5  */
6 
7 #ifndef SPDK_INIT_GRP_H
8 #define SPDK_INIT_GRP_H
9 
10 #include "iscsi/iscsi.h"
11 #include "iscsi/conn.h"
12 
13 struct spdk_iscsi_initiator_name {
14 	char name[MAX_INITIATOR_NAME + 1];
15 	TAILQ_ENTRY(spdk_iscsi_initiator_name) tailq;
16 };
17 
18 struct spdk_iscsi_initiator_netmask {
19 	char mask[MAX_INITIATOR_ADDR + 1];
20 	TAILQ_ENTRY(spdk_iscsi_initiator_netmask) tailq;
21 };
22 
23 struct spdk_iscsi_init_grp {
24 	int ninitiators;
25 	TAILQ_HEAD(, spdk_iscsi_initiator_name) initiator_head;
26 	int nnetmasks;
27 	TAILQ_HEAD(, spdk_iscsi_initiator_netmask) netmask_head;
28 	int ref;
29 	int tag;
30 	TAILQ_ENTRY(spdk_iscsi_init_grp)	tailq;
31 };
32 
33 /* SPDK iSCSI Initiator Group management API */
34 int iscsi_init_grp_create_from_initiator_list(int tag,
35 		int num_initiator_names, char **initiator_names,
36 		int num_initiator_masks, char **initiator_masks);
37 int iscsi_init_grp_add_initiators_from_initiator_list(int tag,
38 		int num_initiator_names, char **initiator_names,
39 		int num_initiator_masks, char **initiator_masks);
40 int iscsi_init_grp_delete_initiators_from_initiator_list(int tag,
41 		int num_initiator_names, char **initiator_names,
42 		int num_initiator_masks, char **initiator_masks);
43 int iscsi_init_grp_register(struct spdk_iscsi_init_grp *ig);
44 struct spdk_iscsi_init_grp *iscsi_init_grp_unregister(int tag);
45 struct spdk_iscsi_init_grp *iscsi_init_grp_find_by_tag(int tag);
46 void iscsi_init_grp_destroy(struct spdk_iscsi_init_grp *ig);
47 int iscsi_parse_init_grps(void);
48 void iscsi_init_grps_destroy(void);
49 void iscsi_init_grps_info_json(struct spdk_json_write_ctx *w);
50 void iscsi_init_grps_config_json(struct spdk_json_write_ctx *w);
51 #endif /* SPDK_INIT_GRP_H */
52