1 1.14 dholland /* $NetBSD: quotapvt.h,v 1.14 2012/02/01 05:46:46 dholland Exp $ */ 2 1.1 dholland /*- 3 1.1 dholland * Copyright (c) 2011 The NetBSD Foundation, Inc. 4 1.1 dholland * All rights reserved. 5 1.1 dholland * 6 1.1 dholland * This code is derived from software contributed to The NetBSD Foundation 7 1.1 dholland * by David A. Holland. 8 1.1 dholland * 9 1.1 dholland * Redistribution and use in source and binary forms, with or without 10 1.1 dholland * modification, are permitted provided that the following conditions 11 1.1 dholland * are met: 12 1.1 dholland * 1. Redistributions of source code must retain the above copyright 13 1.1 dholland * notice, this list of conditions and the following disclaimer. 14 1.1 dholland * 2. Redistributions in binary form must reproduce the above copyright 15 1.1 dholland * notice, this list of conditions and the following disclaimer in the 16 1.1 dholland * documentation and/or other materials provided with the distribution. 17 1.1 dholland * 18 1.1 dholland * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 19 1.1 dholland * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 20 1.1 dholland * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 21 1.1 dholland * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 22 1.1 dholland * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23 1.1 dholland * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24 1.1 dholland * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 1.1 dholland * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26 1.1 dholland * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27 1.1 dholland * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28 1.1 dholland * POSSIBILITY OF SUCH DAMAGE. 29 1.1 dholland */ 30 1.1 dholland 31 1.10 dholland #define QUOTA_MODE_NFS 1 32 1.13 dholland #define QUOTA_MODE_OLDFILES 2 33 1.13 dholland #define QUOTA_MODE_KERNEL 3 34 1.10 dholland 35 1.1 dholland struct quotahandle { 36 1.1 dholland char *qh_mountpoint; 37 1.2 dholland char *qh_mountdevice; 38 1.10 dholland int qh_mode; 39 1.6 dholland 40 1.6 dholland /* these are used only by quota_oldfiles */ 41 1.10 dholland int qh_oldfilesopen; 42 1.6 dholland int qh_userfile; 43 1.6 dholland int qh_groupfile; 44 1.1 dholland }; 45 1.1 dholland 46 1.5 dholland struct quotacursor { 47 1.5 dholland struct quotahandle *qc_qh; 48 1.13 dholland enum { QC_OLDFILES, QC_KERNEL } qc_type; 49 1.5 dholland union { 50 1.6 dholland struct oldfiles_quotacursor *qc_oldfiles; 51 1.13 dholland struct kernel_quotacursor *qc_kernel; 52 1.5 dholland } u; 53 1.5 dholland }; 54 1.5 dholland 55 1.5 dholland 56 1.13 dholland /* new non-proplib kernel interface */ 57 1.13 dholland const char *__quota_kernel_getimplname(struct quotahandle *); 58 1.13 dholland unsigned __quota_kernel_getrestrictions(struct quotahandle *); 59 1.14 dholland int __quota_kernel_getnumidtypes(struct quotahandle *); 60 1.13 dholland const char *__quota_kernel_idtype_getname(struct quotahandle *, int idtype); 61 1.14 dholland int __quota_kernel_getnumobjtypes(struct quotahandle *); 62 1.13 dholland const char *__quota_kernel_objtype_getname(struct quotahandle *, int objtype); 63 1.13 dholland int __quota_kernel_objtype_isbytes(struct quotahandle *, int objtype); 64 1.13 dholland int __quota_kernel_quotaon(struct quotahandle *, int idtype); 65 1.13 dholland int __quota_kernel_quotaoff(struct quotahandle *, int idtype); 66 1.13 dholland int __quota_kernel_get(struct quotahandle *qh, const struct quotakey *qk, 67 1.1 dholland struct quotaval *qv); 68 1.13 dholland int __quota_kernel_put(struct quotahandle *qh, const struct quotakey *qk, 69 1.7 dholland const struct quotaval *qv); 70 1.13 dholland int __quota_kernel_delete(struct quotahandle *qh, const struct quotakey *qk); 71 1.13 dholland struct kernel_quotacursor *__quota_kernel_cursor_create(struct quotahandle *); 72 1.13 dholland void __quota_kernel_cursor_destroy(struct quotahandle *, 73 1.13 dholland struct kernel_quotacursor *); 74 1.13 dholland int __quota_kernel_cursor_skipidtype(struct quotahandle *, 75 1.13 dholland struct kernel_quotacursor *, 76 1.14 dholland int idtype); 77 1.13 dholland int __quota_kernel_cursor_get(struct quotahandle *, 78 1.13 dholland struct kernel_quotacursor *, 79 1.13 dholland struct quotakey *, struct quotaval *); 80 1.13 dholland int __quota_kernel_cursor_getn(struct quotahandle *, 81 1.13 dholland struct kernel_quotacursor *, 82 1.5 dholland struct quotakey *, struct quotaval *, 83 1.14 dholland unsigned maxnum); 84 1.13 dholland int __quota_kernel_cursor_atend(struct quotahandle *, 85 1.13 dholland struct kernel_quotacursor *); 86 1.13 dholland int __quota_kernel_cursor_rewind(struct quotahandle *, 87 1.13 dholland struct kernel_quotacursor *); 88 1.2 dholland 89 1.2 dholland /* nfs rquotad interface */ 90 1.2 dholland int __quota_nfs_get(struct quotahandle *qh, const struct quotakey *qk, 91 1.2 dholland struct quotaval *qv); 92 1.2 dholland 93 1.5 dholland 94 1.6 dholland /* direct interface to old (quota1-type) files */ 95 1.10 dholland void __quota_oldfiles_load_fstab(void); 96 1.10 dholland int __quota_oldfiles_infstab(const char *); 97 1.6 dholland int __quota_oldfiles_initialize(struct quotahandle *qh); 98 1.6 dholland const char *__quota_oldfiles_getimplname(struct quotahandle *); 99 1.12 dholland const char *__quota_oldfiles_getquotafile(struct quotahandle *, int idtype, 100 1.12 dholland char *buf, size_t maxlen); 101 1.12 dholland int __quota_oldfiles_quotaon(struct quotahandle *, int idtype); 102 1.6 dholland int __quota_oldfiles_get(struct quotahandle *qh, const struct quotakey *qk, 103 1.6 dholland struct quotaval *qv); 104 1.8 dholland int __quota_oldfiles_put(struct quotahandle *qh, const struct quotakey *qk, 105 1.8 dholland const struct quotaval *qv); 106 1.8 dholland int __quota_oldfiles_delete(struct quotahandle *qh, const struct quotakey *qk); 107 1.6 dholland struct oldfiles_quotacursor * 108 1.6 dholland __quota_oldfiles_cursor_create(struct quotahandle *); 109 1.6 dholland void __quota_oldfiles_cursor_destroy(struct oldfiles_quotacursor *); 110 1.6 dholland int __quota_oldfiles_cursor_skipidtype(struct oldfiles_quotacursor *, 111 1.14 dholland int idtype); 112 1.6 dholland int __quota_oldfiles_cursor_get(struct quotahandle *, 113 1.6 dholland struct oldfiles_quotacursor *, 114 1.6 dholland struct quotakey *, struct quotaval *); 115 1.6 dholland int __quota_oldfiles_cursor_getn(struct quotahandle *, 116 1.6 dholland struct oldfiles_quotacursor *, 117 1.6 dholland struct quotakey *, struct quotaval *, 118 1.6 dholland unsigned); 119 1.6 dholland int __quota_oldfiles_cursor_atend(struct oldfiles_quotacursor *); 120 1.6 dholland int __quota_oldfiles_cursor_rewind(struct oldfiles_quotacursor *); 121 1.6 dholland 122 1.6 dholland 123 1.3 dholland /* compat for old library */ 124 1.3 dholland int __quota_getquota(const char *path, struct quotaval *qv, uid_t id, 125 1.3 dholland const char *class); 126 1.3 dholland 127