13914ddf8SEdward Tomasz Napierala /*- 2*4d846d26SWarner Losh * SPDX-License-Identifier: BSD-2-Clause 3abdd3945SEdward Tomasz Napierala * 43914ddf8SEdward Tomasz Napierala * Copyright (c) 2014 The FreeBSD Foundation 53914ddf8SEdward Tomasz Napierala * 63914ddf8SEdward Tomasz Napierala * This software was developed by Edward Tomasz Napierala under sponsorship 73914ddf8SEdward Tomasz Napierala * from the FreeBSD Foundation. 83914ddf8SEdward Tomasz Napierala * 93914ddf8SEdward Tomasz Napierala * Redistribution and use in source and binary forms, with or without 103914ddf8SEdward Tomasz Napierala * modification, are permitted provided that the following conditions 113914ddf8SEdward Tomasz Napierala * are met: 123914ddf8SEdward Tomasz Napierala * 1. Redistributions of source code must retain the above copyright 133914ddf8SEdward Tomasz Napierala * notice, this list of conditions and the following disclaimer. 143914ddf8SEdward Tomasz Napierala * 2. Redistributions in binary form must reproduce the above copyright 153914ddf8SEdward Tomasz Napierala * notice, this list of conditions and the following disclaimer in the 163914ddf8SEdward Tomasz Napierala * documentation and/or other materials provided with the distribution. 173914ddf8SEdward Tomasz Napierala * 183914ddf8SEdward Tomasz Napierala * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 193914ddf8SEdward Tomasz Napierala * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 203914ddf8SEdward Tomasz Napierala * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 213914ddf8SEdward Tomasz Napierala * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 223914ddf8SEdward Tomasz Napierala * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 233914ddf8SEdward Tomasz Napierala * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 243914ddf8SEdward Tomasz Napierala * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 253914ddf8SEdward Tomasz Napierala * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 263914ddf8SEdward Tomasz Napierala * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 273914ddf8SEdward Tomasz Napierala * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 283914ddf8SEdward Tomasz Napierala * SUCH DAMAGE. 293914ddf8SEdward Tomasz Napierala */ 303914ddf8SEdward Tomasz Napierala 313914ddf8SEdward Tomasz Napierala #ifndef AUTOMOUNTD_H 323914ddf8SEdward Tomasz Napierala #define AUTOMOUNTD_H 333914ddf8SEdward Tomasz Napierala 343914ddf8SEdward Tomasz Napierala #include <sys/queue.h> 353914ddf8SEdward Tomasz Napierala #include <stdbool.h> 363914ddf8SEdward Tomasz Napierala 373914ddf8SEdward Tomasz Napierala #define AUTO_MASTER_PATH "/etc/auto_master" 383914ddf8SEdward Tomasz Napierala #define AUTO_MAP_PREFIX "/etc" 393914ddf8SEdward Tomasz Napierala #define AUTO_SPECIAL_PREFIX "/etc/autofs" 403914ddf8SEdward Tomasz Napierala #define AUTO_INCLUDE_PATH AUTO_SPECIAL_PREFIX "/include" 413914ddf8SEdward Tomasz Napierala 423914ddf8SEdward Tomasz Napierala struct node { 433914ddf8SEdward Tomasz Napierala TAILQ_ENTRY(node) n_next; 443914ddf8SEdward Tomasz Napierala TAILQ_HEAD(nodehead, node) n_children; 453914ddf8SEdward Tomasz Napierala struct node *n_parent; 463914ddf8SEdward Tomasz Napierala char *n_key; 473914ddf8SEdward Tomasz Napierala char *n_options; 483914ddf8SEdward Tomasz Napierala char *n_location; 493914ddf8SEdward Tomasz Napierala char *n_map; 503914ddf8SEdward Tomasz Napierala const char *n_config_file; 513914ddf8SEdward Tomasz Napierala int n_config_line; 523914ddf8SEdward Tomasz Napierala }; 533914ddf8SEdward Tomasz Napierala 543914ddf8SEdward Tomasz Napierala struct defined_value { 553914ddf8SEdward Tomasz Napierala TAILQ_ENTRY(defined_value) d_next; 563914ddf8SEdward Tomasz Napierala char *d_name; 573914ddf8SEdward Tomasz Napierala char *d_value; 583914ddf8SEdward Tomasz Napierala }; 593914ddf8SEdward Tomasz Napierala 603914ddf8SEdward Tomasz Napierala void log_init(int level); 613914ddf8SEdward Tomasz Napierala void log_set_peer_name(const char *name); 623914ddf8SEdward Tomasz Napierala void log_set_peer_addr(const char *addr); 633914ddf8SEdward Tomasz Napierala void log_err(int, const char *, ...) 643914ddf8SEdward Tomasz Napierala __dead2 __printf0like(2, 3); 653914ddf8SEdward Tomasz Napierala void log_errx(int, const char *, ...) 663914ddf8SEdward Tomasz Napierala __dead2 __printf0like(2, 3); 673914ddf8SEdward Tomasz Napierala void log_warn(const char *, ...) __printf0like(1, 2); 683914ddf8SEdward Tomasz Napierala void log_warnx(const char *, ...) __printflike(1, 2); 693914ddf8SEdward Tomasz Napierala void log_debugx(const char *, ...) __printf0like(1, 2); 703914ddf8SEdward Tomasz Napierala 713914ddf8SEdward Tomasz Napierala char *checked_strdup(const char *); 726d8e60c3SEdward Tomasz Napierala char *concat(const char *s1, char separator, const char *s2); 733914ddf8SEdward Tomasz Napierala void create_directory(const char *path); 743914ddf8SEdward Tomasz Napierala 753914ddf8SEdward Tomasz Napierala struct node *node_new_root(void); 763914ddf8SEdward Tomasz Napierala struct node *node_new(struct node *parent, char *key, char *options, 773914ddf8SEdward Tomasz Napierala char *location, const char *config_file, int config_line); 783914ddf8SEdward Tomasz Napierala struct node *node_new_map(struct node *parent, char *key, char *options, 793914ddf8SEdward Tomasz Napierala char *map, const char *config_file, int config_line); 803914ddf8SEdward Tomasz Napierala struct node *node_find(struct node *root, const char *mountpoint); 813914ddf8SEdward Tomasz Napierala bool node_is_direct_map(const struct node *n); 824cdc52bdSEdward Tomasz Napierala bool node_has_wildcards(const struct node *n); 833914ddf8SEdward Tomasz Napierala char *node_path(const struct node *n); 843914ddf8SEdward Tomasz Napierala char *node_options(const struct node *n); 853914ddf8SEdward Tomasz Napierala void node_expand_ampersand(struct node *root, const char *key); 863914ddf8SEdward Tomasz Napierala void node_expand_wildcard(struct node *root, const char *key); 873914ddf8SEdward Tomasz Napierala int node_expand_defined(struct node *root); 883914ddf8SEdward Tomasz Napierala void node_expand_indirect_maps(struct node *n); 898ee4f5efSEdward Tomasz Napierala void node_print(const struct node *n, const char *cmdline_options); 903914ddf8SEdward Tomasz Napierala void parse_master(struct node *root, const char *path); 914cdc52bdSEdward Tomasz Napierala void parse_map(struct node *parent, const char *map, const char *args, 924cdc52bdSEdward Tomasz Napierala bool *wildcards); 933914ddf8SEdward Tomasz Napierala char *defined_expand(const char *string); 943914ddf8SEdward Tomasz Napierala void defined_init(void); 953914ddf8SEdward Tomasz Napierala void defined_parse_and_add(char *def); 963914ddf8SEdward Tomasz Napierala void lesser_daemon(void); 9788e531f3SRobert Wing void rpc_umntall(void); 983914ddf8SEdward Tomasz Napierala 993914ddf8SEdward Tomasz Napierala int main_automount(int argc, char **argv); 1003914ddf8SEdward Tomasz Napierala int main_automountd(int argc, char **argv); 1013914ddf8SEdward Tomasz Napierala int main_autounmountd(int argc, char **argv); 1023914ddf8SEdward Tomasz Napierala 1033914ddf8SEdward Tomasz Napierala FILE *auto_popen(const char *argv0, ...); 1043914ddf8SEdward Tomasz Napierala int auto_pclose(FILE *iop); 1053914ddf8SEdward Tomasz Napierala 1063914ddf8SEdward Tomasz Napierala /* 1073914ddf8SEdward Tomasz Napierala * lex(1) stuff. 1083914ddf8SEdward Tomasz Napierala */ 1093914ddf8SEdward Tomasz Napierala extern int lineno; 1103914ddf8SEdward Tomasz Napierala 1113914ddf8SEdward Tomasz Napierala #define STR 1 1123914ddf8SEdward Tomasz Napierala #define NEWLINE 2 1133914ddf8SEdward Tomasz Napierala 1143914ddf8SEdward Tomasz Napierala #endif /* !AUTOMOUNTD_H */ 115