diff options
Diffstat (limited to 'src/utils/knotc/process.h')
-rw-r--r-- | src/utils/knotc/process.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/src/utils/knotc/process.h b/src/utils/knotc/process.h new file mode 100644 index 0000000..3946131 --- /dev/null +++ b/src/utils/knotc/process.h @@ -0,0 +1,78 @@ +/* Copyright (C) 2022 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. + */ + +#pragma once + +#include "utils/knotc/commands.h" + +#define DEFAULT_CTL_TIMEOUT_MS (60 * 1000) + +/*! Utility command line parameters. */ +typedef struct { + const char *orig_config; + const char *orig_confdb; + const char *config; + const char *confdb; + size_t max_conf_size; + const char *socket; + bool verbose; + bool extended; + bool force; + bool blocking; + int timeout; + bool color; + bool color_force; +} params_t; + +/*! + * Prepares a proper configuration according to the specified command. + * + * \param[in] desc Utility command descriptor. + * \param[in] params Utility parameters. + * + * \return Error code, KNOT_EOK if successful. + */ +int set_config(const cmd_desc_t *desc, params_t *params); + +/*! + * Establishes a control interface if necessary. + * + * \param[in] ctl Control context. + * \param[in] socket Control socket path. + * \param[in] timeout Control socket timeout. + * \param[in] desc Utility command descriptor. + * + * \return Error code, KNOT_EOK if successful. + */ +int set_ctl(knot_ctl_t **ctl, const char *socket, int timeout, const cmd_desc_t *desc); + +/*! + * Cleans up the control context. + * + * \param[in] ctl Control context. + */ +void unset_ctl(knot_ctl_t *ctl); + +/*! + * Processes the given utility command. + * + * \param[in] argc Number of command arguments. + * \param[in] argv Command arguments. + * \param[in] params Utility parameters. + * + * \return Error code, KNOT_EOK if successful. + */ +int process_cmd(int argc, const char **argv, params_t *params); |