]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - utils/mount/stropts.c
Clean up: remove unused IPv4-only functions used by the text-based mount
[nfs-utils.git] / utils / mount / stropts.c
index e2e72a7c552cdce84eb6d68e99b617fb1df6bac2..a51cf0b720fbfee20d085c959911c5bf91d30826 100644 (file)
@@ -49,6 +49,7 @@
 #include "network.h"
 #include "parse_opt.h"
 #include "version.h"
+#include "parse_dev.h"
 
 #ifdef HAVE_RPCSVC_NFS_PROT_H
 #include <rpcsvc/nfs_prot.h>
@@ -98,78 +99,6 @@ struct nfsmount_info {
        sa_family_t             family;         /* supported address family */
 };
 
-static int nfs_parse_devname(struct nfsmount_info *mi)
-{
-       int ret = 0;
-       char *dev, *pathname, *s;
-
-       dev = xstrdup(mi->spec);
-
-       if (!(pathname = strchr(dev, ':'))) {
-               nfs_error(_("%s: remote share not in 'host:dir' format"),
-                               progname);
-               goto out;
-       }
-       *pathname = '\0';
-       pathname++;
-
-       /*
-        * We don't need a copy of the pathname, but let's
-        * sanity check it anyway.
-        */
-       if (strlen(pathname) > NFS_MAXPATHNAME) {
-               nfs_error(_("%s: export pathname is too long"),
-                               progname);
-               goto out;
-       }
-
-       /*
-        * Ignore all but first hostname in replicated mounts
-        * until they can be fully supported. (mack@sgi.com)
-        */
-       if ((s = strchr(dev, ','))) {
-               *s = '\0';
-               nfs_error(_("%s: warning: multiple hostnames not supported"),
-                               progname);
-               nfs_error(_("%s: ignoring hostnames that follow the first one"),
-                               progname);
-       }
-       mi->hostname = xstrdup(dev);
-       if (strlen(mi->hostname) > NFS_MAXHOSTNAME) {
-               nfs_error(_("%s: server hostname is too long"),
-                               progname);
-               free(mi->hostname);
-               mi->hostname = NULL;
-               goto out;
-       }
-
-       ret = 1;
-
-out:
-       free(dev);
-       return ret;
-}
-
-static int fill_ipv4_sockaddr(const char *hostname, struct sockaddr_in *addr)
-{
-       struct hostent *hp;
-       addr->sin_family = AF_INET;
-
-       if (inet_aton(hostname, &addr->sin_addr))
-               return 1;
-       if ((hp = gethostbyname(hostname)) == NULL) {
-               nfs_error(_("%s: can't get address for %s\n"),
-                               progname, hostname);
-               return 0;
-       }
-       if (hp->h_length > sizeof(struct in_addr)) {
-               nfs_error(_("%s: got bad hp->h_length"), progname);
-               hp->h_length = sizeof(struct in_addr);
-       }
-       memcpy(&addr->sin_addr, hp->h_addr, hp->h_length);
-       return 1;
-}
-
 /*
  * Obtain a retry timeout value based on the value of the "retry=" option.
  *
@@ -334,14 +263,18 @@ static int nfs_append_sloppy_option(struct mount_options *options)
  */
 static int nfs_validate_options(struct nfsmount_info *mi)
 {
-       struct sockaddr_in saddr;
+       struct sockaddr_storage dummy;
+       struct sockaddr *sap = (struct sockaddr *)&dummy;
+       socklen_t salen = sizeof(dummy);
+
+       if (!nfs_parse_devname(mi->spec, &mi->hostname, NULL))
+               return 0;
 
-       if (!fill_ipv4_sockaddr(mi->hostname, &saddr))
+       if (!nfs_name_to_address(mi->hostname, mi->family, sap, &salen))
                return 0;
 
        if (strncmp(mi->type, "nfs4", 4) == 0) {
-               if (!nfs_append_clientaddr_option((struct sockaddr *)&saddr,
-                                                 sizeof(saddr), mi->options))
+               if (!nfs_append_clientaddr_option(sap, salen, mi->options))
                        return 0;
        } else {
                if (!nfs_fix_mounthost_option(mi->family, mi->options))
@@ -353,8 +286,7 @@ static int nfs_validate_options(struct nfsmount_info *mi)
        if (!nfs_append_sloppy_option(mi->options))
                return 0;
 
-       return nfs_append_addr_option((struct sockaddr *)&saddr,
-                                       sizeof(saddr), mi->options);
+       return nfs_append_addr_option(sap, salen, mi->options);
 }
 
 /*
@@ -812,9 +744,6 @@ int nfsmount_string(const char *spec, const char *node, const char *type,
        };
        int retval = EX_FAIL;
 
-       if (!nfs_parse_devname(&mi))
-               return retval;
-
        mi.options = po_split(*extra_opts);
        if (mi.options) {
                retval = nfsmount_start(&mi);