Commit 335fb0e8 authored by Shuhei Matsumoto's avatar Shuhei Matsumoto Committed by Daniel Verkamp
Browse files

net&iscsi: force overwrite "*" and "[*]" by wildcard



SPDK have used "*" and "[*]" as wildcard address
for iSCSI network portal. These abbreviations may be convenient
but unusual. If "*" or "[*]" is used, output warning message
and forcefully overwrite "*" or "[*]" by "0.0.0.0" or "[::]"
respectively.

After confirming that the usage of "*" and "[*]" is not used any
more, the code for "*" and "[*]" will be deleted.

Change-Id: Ibb8fb0d4598ffa1f7b1690ad6afd10d5ae162612
Signed-off-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-on: https://review.gerrithub.io/383556


Reviewed-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent 58fb5a17
Loading
Loading
Loading
Loading
+16 −1
Original line number Diff line number Diff line
@@ -84,7 +84,22 @@ spdk_iscsi_portal_create(const char *host, const char *port, uint64_t cpumask)
		SPDK_ERRLOG("portal malloc error (%s, %s)\n", host, port);
		return NULL;
	}

	/* check and overwrite abbreviation of wildcard */
	if (strcasecmp(host, "[*]") == 0) {
		SPDK_WARNLOG("Please use \"[::]\" as IPv6 wildcard\n");
		SPDK_WARNLOG("Convert \"[*]\" to \"[::]\" automatically\n");
		SPDK_WARNLOG("(Use of \"[*]\" will be deprecated in a future release)");
		p->host = strdup("[::]");
	} else if (strcasecmp(host, "*") == 0) {
		SPDK_WARNLOG("Please use \"0.0.0.0\" as IPv4 wildcard\n");
		SPDK_WARNLOG("Convert \"*\" to \"0.0.0.0\" automatically\n");
		SPDK_WARNLOG("(Use of \"[*]\" will be deprecated in a future release)");
		p->host = strdup("0.0.0.0");
	} else {
		p->host = strdup(host);
	}

	p->port = strdup(port);
	p->cpumask = cpumask;
	p->sock = -1;
+3 −9
Original line number Diff line number Diff line
@@ -403,18 +403,12 @@ spdk_iscsi_send_tgts(struct spdk_iscsi_conn *conn, const char *iiqn,
					host = p->host;
					/* wildcard? */
					if (strcasecmp(host, "[::]") == 0
					    || strcasecmp(host, "[*]") == 0
					    || strcasecmp(host, "0.0.0.0") == 0
					    || strcasecmp(host, "*") == 0) {
						if ((strcasecmp(host, "[::]") == 0
						     || strcasecmp(host, "[*]") == 0)
						    && spdk_sock_is_ipv6(conn->sock)) {
					    || strcasecmp(host, "0.0.0.0") == 0) {
						if (spdk_sock_is_ipv6(conn->sock)) {
							snprintf(buf, sizeof buf, "[%s]",
								 conn->target_addr);
							host = buf;
						} else if ((strcasecmp(host, "0.0.0.0") == 0
							    || strcasecmp(host, "*") == 0)
							   && spdk_sock_is_ipv4(conn->sock)) {
						} else if (spdk_sock_is_ipv4(conn->sock)) {
							snprintf(buf, sizeof buf, "%s",
								 conn->target_addr);
							host = buf;
+0 −7
Original line number Diff line number Diff line
@@ -140,13 +140,6 @@ spdk_sock_create(const char *ip, int port, enum spdk_sock_create_type type)
		if (p != NULL)
			*p = '\0';
		ip = (const char *) &buf[0];
		if (strcasecmp(ip, "*") == 0) {
			snprintf(buf, sizeof(buf), "::");
			ip = (const char *) &buf[0];
		}
	} else if (strcasecmp(ip, "*") == 0) {
		snprintf(buf, sizeof(buf), "0.0.0.0");
		ip = (const char *) &buf[0];
	}

	snprintf(portnum, sizeof portnum, "%d", port);