mntopts.h revision 153007
1215976Sjmallett/*- 2232812Sjmallett * Copyright (c) 1994 3215976Sjmallett * The Regents of the University of California. All rights reserved. 4215976Sjmallett * 5215976Sjmallett * Redistribution and use in source and binary forms, with or without 6215976Sjmallett * modification, are permitted provided that the following conditions 7215976Sjmallett * are met: 8215976Sjmallett * 1. Redistributions of source code must retain the above copyright 9215976Sjmallett * notice, this list of conditions and the following disclaimer. 10215976Sjmallett * 2. Redistributions in binary form must reproduce the above copyright 11215976Sjmallett * notice, this list of conditions and the following disclaimer in the 12215976Sjmallett * documentation and/or other materials provided with the distribution. 13215976Sjmallett * 4. Neither the name of the University nor the names of its contributors 14215976Sjmallett * may be used to endorse or promote products derived from this software 15215976Sjmallett * without specific prior written permission. 16215976Sjmallett * 17215976Sjmallett * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 18232812Sjmallett * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19215976Sjmallett * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20215976Sjmallett * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 21215976Sjmallett * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22215976Sjmallett * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23215976Sjmallett * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24215976Sjmallett * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25215976Sjmallett * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26215976Sjmallett * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27215976Sjmallett * SUCH DAMAGE. 28215976Sjmallett * 29232812Sjmallett * @(#)mntopts.h 8.7 (Berkeley) 3/29/95 30215976Sjmallett * $FreeBSD: head/sbin/mount/mntopts.h 153007 2005-12-02 03:55:02Z rodrigc $ 31215976Sjmallett */ 32215976Sjmallett 33215976Sjmallettstruct mntopt { 34215976Sjmallett const char *m_option; /* option name */ 35215976Sjmallett int m_inverse; /* if a negative option, e.g. "atime" */ 36215976Sjmallett int m_flag; /* bit to set, e.g. MNT_RDONLY */ 37215976Sjmallett int m_altloc; /* 1 => set bit in altflags */ 38215976Sjmallett}; 39215976Sjmallett 40215976Sjmallett/* User-visible MNT_ flags. */ 41215976Sjmallett#define MOPT_ASYNC { "async", 0, MNT_ASYNC, 0 } 42215976Sjmallett#define MOPT_NOATIME { "atime", 1, MNT_NOATIME, 0 } 43215976Sjmallett#define MOPT_NOEXEC { "exec", 1, MNT_NOEXEC, 0 } 44215976Sjmallett#define MOPT_NOSUID { "suid", 1, MNT_NOSUID, 0 } 45215976Sjmallett#define MOPT_NOSYMFOLLOW { "symfollow", 1, MNT_NOSYMFOLLOW, 0 } 46215976Sjmallett#define MOPT_RDONLY { "rdonly", 0, MNT_RDONLY, 0 } 47215976Sjmallett#define MOPT_SYNC { "sync", 0, MNT_SYNCHRONOUS, 0 } 48215976Sjmallett#define MOPT_UNION { "union", 0, MNT_UNION, 0 } 49215976Sjmallett#define MOPT_USERQUOTA { "userquota", 0, 0, 0 } 50215976Sjmallett#define MOPT_GROUPQUOTA { "groupquota", 0, 0, 0 } 51215976Sjmallett#define MOPT_NOCLUSTERR { "clusterr", 1, MNT_NOCLUSTERR, 0 } 52215976Sjmallett#define MOPT_NOCLUSTERW { "clusterw", 1, MNT_NOCLUSTERW, 0 } 53215976Sjmallett#define MOPT_SUIDDIR { "suiddir", 0, MNT_SUIDDIR, 0 } 54215976Sjmallett#define MOPT_SNAPSHOT { "snapshot", 0, MNT_SNAPSHOT, 0 } 55215976Sjmallett#define MOPT_MULTILABEL { "multilabel", 0, MNT_MULTILABEL, 0 } 56215976Sjmallett#define MOPT_ACLS { "acls", 0, MNT_ACLS, 0 } 57215976Sjmallett 58215976Sjmallett/* Control flags. */ 59215976Sjmallett#define MOPT_FORCE { "force", 0, MNT_FORCE, 0 } 60215976Sjmallett#define MOPT_UPDATE { "update", 0, MNT_UPDATE, 0 } 61215976Sjmallett#define MOPT_RO { "ro", 0, MNT_RDONLY, 0 } 62215976Sjmallett#define MOPT_RW { "rw", 1, MNT_RDONLY, 0 } 63215976Sjmallett 64215976Sjmallett/* This is parsed by mount(8), but is ignored by specific mount_*(8)s. */ 65215976Sjmallett#define MOPT_AUTO { "auto", 0, 0, 0 } 66215976Sjmallett 67215976Sjmallett/* A handy macro as terminator of MNT_ array. */ 68215976Sjmallett#define MOPT_END { NULL, 0, 0, 0 } 69215976Sjmallett 70215976Sjmallett#define MOPT_FSTAB_COMPAT \ 71215976Sjmallett MOPT_RO, \ 72215976Sjmallett MOPT_RW, \ 73215976Sjmallett MOPT_AUTO 74215976Sjmallett 75215976Sjmallett/* Standard options which all mounts can understand. */ 76215976Sjmallett#define MOPT_STDOPTS \ 77215976Sjmallett MOPT_USERQUOTA, \ 78215976Sjmallett MOPT_GROUPQUOTA, \ 79215976Sjmallett MOPT_FSTAB_COMPAT, \ 80215976Sjmallett MOPT_NOATIME, \ 81215976Sjmallett MOPT_NOEXEC, \ 82215976Sjmallett MOPT_SUIDDIR, /* must be before MOPT_NOSUID */ \ 83215976Sjmallett MOPT_NOSUID, \ 84215976Sjmallett MOPT_NOSYMFOLLOW, \ 85215976Sjmallett MOPT_RDONLY, \ 86215976Sjmallett MOPT_UNION, \ 87215976Sjmallett MOPT_NOCLUSTERR, \ 88215976Sjmallett MOPT_NOCLUSTERW, \ 89215976Sjmallett MOPT_MULTILABEL, \ 90215976Sjmallett MOPT_ACLS 91215976Sjmallett 92215976Sjmallettvoid getmntopts(const char *, const struct mntopt *, int *, int *); 93215976Sjmallettvoid rmslashes(char *, char *); 94215976Sjmallettvoid checkpath(const char *, char resolved_path[]); 95215976Sjmallettextern int getmnt_silent; 96215976Sjmallettvoid build_iovec(struct iovec **iov, int *iovlen, const char *name, void *val, size_t len); 97215976Sjmallettvoid build_iovec_argf(struct iovec **iov, int *iovlen, const char *name, const char *fmt, ...); 98215976Sjmallett