summaryrefslogtreecommitdiffstats
path: root/sys/nfsclient/bootp_subr.c
diff options
context:
space:
mode:
authorsam <sam@FreeBSD.org>2006-12-06 02:15:25 +0000
committersam <sam@FreeBSD.org>2006-12-06 02:15:25 +0000
commit17d1a5f84e80a69f2a8b2156001c5862f7c00afa (patch)
tree10aef5be481908cc63670873bf28cc9564a245d3 /sys/nfsclient/bootp_subr.c
parenta1536822a00c107949772c22d9e2d2d60257f121 (diff)
downloadFreeBSD-src-17d1a5f84e80a69f2a8b2156001c5862f7c00afa.zip
FreeBSD-src-17d1a5f84e80a69f2a8b2156001c5862f7c00afa.tar.gz
consolidate parsing of nfs root mount options in one place
and handle all options (some may require fixes elsewhere) Reviewed by: jhb, mohans MFC after: 1 month
Diffstat (limited to 'sys/nfsclient/bootp_subr.c')
-rw-r--r--sys/nfsclient/bootp_subr.c43
1 files changed, 3 insertions, 40 deletions
diff --git a/sys/nfsclient/bootp_subr.c b/sys/nfsclient/bootp_subr.c
index 67a4b25..3a31353 100644
--- a/sys/nfsclient/bootp_subr.c
+++ b/sys/nfsclient/bootp_subr.c
@@ -220,7 +220,6 @@ static int setfs(struct sockaddr_in *addr, char *path, char *p,
const struct in_addr *siaddr);
static int getdec(char **ptr);
static int getip(char **ptr, struct in_addr *ip);
-static char *substr(char *a, char *b);
static void mountopts(struct nfs_args *args, char *p);
static int xdr_opaque_decode(struct mbuf **ptr, u_char *buf, int len);
static int xdr_int_decode(struct mbuf **ptr, int *iptr);
@@ -1234,53 +1233,16 @@ getdec(char **ptr)
return ret;
}
-static char *
-substr(char *a, char *b)
-{
- char *loc1;
- char *loc2;
-
- while (*a != '\0') {
- loc1 = a;
- loc2 = b;
- while (*loc1 == *loc2++) {
- if (*loc1 == '\0')
- return 0;
- loc1++;
- if (*loc2 == '\0')
- return loc1;
- }
- a++;
- }
- return 0;
-}
-
static void
mountopts(struct nfs_args *args, char *p)
{
- char *tmp;
-
args->version = NFS_ARGSVERSION;
args->rsize = 8192;
args->wsize = 8192;
args->flags = NFSMNT_RSIZE | NFSMNT_WSIZE | NFSMNT_RESVPORT;
args->sotype = SOCK_DGRAM;
- if (p == NULL)
- return;
- if ((tmp = (char *)substr(p, "rsize=")))
- args->rsize = getdec(&tmp);
- if ((tmp = (char *)substr(p, "wsize=")))
- args->wsize = getdec(&tmp);
- if ((tmp = (char *)substr(p, "intr")))
- args->flags |= NFSMNT_INT;
- if ((tmp = (char *)substr(p, "soft")))
- args->flags |= NFSMNT_SOFT;
- if ((tmp = (char *)substr(p, "noconn")))
- args->flags |= NFSMNT_NOCONN;
- if ((tmp = (char *)substr(p, "nolockd")))
- args->flags |= NFSMNT_NOLOCKD;
- if ((tmp = (char *)substr(p, "tcp")))
- args->sotype = SOCK_STREAM;
+ if (p != NULL)
+ nfs_parse_options(p, args);
}
static int
@@ -1816,6 +1778,7 @@ md_mount(struct sockaddr_in *mdsin, char *path, u_char *fhp, int *fhsizep,
int authcount;
int authver;
+ /* XXX honor v2/v3 flags in args->flags? */
#ifdef BOOTP_NFSV3
/* First try NFS v3 */
/* Get port number for MOUNTD. */
OpenPOWER on IntegriCloud