X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=utils%2Fmount%2Fnfsmount.c;h=930622d94b57f6e4dd12497fb99277dc76580ecf;hp=6a045184d55648f7ec156d8b994f1fa97470338b;hb=adee9b7bddedcddb8de4e0b7c2f778148b1f4d2b;hpb=5fb4042ce4eb4fd5e50e3fb0f78bbd20b4d46e78 diff --git a/utils/mount/nfsmount.c b/utils/mount/nfsmount.c index 6a04518..930622d 100644 --- a/utils/mount/nfsmount.c +++ b/utils/mount/nfsmount.c @@ -21,7 +21,7 @@ * Wed Oct 1 23:55:28 1997: Dick Streefland * Implemented the "bg", "fg" and "retry" mount options for NFS. * - * 1999-02-22 Arkadiusz Mi¶kiewicz + * 1999-02-22 Arkadiusz Miskiewicz * - added Native Language Support * * Modified by Olaf Kirch and Trond Myklebust for new NFS code, @@ -67,6 +67,14 @@ #include "nls.h" #include "error.h" #include "network.h" +#include "version.h" + +#ifdef HAVE_RPCSVC_NFS_PROT_H +#include +#else +#include +#define nfsstat nfs_stat +#endif #ifndef NFS_PORT #define NFS_PORT 2049 @@ -95,8 +103,6 @@ extern char *progname; extern int verbose; extern int sloppy; -extern int linux_version_code(void); - static inline enum clnt_stat nfs3_mount(CLIENT *clnt, mnt3arg_t *mnt3arg, mnt3res_t *mnt3res) { @@ -164,7 +170,7 @@ parse_options(char *old_opts, struct nfs_mount_data *data, struct pmap *mnt_pmap = &mnt_server->pmap; struct pmap *nfs_pmap = &nfs_server->pmap; int len; - char *opt, *opteq, *p, *opt_b; + char *opt, *opteq, *p, *opt_b, *tmp_opts; char *mounthost = NULL; char cbuf[128]; int open_quote = 0; @@ -173,7 +179,8 @@ parse_options(char *old_opts, struct nfs_mount_data *data, *bg = 0; len = strlen(new_opts); - for (p=old_opts, opt_b=NULL; p && *p; p++) { + tmp_opts = xstrdup(old_opts); + for (p=tmp_opts, opt_b=NULL; p && *p; p++) { if (!opt_b) opt_b = p; /* begin of the option item */ if (*p == '"') @@ -287,18 +294,6 @@ parse_options(char *old_opts, struct nfs_mount_data *data, data->pseudoflavor = AUTH_GSS_KRB5I; else if (!strcmp(secflavor, "krb5p")) data->pseudoflavor = AUTH_GSS_KRB5P; - else if (!strcmp(secflavor, "lipkey")) - data->pseudoflavor = AUTH_GSS_LKEY; - else if (!strcmp(secflavor, "lipkey-i")) - data->pseudoflavor = AUTH_GSS_LKEYI; - else if (!strcmp(secflavor, "lipkey-p")) - data->pseudoflavor = AUTH_GSS_LKEYP; - else if (!strcmp(secflavor, "spkm3")) - data->pseudoflavor = AUTH_GSS_SPKM; - else if (!strcmp(secflavor, "spkm3i")) - data->pseudoflavor = AUTH_GSS_SPKMI; - else if (!strcmp(secflavor, "spkm3p")) - data->pseudoflavor = AUTH_GSS_SPKMP; else if (sloppy) continue; else { @@ -451,10 +446,12 @@ parse_options(char *old_opts, struct nfs_mount_data *data, goto out_bad; *mnt_server->hostname = mounthost; } + free(tmp_opts); return 1; bad_parameter: nfs_error(_("%s: Bad nfs mount parameter: %s\n"), progname, opt); out_bad: + free(tmp_opts); return 0; } @@ -501,8 +498,12 @@ nfsmount(const char *spec, const char *node, int flags, int val; static int doonce = 0; - clnt_addr_t mnt_server = { &mounthost, }; - clnt_addr_t nfs_server = { &hostname, }; + clnt_addr_t mnt_server = { + .hostname = &mounthost + }; + clnt_addr_t nfs_server = { + .hostname = &hostname + }; struct sockaddr_in *nfs_saddr = &nfs_server.saddr; struct pmap *mnt_pmap = &mnt_server.pmap, *nfs_pmap = &nfs_server.pmap; @@ -808,7 +809,7 @@ noauth_flavors: * to avoid problems with multihomed hosts. * --Swen */ - if (linux_version_code() <= 0x01030a && fsock != -1 + if (linux_version_code() <= MAKE_VERSION(1, 3, 10) && fsock != -1 && connect(fsock, (struct sockaddr *) nfs_saddr, sizeof (*nfs_saddr)) < 0) { perror(_("nfs connect"));