On Fri,  8 Oct 2010 15:15:05 -0400
Jeff Layton <[email protected]> wrote:

> The manpage says:
> 
>        ip=arg
>            sets the destination IP address. This option is set automatically
>            if the server name portion of the requested UNC name can be
>            resolved so rarely needs to be specified by the user.
> 
> ...but recent changes have made it not work anymore as an override if
> someone specifies an ip= option as part of the mount options. Reinstate
> that behavior by copying the ip= option verbatim into the addrlist of
> the parsed options struct and then skipping the name resolution. That
> should allow the ip= option to pass unadulterated to the kernel.
> 
> Signed-off-by: Jeff Layton <[email protected]>
> ---
>  mount.cifs.c |    6 +++++-
>  1 files changed, 5 insertions(+), 1 deletions(-)
> 
> diff --git a/mount.cifs.c b/mount.cifs.c
> index ed27bba..df92d79 100644
> --- a/mount.cifs.c
> +++ b/mount.cifs.c
> @@ -958,10 +958,12 @@ parse_options(const char *data, struct 
> parsed_mount_info *parsed_info)
>                                       "target ip address argument missing\n");
>                       } else if (strnlen(value, MAX_ADDRESS_LEN) <=
>                               MAX_ADDRESS_LEN) {
> +                             strcpy(parsed_info->addrlist, value);
>                               if (parsed_info->verboseflag)
>                                       fprintf(stderr,
>                                               "ip address %s override 
> specified\n",
>                                               value);
> +                             goto nocopy;
>                       } else {
>                               fprintf(stderr, "ip address too long\n");
>                               return EX_USAGE;
> @@ -1556,7 +1558,9 @@ assemble_mountinfo(struct parsed_mount_info 
> *parsed_info,
>       if (rc)
>               goto assemble_exit;
>  
> -     rc = resolve_host(parsed_info->host, parsed_info->addrlist);
> +     if (parsed_info->addrlist[0] == '\0')
> +             rc = resolve_host(parsed_info->host, parsed_info->addrlist);
> +
>       switch (rc) {
>       case EX_USAGE:
>               fprintf(stderr, "mount error: could not resolve address for "

Committed...

I'll probably wait a few days to see if any more patches turn up and
then do a new release later this week or next. Post 'em if you've got
'em.

-- 
Jeff Layton <[email protected]>
--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to