Received: by 2002:a05:6a10:2785:0:0:0:0 with SMTP id ia5csp2587835pxb; Mon, 11 Jan 2021 13:48:57 -0800 (PST) X-Google-Smtp-Source: ABdhPJxFf+0OEKrqJlzDv6trvUg1rp3vKYIg/xv8vPPVGdMZ2ySdrowTaOXk7qcN4BSfKMlL60Ne X-Received: by 2002:a17:906:d8dc:: with SMTP id re28mr1013829ejb.168.1610401737673; Mon, 11 Jan 2021 13:48:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1610401737; cv=none; d=google.com; s=arc-20160816; b=tDrm4exUN9EU1A3OYbwpNc6ZV7k1RwULau+ymNp0bbk6PVe+wtILb6ypOs0nFzcnw8 7quSgCsjt96ntN0VQtLwkKege0nTlCOgkgof+OLQDYmqltkop/PtAEYSgC8EsBW9FeeR 1cj1fwk7auoX1x2LFpAszcLBwSlmeZsl/xxAbHVaD50yVGaxcLk8qaIyyZvElGISdzLT D14R51vXqxMnDbGYpxDVNz/y3D5Cqrh4s7KrGx/GD8QSy90whoPlfCv8UfMSd5eiwxVT KvCH9fsVPGQ1Hf+7Uqk3a5o9cDr6XQ6TeStEyVTV/Fzgitfn6HjEriJepV/1ikuchc78 kqAg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:sender:dkim-signature; bh=LbP1OQZq+5+FFGKGb0LjAahO6kCFsRQ76eQrVUZXeys=; b=ms1EmOWvTsZFn0/qIJlmwGr12la3GrssV4mumGeiy+kvXBH2fTCbxvvXWY9PeO/Am6 oM6tJpYbcn+y04pPo4GqQUQeKv+bXzRrzEcfiu68DDVy0f0TSXr/i+/KITu7X9BiB+8V Xj4wfMHDdyQdpZiUZ7CzQDlpxx+OowPPWmH6FeesuR8VqYxhZ+WbSYqP3ksacaMa3Nnq X+PlZMin1Th3bS4uFffI2bvsIrtAQz+KeqN0tuiOMq6O0x8NWRKEs+r+uCae0QIomkiU D3OUsC0nSWl1LzmhgL6FCYXfkcbaEhDSfyqyzsR/0igEnMGoOcPUj7VZe3JE9xTzzrYQ G44g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=ANucLuun; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id u4si377459edo.323.2021.01.11.13.48.37; Mon, 11 Jan 2021 13:48:57 -0800 (PST) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=ANucLuun; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730300AbhAKVqu (ORCPT + 99 others); Mon, 11 Jan 2021 16:46:50 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47364 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728324AbhAKVqu (ORCPT ); Mon, 11 Jan 2021 16:46:50 -0500 Received: from mail-io1-xd2e.google.com (mail-io1-xd2e.google.com [IPv6:2607:f8b0:4864:20::d2e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BB68EC061786 for ; Mon, 11 Jan 2021 13:46:09 -0800 (PST) Received: by mail-io1-xd2e.google.com with SMTP id 81so38781ioc.13 for ; Mon, 11 Jan 2021 13:46:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=LbP1OQZq+5+FFGKGb0LjAahO6kCFsRQ76eQrVUZXeys=; b=ANucLuunrQH+L+xa6AzdtLNk6EHkN9ql71SFxW0KgUyr0uRF+X2ETAeZ+s0St6lDg7 XiI9K5nlk+6AHtRsDg8yBup5SETjdYxbHTXTNY3atl0o92bht1OrpUhInIuDIiLHExQF IMzyhJmf/09vHw0URcEFVjlV/+QRfkmNA+Qyrb6OG7N/ndZ1f8eqk3IijDOGHWcfmDAj 1Jr2RgzBYDGiAOmnWwxdT1l8Nrg4ODrXtI9dcTofpXOTAgwK+6eDDnvDhNsqvlKjTvSU 7MKPEqnPiFy2SZUqWCmUuM2ZvAbL+jk/RWCNDwUoUJRRBqYh1J+umnRaDwcEbjGKl4Rr DEiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :mime-version:content-transfer-encoding; bh=LbP1OQZq+5+FFGKGb0LjAahO6kCFsRQ76eQrVUZXeys=; b=uY8lpLY0PJbCCjKN43E2EDyHUOU6DKW5UpRdiojYZkY1P8V4kHDyDv4vlVJNvOUgM5 wG/POKNVVcwjGnJNOZLYHTjfoPhUd6kAlE0tYhocVk/Qt1jeLoALf2sJ/BxTPitgHUeh eiUUj3v8H8DzTW32WM8TP5dvAuEcaDAoeElvDZX8RcOoqWKL5tuFvqZ5JAErz2it8b6K XwFCKZHO4W2SgNajHT6RfRZLozAerJfxEzSW0N8XPmZDkLLWjyIT1h9h4eardJQ+X+sA AyF/vxl9KUktzY/KurZwholgasAgstOPTjVDgF5tyjpsH0ilkVkI337AYXPb5z9sp3u1 k+aA== X-Gm-Message-State: AOAM530Zdfr0rID82pH5qDTrEqlZa5iAnKIEKUFEKpG/V5Gt/mphXk2U 3AmEkCPPxYGANpHSgSLZGoKYc9CIVvJ48g== X-Received: by 2002:a02:650e:: with SMTP id u14mr1464274jab.143.1610401568974; Mon, 11 Jan 2021 13:46:08 -0800 (PST) Received: from gouda.nowheycreamery.com (c-68-32-74-190.hsd1.mi.comcast.net. [68.32.74.190]) by smtp.gmail.com with ESMTPSA id o195sm655885ila.38.2021.01.11.13.46.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Jan 2021 13:46:08 -0800 (PST) Sender: Anna Schumaker From: schumaker.anna@gmail.com X-Google-Original-From: Anna.Schumaker@Netapp.com To: linux-nfs@vger.kernel.org Cc: Anna.Schumaker@Netapp.com Subject: [RFC PATCH v2 7/7] sunrpc: Connect to a new IP address provided by the user Date: Mon, 11 Jan 2021 16:46:07 -0500 Message-Id: <20210111214607.553939-1-Anna.Schumaker@Netapp.com> X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org From: Anna Schumaker We preserve the same port number, rather than providing a way to change it. This keeps the implementation simpler for now. Signed-off-by: Anna Schumaker --- v2: Whoops, I forgot to commit the actual connection code to this patch! --- net/sunrpc/sysfs.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/net/sunrpc/sysfs.c b/net/sunrpc/sysfs.c index 537d83635670..5bf8d293ab7c 100644 --- a/net/sunrpc/sysfs.c +++ b/net/sunrpc/sysfs.c @@ -4,6 +4,7 @@ */ #include #include +#include #include #include "sysfs.h" @@ -70,6 +71,20 @@ static ssize_t rpc_netns_address_show(struct kobject *kobj, static ssize_t rpc_netns_address_store(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t count) { + struct rpc_netns_client *c = container_of(kobj, + struct rpc_netns_client, kobject); + struct rpc_clnt *clnt = c->clnt; + struct rpc_xprt *xprt = rcu_dereference(clnt->cl_xprt); + struct sockaddr *saddr = (struct sockaddr *)&xprt->addr; + int port = rpc_get_port(saddr); + + xprt->addrlen = rpc_pton(xprt->xprt_net, buf, count - 1, saddr, sizeof(*saddr)); + rpc_set_port(saddr, port); + + kfree(xprt->address_strings[RPC_DISPLAY_ADDR]); + xprt->address_strings[RPC_DISPLAY_ADDR] = kstrndup(buf, count - 1, GFP_KERNEL); + + xprt->ops->connect(xprt, NULL); return count; } -- 2.29.2