Commit 60cb6921 authored by Breno Leitao's avatar Breno Leitao Committed by Jakub Kicinski
Browse files

netconsole: use netpoll_parse_ip_addr in local_ip_store



Replace manual IP address parsing with a call to netpoll_parse_ip_addr
in local_ip_store(), simplifying the code and reducing the chance of
errors.

Also, remove the pr_err() if the user enters an invalid value in
configfs entries. pr_err() is not the best way to alert user that the
configuration is invalid.

Signed-off-by: default avatarBreno Leitao <leitao@debian.org>
Reviewed-by: default avatarSimon Horman <horms@kernel.org>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 364213b7
Loading
Loading
Loading
Loading
+5 −17
Original line number Diff line number Diff line
@@ -757,6 +757,7 @@ static ssize_t local_ip_store(struct config_item *item, const char *buf,
{
	struct netconsole_target *nt = to_target(item);
	ssize_t ret = -EINVAL;
	int ipv6;

	mutex_lock(&dynamic_netconsole_mutex);
	if (nt->enabled) {
@@ -765,23 +766,10 @@ static ssize_t local_ip_store(struct config_item *item, const char *buf,
		goto out_unlock;
	}

	if (strnchr(buf, count, ':')) {
		const char *end;

		if (in6_pton(buf, count, nt->np.local_ip.in6.s6_addr, -1, &end) > 0) {
			if (*end && *end != '\n') {
				pr_err("invalid IPv6 address at: <%c>\n", *end);
	ipv6 = netpoll_parse_ip_addr(buf, &nt->np.local_ip);
	if (ipv6 == -1)
		goto out_unlock;
			}
			nt->np.ipv6 = true;
		} else
			goto out_unlock;
	} else {
		if (!nt->np.ipv6)
			nt->np.local_ip.ip = in_aton(buf);
		else
			goto out_unlock;
	}
	nt->np.ipv6 = !!ipv6;

	ret = strnlen(buf, count);
out_unlock: