sss_tools.h revision 284937e6b5b0c9d7a1d3382d0d2820d1168842fb
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina/*
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina Authors:
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina Pavel Březina <pbrezina@redhat.com>
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina Copyright (C) 2015 Red Hat
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina This program is free software; you can redistribute it and/or modify
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina it under the terms of the GNU General Public License as published by
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina the Free Software Foundation; either version 3 of the License, or
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina (at your option) any later version.
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina This program is distributed in the hope that it will be useful,
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina but WITHOUT ANY WARRANTY; without even the implied warranty of
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina GNU General Public License for more details.
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina You should have received a copy of the GNU General Public License
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina along with this program. If not, see <http://www.gnu.org/licenses/>.
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina*/
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina#ifndef _SSS_TOOLS_H_
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina#define _SSS_TOOLS_H_
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina#include <talloc.h>
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina#include <popt.h>
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina#include "confdb/confdb.h"
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březinastruct sss_tool_ctx {
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina struct confdb_ctx *confdb;
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina char *default_domain;
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina struct sss_domain_info *domains;
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina};
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březinastruct sss_tool_ctx *sss_tool_init(TALLOC_CTX *mem_ctx,
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina int *argc, const char **argv);
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březinastruct sss_cmdline;
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březinatypedef int
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina(*sss_route_fn)(struct sss_cmdline *cmdline,
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina struct sss_tool_ctx *tool_ctx,
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina void *pvt);
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březinastruct sss_route_cmd {
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina const char *command;
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina sss_route_fn fn;
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina};
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březinaint sss_tool_usage(const char *tool_name,
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina struct sss_route_cmd *commands);
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březinaint sss_tool_route(int argc, const char **argv,
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina struct sss_tool_ctx *tool_ctx,
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina struct sss_route_cmd *commands,
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina void *pvt);
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březinatypedef int (*sss_popt_fn)(poptContext pc, char option, void *pvt);
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březinaenum sss_tool_opt {
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina SSS_TOOL_OPT_REQUIRED,
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina SSS_TOOL_OPT_OPTIONAL
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina};
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březinaint sss_tool_popt_ex(struct sss_cmdline *cmdline,
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina struct poptOption *options,
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina enum sss_tool_opt require_option,
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina sss_popt_fn popt_fn,
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina void *popt_fn_pvt,
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina const char *free_opt_name,
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina const char *free_opt_help,
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina const char **_free_opt);
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březinaint sss_tool_popt(struct sss_cmdline *cmdline,
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina struct poptOption *options,
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina enum sss_tool_opt require_option,
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina sss_popt_fn popt_fn,
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina void *popt_fn_pvt);
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březinaint sss_tool_main(int argc, const char **argv,
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina struct sss_route_cmd *commands,
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina void *pvt);
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březinaint sss_tool_parse_name(TALLOC_CTX *mem_ctx,
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina struct sss_tool_ctx *tool_ctx,
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina const char *input,
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina const char **_username,
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina struct sss_domain_info **_domain);
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina
284937e6b5b0c9d7a1d3382d0d2820d1168842fbPavel Březina#endif /* SRC_TOOLS_COMMON_SSS_TOOLS_H_ */