|
Packit |
8480eb |
/* ----------------------------------------------------------------------- *
|
|
Packit |
8480eb |
*
|
|
Packit |
8480eb |
* master.h - header file for master map parser utility routines.
|
|
Packit |
8480eb |
*
|
|
Packit |
8480eb |
* Copyright 2006 Ian Kent <raven@themaw.net>
|
|
Packit |
8480eb |
*
|
|
Packit |
8480eb |
* This program is free software; you can redistribute it and/or modify
|
|
Packit |
8480eb |
* it under the terms of the GNU General Public License as published by
|
|
Packit |
8480eb |
* the Free Software Foundation, Inc., 675 Mass Ave, Cambridge MA 02139,
|
|
Packit |
8480eb |
* USA; either version 2 of the License, or (at your option) any later
|
|
Packit |
8480eb |
* version.
|
|
Packit |
8480eb |
*
|
|
Packit |
8480eb |
* This program is distributed in the hope that it will be useful,
|
|
Packit |
8480eb |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
8480eb |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Packit |
8480eb |
* GNU General Public License for more details.
|
|
Packit |
8480eb |
*
|
|
Packit |
8480eb |
* ----------------------------------------------------------------------- */
|
|
Packit |
8480eb |
|
|
Packit |
8480eb |
#ifndef MASTER_H
|
|
Packit |
8480eb |
#define MASTER_H
|
|
Packit |
8480eb |
|
|
Packit |
8480eb |
#define MAP_FLAG_FORMAT_AMD 0x0001
|
|
Packit |
8480eb |
|
|
Packit |
8480eb |
struct map_source {
|
|
Packit |
8480eb |
unsigned int ref;
|
|
Packit |
8480eb |
unsigned int flags;
|
|
Packit |
8480eb |
char *type;
|
|
Packit |
8480eb |
char *format;
|
|
Packit |
8480eb |
char *name;
|
|
Packit |
8480eb |
time_t exp_timeout; /* Timeout for expiring mounts */
|
|
Packit |
8480eb |
time_t age;
|
|
Packit |
8480eb |
unsigned int master_line;
|
|
Packit |
8480eb |
struct mapent_cache *mc;
|
|
Packit |
8480eb |
unsigned int stale;
|
|
Packit |
8480eb |
unsigned int recurse;
|
|
Packit |
8480eb |
unsigned int depth;
|
|
Packit |
8480eb |
struct lookup_mod *lookup;
|
|
Packit |
8480eb |
int argc;
|
|
Packit |
8480eb |
const char **argv;
|
|
Packit |
8480eb |
struct map_source *instance;
|
|
Packit |
8480eb |
struct map_source *next;
|
|
Packit |
8480eb |
};
|
|
Packit |
8480eb |
|
|
Packit |
8480eb |
struct master_mapent {
|
|
Packit |
8480eb |
char *path;
|
|
Packit |
8480eb |
pthread_t thid;
|
|
Packit |
8480eb |
time_t age;
|
|
Packit |
8480eb |
struct master *master;
|
|
Packit |
8480eb |
pthread_rwlock_t source_lock;
|
|
Packit |
8480eb |
pthread_mutex_t current_mutex;
|
|
Packit |
8480eb |
pthread_cond_t current_cond;
|
|
Packit |
8480eb |
struct map_source *current;
|
|
Packit |
8480eb |
struct map_source *maps;
|
|
Packit |
8480eb |
struct autofs_point *ap;
|
|
Packit |
8480eb |
struct list_head list;
|
|
Packit |
8480eb |
struct list_head join;
|
|
Packit |
8480eb |
};
|
|
Packit |
8480eb |
|
|
Packit |
8480eb |
struct master {
|
|
Packit |
8480eb |
char *name;
|
|
Packit |
8480eb |
unsigned int recurse;
|
|
Packit |
8480eb |
unsigned int depth;
|
|
Packit |
8480eb |
unsigned int reading;
|
|
Packit |
8480eb |
unsigned int read_fail;
|
|
Packit |
8480eb |
unsigned int default_ghost;
|
|
Packit |
8480eb |
unsigned int default_logging;
|
|
Packit |
8480eb |
unsigned int default_timeout;
|
|
Packit |
8480eb |
unsigned int logopt;
|
|
Packit |
8480eb |
struct mapent_cache *nc;
|
|
Packit |
8480eb |
struct list_head mounts;
|
|
Packit |
8480eb |
struct list_head completed;
|
|
Packit |
8480eb |
};
|
|
Packit |
8480eb |
|
|
Packit |
8480eb |
/* From the yacc master map parser */
|
|
Packit |
8480eb |
|
|
Packit |
8480eb |
void master_init_scan(void);
|
|
Packit |
8480eb |
int master_parse_entry(const char *, unsigned int, unsigned int, time_t);
|
|
Packit |
8480eb |
|
|
Packit |
8480eb |
/* From master.c master parser utility routines */
|
|
Packit |
8480eb |
|
|
Packit |
8480eb |
void master_mutex_lock(void);
|
|
Packit |
8480eb |
void master_mutex_unlock(void);
|
|
Packit |
8480eb |
void master_mutex_lock_cleanup(void *);
|
|
Packit |
8480eb |
void master_set_default_timeout(void);
|
|
Packit |
8480eb |
void master_set_default_ghost_mode(void);
|
|
Packit |
8480eb |
int master_add_autofs_point(struct master_mapent *, unsigned, unsigned, unsigned, int);
|
|
Packit |
8480eb |
void master_free_autofs_point(struct autofs_point *);
|
|
Packit |
8480eb |
struct map_source *
|
|
Packit |
8480eb |
master_add_map_source(struct master_mapent *, char *, char *, time_t, int, const char **);
|
|
Packit |
8480eb |
struct map_source *
|
|
Packit |
8480eb |
master_find_map_source(struct master_mapent *, const char *, const char *, int, const char **);
|
|
Packit |
8480eb |
struct map_source *
|
|
Packit |
8480eb |
master_get_map_source(struct master_mapent *, const char *, const char *, int, const char **);
|
|
Packit |
8480eb |
void master_free_map_source(struct map_source *, unsigned int);
|
|
Packit |
8480eb |
struct map_source *
|
|
Packit |
8480eb |
master_find_source_instance(struct map_source *, const char *, const char *, int, const char **);
|
|
Packit |
8480eb |
struct map_source *
|
|
Packit |
8480eb |
master_add_source_instance(struct map_source *, const char *, const char *, time_t, int, const char **);
|
|
Packit |
8480eb |
int check_stale_instances(struct map_source *);
|
|
Packit |
8480eb |
void clear_stale_instances(struct map_source *);
|
|
Packit |
8480eb |
void send_map_update_request(struct autofs_point *);
|
|
Packit |
8480eb |
void master_source_writelock(struct master_mapent *);
|
|
Packit |
8480eb |
void master_source_readlock(struct master_mapent *);
|
|
Packit |
8480eb |
void master_source_unlock(struct master_mapent *);
|
|
Packit |
8480eb |
void master_source_lock_cleanup(void *);
|
|
Packit |
8480eb |
void master_source_current_wait(struct master_mapent *);
|
|
Packit |
8480eb |
void master_source_current_signal(struct master_mapent *);
|
|
Packit |
8480eb |
struct master_mapent *master_find_mapent(struct master *, const char *);
|
|
Packit |
8480eb |
unsigned int master_partial_match_mapent(struct master *, const char *);
|
|
Packit |
8480eb |
struct autofs_point *__master_find_submount(struct autofs_point *, const char *);
|
|
Packit |
8480eb |
struct autofs_point *master_find_submount(struct autofs_point *, const char *);
|
|
Packit |
8480eb |
struct amd_entry *__master_find_amdmount(struct autofs_point *, const char *);
|
|
Packit |
8480eb |
struct amd_entry *master_find_amdmount(struct autofs_point *, const char *);
|
|
Packit |
8480eb |
struct master_mapent *master_new_mapent(struct master *, const char *, time_t);
|
|
Packit |
8480eb |
void master_add_mapent(struct master *, struct master_mapent *);
|
|
Packit |
8480eb |
void master_remove_mapent(struct master_mapent *);
|
|
Packit |
8480eb |
void master_free_mapent_sources(struct master_mapent *, unsigned int);
|
|
Packit |
8480eb |
void master_free_mapent(struct master_mapent *);
|
|
Packit |
8480eb |
struct master *master_new(const char *, unsigned int, unsigned int);
|
|
Packit |
8480eb |
int master_read_master(struct master *, time_t, int);
|
|
Packit |
8480eb |
int master_submount_list_empty(struct autofs_point *ap);
|
|
Packit |
8480eb |
int master_notify_submount(struct autofs_point *, const char *path, enum states);
|
|
Packit |
8480eb |
void master_notify_state_change(struct master *, int);
|
|
Packit |
8480eb |
int master_mount_mounts(struct master *, time_t, int);
|
|
Packit |
8480eb |
int dump_map(struct master *, const char *, const char *);
|
|
Packit |
8480eb |
int master_show_mounts(struct master *);
|
|
Packit |
8480eb |
unsigned int master_get_logopt(void);
|
|
Packit |
8480eb |
int master_list_empty(struct master *);
|
|
Packit |
8480eb |
int master_done(struct master *);
|
|
Packit |
8480eb |
int master_kill(struct master *);
|
|
Packit |
8480eb |
|
|
Packit |
8480eb |
#endif
|