diff mbox

[linux-cifs-client] mount.cifs: add support for sending IPv6 scope ID to kernel

Message ID 1244738932-2325-1-git-send-email-jlayton@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Jeff Layton June 11, 2009, 4:48 p.m. UTC
When getaddrinfo returns an IPv6 address with a non-zero scope_id, send
that to the kernel appended to the address with a '%' delimiter. This
allows people to mount servers via their link-local IPv6 addresses
(given a kernel that understands this address format, of course).

Signed-off-by: Jeff Layton <jlayton@redhat.com>
---
 client/mount.cifs.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

Comments

Jeff Layton June 25, 2009, 11:51 a.m. UTC | #1
On Thu, 11 Jun 2009 12:48:52 -0400
Jeff Layton <jlayton@redhat.com> wrote:

> When getaddrinfo returns an IPv6 address with a non-zero scope_id, send
> that to the kernel appended to the address with a '%' delimiter. This
> allows people to mount servers via their link-local IPv6 addresses
> (given a kernel that understands this address format, of course).
> 
> Signed-off-by: Jeff Layton <jlayton@redhat.com>


Committed to samba master branch.
diff mbox

Patch

diff --git a/client/mount.cifs.c b/client/mount.cifs.c
index 97144a0..db05665 100644
--- a/client/mount.cifs.c
+++ b/client/mount.cifs.c
@@ -1562,6 +1562,14 @@  mount_retry:
 		}
 	}
 
+	if (addr->ai_addr->sa_family == AF_INET6 && addr6->sin6_scope_id) {
+		strlcat(options, "%", options_size);
+		current_len = strnlen(options, options_size);
+		optionstail = options + current_len;
+		snprintf(optionstail, options_size - current_len, "%u",
+			 addr6->sin6_scope_id);
+	}
+
 	if (!fakemnt && mount(dev_name, mountpoint, "cifs", flags, options)) {
 		switch (errno) {
 		case ECONNREFUSED: