diff options
author | mav <mav@FreeBSD.org> | 2015-03-04 14:12:38 +0000 |
---|---|---|
committer | mav <mav@FreeBSD.org> | 2015-03-04 14:12:38 +0000 |
commit | 88b2acde962416dacd783696b2a20472c4a5c091 (patch) | |
tree | 5376bc69a3b4320a877e9060ad81190c73865485 /usr.sbin/ctld | |
parent | 9f7eac47b3392b1844c07760d7e8788cf69c66d4 (diff) | |
download | FreeBSD-src-88b2acde962416dacd783696b2a20472c4a5c091.zip FreeBSD-src-88b2acde962416dacd783696b2a20472c4a5c091.tar.gz |
If target name starts with "naa.", set it as WWNN for CTL port.
MFC after: 1 week
Sponsored by: iXsystems, Inc.
Diffstat (limited to 'usr.sbin/ctld')
-rw-r--r-- | usr.sbin/ctld/kernel.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/usr.sbin/ctld/kernel.c b/usr.sbin/ctld/kernel.c index c9e4468..95bc89c 100644 --- a/usr.sbin/ctld/kernel.c +++ b/usr.sbin/ctld/kernel.c @@ -935,9 +935,21 @@ kernel_port_add(struct port *port) req.status); return (1); } - } else if (port->p_pport) + } else if (port->p_pport) { port->p_ctl_port = port->p_pport->pp_ctl_port; + if (strncmp(targ->t_name, "naa.", 4) == 0 && + strlen(targ->t_name) == 20) { + bzero(&entry, sizeof(entry)); + entry.port_type = CTL_PORT_NONE; + entry.targ_port = port->p_ctl_port; + entry.flags |= CTL_PORT_WWNN_VALID; + entry.wwnn = strtoull(targ->t_name + 4, NULL, 16); + if (ioctl(ctl_fd, CTL_SET_PORT_WWNS, &entry) == -1) + log_warn("CTL_SET_PORT_WWNS ioctl failed"); + } + } + /* Explicitly enable mapping to block any access except allowed. */ lm.port = port->p_ctl_port; lm.plun = UINT32_MAX; |