From: Chuck Lever <chuck.lever@oracle.com>
To: steved@redhat.com
Cc: linux-nfs@vger.kernel.org
Subject: [PATCH 07/14] text-based mount command: "clientaddr=" option support for IPv6 addresses
Date: Fri, 11 Jul 2008 16:34:50 -0400 [thread overview]
Message-ID: <20080711203450.478.15443.stgit@tarkus.1015granger.net> (raw)
In-Reply-To: <20080711203322.478.52095.stgit-lQeC5l55kZ7wdl/1UfZZQIVfYA8g3rJ/@public.gmane.org>
Change the append_clientaddr_option() function to support sending either
IPv4 or IPv6 addresses to the kernel via the "clientaddr=" option.
If the mount.nfs4 command can't determine an appropriate callback address,
it used to fail the mount request. This new function simply sends an ANY
address instead, so the mount request succeeds, but delegation is disabled.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---
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))
next prev parent reply other threads:[~2008-07-11 20:35 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-11 20:34 [PATCH 00/14] Support for mounting NFSv4 servers over IPv6 Chuck Lever
[not found] ` <20080711203322.478.52095.stgit-lQeC5l55kZ7wdl/1UfZZQIVfYA8g3rJ/@public.gmane.org>
2008-07-11 20:34 ` [PATCH 01/14] nfs-utils: Introduce new ./configure option: "--enable-ipv6" Chuck Lever
2008-07-11 20:34 ` [PATCH 02/14] text-based mount command: Add headers needed for IPv6 support Chuck Lever
2008-07-11 20:34 ` [PATCH 03/14] mount command: Add functions to manage addresses in string form Chuck Lever
2008-07-11 20:34 ` [PATCH 04/14] text-based mount command: get_client_address support for IPv6 Chuck Lever
2008-07-11 20:34 ` [PATCH 05/14] text-based mount command: Add helper to construct network addresses Chuck Lever
2008-07-11 20:34 ` [PATCH 06/14] text-based mount command: "addr=" option support for IPv6 addresses Chuck Lever
2008-07-11 20:34 ` Chuck Lever [this message]
2008-07-11 20:34 ` [PATCH 08/14] text-based mount command: "mounthost=" " Chuck Lever
2008-07-11 20:35 ` [PATCH 09/14] text-based mount command: Add IPv6 support to set_mandatory_options Chuck Lever
2008-07-11 20:35 ` [PATCH 10/14] text-based mount command: Support raw IPv6 address hostnames Chuck Lever
2008-07-11 20:35 ` [PATCH 11/14] text-based mount command: Remove unused IPv4-only functions Chuck Lever
2008-07-11 20:35 ` [PATCH 12/14] text-based mount options: rename functions in stropts.c Chuck Lever
2008-07-11 20:35 ` [PATCH 13/14] text-based mount command: remove unnecessary headers from stropts.c Chuck Lever
2008-07-11 20:35 ` [PATCH 14/14] mount command: Remove RPC headers from network.h Chuck Lever
2008-07-15 19:31 ` [PATCH 00/14] Support for mounting NFSv4 servers over IPv6 Steve Dickson
-- strict thread matches above, loose matches on Subject: below --
2008-07-10 0:37 Chuck Lever
[not found] ` <20080710001725.6137.83845.stgit-lQeC5l55kZ7wdl/1UfZZQIVfYA8g3rJ/@public.gmane.org>
2008-07-10 0:37 ` [PATCH 07/14] text-based mount command: "clientaddr=" option support for IPv6 addresses Chuck Lever
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080711203450.478.15443.stgit@tarkus.1015granger.net \
--to=chuck.lever@oracle.com \
--cc=linux-nfs@vger.kernel.org \
--cc=steved@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox