X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=utils%2Fmount%2Fstropts.c;h=f73521f2c7812e199b6c6ab37b26d1aa1b9bad47;hp=b089d1bc88dfde96e6baaf0a694be69761cd399f;hb=46572b00147b2ed5722ba4167073e7c2eb42ad74;hpb=2fbd32a6ea38936032da65139fd4ea4e05e2ddde diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c index b089d1b..f73521f 100644 --- a/utils/mount/stropts.c +++ b/utils/mount/stropts.c @@ -140,31 +140,6 @@ static int fill_ipv4_sockaddr(const char *hostname, struct sockaddr_in *addr) return 1; } -/* - * XXX: This should really use the technique neil recently added - * to get the address off the local end of a socket connected to - * the server -- to get the right address to use on multi-homed - * clients - */ -static int get_my_ipv4addr(char *ip_addr, int len) -{ - char myname[1024]; - struct sockaddr_in myaddr; - - if (gethostname(myname, sizeof(myname))) { - nfs_error(_("%s: can't determine client address\n"), - progname); - return 0; - } - if (!fill_ipv4_sockaddr(myname, &myaddr)) - return 0; - - snprintf(ip_addr, len, "%s", inet_ntoa(myaddr.sin_addr)); - ip_addr[len - 1] = '\0'; - - return 1; -} - /* * Walk through our mount options string, and indicate the presence * of 'bg', 'retry=', 'addr=', and 'clientaddr='. @@ -226,7 +201,9 @@ static int append_addr_opt(struct sockaddr_in *saddr, char **extra_opts) } /* - * Append the 'clientaddr=' option to the options string. + * Called if no 'clientaddr=' option was specified in the options string + * to discover our address and append an appropriate 'clientaddr=' option + * to the options string. * * Returns 1 if 'clientaddr=' option created successfully; * otherwise zero. @@ -266,12 +243,12 @@ static int append_clientaddr_opt(struct sockaddr_in *saddr, char **extra_opts) * @extra_opts: pointer to C string containing fs-specific mount options * (possibly also a return argument) * @fake: flag indicating whether to carry out the whole operation - * @bg: one if this is a backgrounded mount attempt + * @child: one if this is a backgrounded mount * * XXX: need to handle bg, fg, and retry options. */ int nfsmount_s(const char *spec, const char *node, int flags, - char **extra_opts, int fake, int bg) + char **extra_opts, int fake, int child) { struct sockaddr_in saddr; char *hostname; @@ -286,7 +263,7 @@ int nfsmount_s(const char *spec, const char *node, int flags, extract_interesting_options(*extra_opts); - if (!bg && addr_opt) { + if (!child && addr_opt) { nfs_error(_("%s: Illegal option: 'addr='"), progname); return EX_FAIL; } @@ -306,7 +283,7 @@ int nfsmount_s(const char *spec, const char *node, int flags, } } - return 0; + return EX_SUCCESS; } /* @@ -344,15 +321,10 @@ int nfs4mount_s(const char *spec, const char *node, int flags, return EX_FAIL; } - if (ca_opt) { - nfs_error(_("%s: Illegal option: 'clientaddr='"), progname); - return EX_FAIL; - } - if (!append_addr_opt(&saddr, extra_opts)) return EX_FAIL; - if (!append_clientaddr_opt(&saddr, extra_opts)) + if (!ca_opt && !append_clientaddr_opt(&saddr, extra_opts)) return EX_FAIL; if (verbose) @@ -367,5 +339,5 @@ int nfs4mount_s(const char *spec, const char *node, int flags, } } - return 0; + return EX_SUCCESS; }