[PATCH 07/14] text-based mount command: "clientaddr=" option support for IPv6 addresses

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Change the append_clientaddr_option() function to support sending either
IPv4 or IPv6 addresses to the kernel via the "clientaddr=" option.

Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx>
---

 utils/mount/stropts.c |   26 ++++++++++++--------------
 1 files changed, 12 insertions(+), 14 deletions(-)

diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c
index f856998..ff51652 100644
--- a/utils/mount/stropts.c
+++ b/utils/mount/stropts.c
@@ -252,24 +252,21 @@ static int nfs_append_addr_option(const struct sockaddr *sap,
  * Returns 1 if 'clientaddr=' option created successfully or if
  * 'clientaddr=' option is already present; otherwise zero.
  */
-static int append_clientaddr_option(struct sockaddr_in *saddr,
-				    struct mount_options *options)
+static int nfs_append_clientaddr_option(const struct sockaddr *sap,
+					socklen_t salen,
+					struct mount_options *options)
 {
-	struct sockaddr_in my_addr;
-	char new_option[32];
+	struct sockaddr_storage dummy;
+	struct sockaddr *my_addr = (struct sockaddr *)&dummy;
+	socklen_t my_len = sizeof(dummy);
 
-	if (po_contains(options, "clientaddr") == PO_SUCCEEDED)
+	if (po_contains(options, "clientaddr") == PO_FOUND)
 		return 1;
 
-	if (!get_client_address(saddr, &my_addr))
-		return 0;
-
-	snprintf(new_option, sizeof(new_option) - 1,
-			"clientaddr=%s", inet_ntoa(my_addr.sin_addr));
+	nfs_callback_address(sap, salen, my_addr, &my_len);
 
-	if (po_append(options, new_option) == PO_SUCCEEDED)
-		return 1;
-	return 0;
+	return nfs_append_generic_address_option(my_addr, my_len,
+							"clientaddr", options);
 }
 
 /*
@@ -339,7 +336,8 @@ static int nfs_validate_options(struct nfsmount_info *mi)
 		return 0;
 
 	if (strncmp(mi->type, "nfs4", 4) == 0) {
-		if (!append_clientaddr_option(&saddr, mi->options))
+		if (!nfs_append_clientaddr_option((struct sockaddr *)&saddr,
+						  sizeof(saddr), mi->options))
 			return 0;
 	} else {
 		if (!fix_mounthost_option(mi->options))

--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux