]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - utils/mount/nfs4mount.c
Remove the running_bg parameter
[nfs-utils.git] / utils / mount / nfs4mount.c
index 0376f32da6df684a1a3ef64fb8fa26dcbcba4f44..f98e275252534e95fc5e0432b93a116592ac2774 100644 (file)
@@ -25,6 +25,7 @@
 #include <netdb.h>
 #include <time.h>
 #include <sys/stat.h>
 #include <netdb.h>
 #include <time.h>
 #include <sys/stat.h>
+#include <sys/mount.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
 #include <rpc/auth.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
 #include <rpc/auth.h>
 #define nfsstat nfs_stat
 #endif
 
 #define nfsstat nfs_stat
 #endif
 
+#include "pseudoflavors.h"
 #include "nls.h"
 #include "conn.h"
 #include "xcommon.h"
 
 #include "nls.h"
 #include "conn.h"
 #include "xcommon.h"
 
+#include "mount_constants.h"
 #include "nfs4_mount.h"
 #include "nfs_mount.h"
 #include "nfs4_mount.h"
 #include "nfs_mount.h"
+#include "error.h"
 
 #if defined(VAR_LOCK_DIR)
 #define DEFAULT_DIR VAR_LOCK_DIR
 
 #if defined(VAR_LOCK_DIR)
 #define DEFAULT_DIR VAR_LOCK_DIR
@@ -71,26 +75,6 @@ char *GSSDLCK = DEFAULT_DIR "/rpcgssd";
 #define NFS_PORT 2049
 #endif
 
 #define NFS_PORT 2049
 #endif
 
-struct {
-       char    *flavour;
-       int     fnum;
-} flav_map[] = {
-       { "krb5",       RPC_AUTH_GSS_KRB5       },
-       { "krb5i",      RPC_AUTH_GSS_KRB5I      },
-       { "krb5p",      RPC_AUTH_GSS_KRB5P      },
-       { "lipkey",     RPC_AUTH_GSS_LKEY       },
-       { "lipkey-i",   RPC_AUTH_GSS_LKEYI      },
-       { "lipkey-p",   RPC_AUTH_GSS_LKEYP      },
-       { "spkm3",      RPC_AUTH_GSS_SPKM       },
-       { "spkm3i",     RPC_AUTH_GSS_SPKMI      },
-       { "spkm3p",     RPC_AUTH_GSS_SPKMP      },
-       { "unix",       AUTH_UNIX               },
-       { "sys",        AUTH_SYS                },
-       { "null",       AUTH_NULL               },
-       { "none",       AUTH_NONE               },
-};
-
-#define FMAPSIZE               (sizeof(flav_map)/sizeof(flav_map[0]))
 #define MAX_USER_FLAVOUR       16
 
 static int parse_sec(char *sec, int *pseudoflavour)
 #define MAX_USER_FLAVOUR       16
 
 static int parse_sec(char *sec, int *pseudoflavour)
@@ -104,13 +88,13 @@ static int parse_sec(char *sec, int *pseudoflavour)
                                  "exceeded\n"));
                        return 0;
                }
                                  "exceeded\n"));
                        return 0;
                }
-               for (i = 0; i < FMAPSIZE; i++) {
+               for (i = 0; i < flav_map_size; i++) {
                        if (strcmp(sec, flav_map[i].flavour) == 0) {
                                pseudoflavour[num_flavour++] = flav_map[i].fnum;
                                break;
                        }
                }
                        if (strcmp(sec, flav_map[i].flavour) == 0) {
                                pseudoflavour[num_flavour++] = flav_map[i].fnum;
                                break;
                        }
                }
-               if (i == FMAPSIZE) {
+               if (i == flav_map_size) {
                        fprintf(stderr,
                                _("mount: unknown security type %s\n"), sec);
                        return 0;
                        fprintf(stderr,
                                _("mount: unknown security type %s\n"), sec);
                        return 0;
@@ -183,9 +167,8 @@ static int get_my_ipv4addr(char *ip_addr, int len)
        return 0;
 }
 
        return 0;
 }
 
-int nfs4mount(const char *spec, const char *node, int *flags,
-             char **extra_opts, char **mount_opts,
-             int running_bg)
+int nfs4mount(const char *spec, const char *node, int flags,
+             char **extra_opts, int fake)
 {
        static struct nfs4_mount_data data;
        static char hostdir[1024];
 {
        static struct nfs4_mount_data data;
        static char hostdir[1024];
@@ -405,7 +388,7 @@ int nfs4mount(const char *spec, const char *node, int *flags,
 
                printf("sec = ");
                for (pf_cnt = 0; pf_cnt < num_flavour; pf_cnt++) {
 
                printf("sec = ");
                for (pf_cnt = 0; pf_cnt < num_flavour; pf_cnt++) {
-                       for (i = 0; i < FMAPSIZE; i++) {
+                       for (i = 0; i < flav_map_size; i++) {
                                if (flav_map[i].fnum == pseudoflavour[pf_cnt]) {
                                        printf("%s", flav_map[i].flavour);
                                        break;
                                if (flav_map[i].fnum == pseudoflavour[pf_cnt]) {
                                        printf("%s", flav_map[i].flavour);
                                        break;
@@ -459,8 +442,14 @@ int nfs4mount(const char *spec, const char *node, int *flags,
                continue;
        }
 
                continue;
        }
 
-       *mount_opts = (char *) &data;
-       /* clean up */
+       if (!fake) {
+               if (mount(spec, node, "nfs4",
+                               flags & ~(MS_USER|MS_USERS), &data)) {
+                       mount_error(spec, node, errno);
+                       goto fail;
+               }
+       }
+
        return 0;
 
 fail:
        return 0;
 
 fail: