summaryrefslogtreecommitdiffstats
path: root/usr.sbin/ctld/ctld.h
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2015-02-20 17:09:49 +0000
committermav <mav@FreeBSD.org>2015-02-20 17:09:49 +0000
commite153ed8e1a0b3f8b99080751661f20e98ae34ec8 (patch)
tree1bcbb40474ed9f4d90600664b6b78ee19c302f2c /usr.sbin/ctld/ctld.h
parent441b67d0c3c5982947eab6b086c58d8d5a6399d7 (diff)
downloadFreeBSD-src-e153ed8e1a0b3f8b99080751661f20e98ae34ec8.zip
FreeBSD-src-e153ed8e1a0b3f8b99080751661f20e98ae34ec8.tar.gz
MFC r278354: Teach ctld(8) to control non-iSCSI CTL ports.
This change introduces new target option "port", that assigns current target to specified CTL port. On config application ctld(8) will apply LUN mapping according to target configuration to specified port and bring the port up. On shutdown cltd(8) will remove the mapping and put the port down. This change allows to configure both iSCSI and FibreChannel targets in the same configuration file in alike way. Kernel side support was added earlier at r278037. Relnotes: yes Sponsored by: iXsystems, Inc.
Diffstat (limited to 'usr.sbin/ctld/ctld.h')
-rw-r--r--usr.sbin/ctld/ctld.h22
1 files changed, 21 insertions, 1 deletions
diff --git a/usr.sbin/ctld/ctld.h b/usr.sbin/ctld/ctld.h
index e213e0b..b98d56a 100644
--- a/usr.sbin/ctld/ctld.h
+++ b/usr.sbin/ctld/ctld.h
@@ -125,14 +125,25 @@ struct portal_group {
uint16_t pg_tag;
};
+struct pport {
+ TAILQ_ENTRY(pport) pp_next;
+ TAILQ_HEAD(, port) pp_ports;
+ struct conf *pp_conf;
+ char *pp_name;
+
+ uint32_t pp_ctl_port;
+};
+
struct port {
TAILQ_ENTRY(port) p_next;
TAILQ_ENTRY(port) p_pgs;
+ TAILQ_ENTRY(port) p_pps;
TAILQ_ENTRY(port) p_ts;
struct conf *p_conf;
char *p_name;
struct auth_group *p_auth_group;
struct portal_group *p_portal_group;
+ struct pport *p_pport;
struct target *p_target;
uint32_t p_ctl_port;
@@ -186,6 +197,7 @@ struct conf {
TAILQ_HEAD(, auth_group) conf_auth_groups;
TAILQ_HEAD(, port) conf_ports;
TAILQ_HEAD(, portal_group) conf_portal_groups;
+ TAILQ_HEAD(, pport) conf_pports;
TAILQ_HEAD(, isns) conf_isns;
int conf_isns_period;
int conf_isns_timeout;
@@ -278,7 +290,7 @@ char *rchap_get_response(struct rchap *rchap);
void rchap_delete(struct rchap *rchap);
struct conf *conf_new(void);
-struct conf *conf_new_from_file(const char *path);
+struct conf *conf_new_from_file(const char *path, struct conf *old);
struct conf *conf_new_from_kernel(void);
void conf_delete(struct conf *conf);
int conf_verify(struct conf *conf);
@@ -331,8 +343,16 @@ void isns_register(struct isns *isns, struct isns *oldisns);
void isns_check(struct isns *isns);
void isns_deregister(struct isns *isns);
+struct pport *pport_new(struct conf *conf, const char *name,
+ uint32_t ctl_port);
+struct pport *pport_find(const struct conf *conf, const char *name);
+struct pport *pport_copy(struct pport *pport, struct conf *conf);
+void pport_delete(struct pport *pport);
+
struct port *port_new(struct conf *conf, struct target *target,
struct portal_group *pg);
+struct port *port_new_pp(struct conf *conf, struct target *target,
+ struct pport *pp);
struct port *port_find(const struct conf *conf, const char *name);
struct port *port_find_in_pg(const struct portal_group *pg,
const char *target);
OpenPOWER on IntegriCloud