quota-private.h revision 2615df45a8027948a474abe5e817b34b0499c171
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen/* Modules should use do "my_id = quota_module_id++" and
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen use quota_module_contexts[id] for their own purposes. */
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainenextern unsigned int quota_module_id;
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen ARRAY_DEFINE(namespaces, struct mail_namespace *);
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen ARRAY_DEFINE(root_sets, struct quota_root_settings *);
3fe44a0df5a0bdd80c495f79cbf0e384441d6fccTimo Sirainen int (*test_alloc)(struct quota_transaction_context *ctx,
3851ad9fcb25635f02b46d44586742ef1081876bTimo Sirainen /* relative to default_rule */
2b682d8d3661800f16aceaa45fa4de9b6b140a59Timo Sirainen /* Don't include this mailbox in quota */
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen int (*init)(struct quota_root *root, const char *args);
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen bool (*parse_rule)(struct quota_root_settings *root_set,
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen /* called once for each namespace */
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen const char *const *(*get_resources)(struct quota_root *root);
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen bool (*match_box)(struct quota_root *root, struct mailbox *box);
3fe44a0df5a0bdd80c495f79cbf0e384441d6fccTimo Sirainen /* quota backends equal if backend1.name == backend2.name */
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen /* Unique quota root name. */
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen ARRAY_DEFINE(warning_rules, struct quota_warning_rule);
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen /* Limits in default_rule override backend's quota limits */
2d8b23805db6f06b8b38174fb6e135386694f429Timo Sirainen /* this quota root applies only to this namespace. it may also be
2d8b23805db6f06b8b38174fb6e135386694f429Timo Sirainen a public namespace without an owner. */
2d8b23805db6f06b8b38174fb6e135386694f429Timo Sirainen /* this is set in quota init(), because namespaces aren't known yet */
b1678954f83e1059b981e2def52a70054fa71399Timo Sirainen /* initially the same as set->default_rule.*_limit, but some backends
b1678954f83e1059b981e2def52a70054fa71399Timo Sirainen may change these by reading the limits elsewhere (e.g. Maildir++,
0e5819a061034f1636b124c03a89f67d37c852b1Timo Sirainen /* 1 = quota root has resources and should be returned when iterating
0e5819a061034f1636b124c03a89f67d37c852b1Timo Sirainen quota roots, 0 = not, -1 = unknown. */
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen /* Module-specific contexts. See quota_module_id. */
d5d23d5ff8b7a06d2ead489ddcf55ee8fb5ca7b6Timo Sirainen /* don't enforce quota when saving */
8e371a3ce32bd64288786855b8ce0cb63f19f7d1Timo Sirainen union mailbox_transaction_module_context module_ctx;
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen/* Register storage to all user's quota roots. */
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainenvoid quota_add_user_namespace(struct quota *quota, struct mail_namespace *ns);
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainenvoid quota_remove_user_namespace(struct mail_namespace *ns);
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainenstruct quota *quota_get_mail_user_quota(struct mail_user *user);
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainenbool quota_root_is_namespace_visible(struct quota_root *root,
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainenquota_root_rule_find(struct quota_root_settings *root_set, const char *name);
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainenvoid quota_root_recalculate_relative_rules(struct quota_root_settings *root_set);