/**
 * @file config.h
 * @author Radek Krejci <rkrejci@cesnet.cz>
 * @author Michal Vasko <mvasko@cesnet.cz>
 * @brief libnetconf2 various configuration settings.
 *
 * @copyright
 * Copyright (c) 2015 - 2024 CESNET, z.s.p.o.
 *
 * This source code is licensed under BSD 3-Clause License (the "License").
 * You may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     https://opensource.org/licenses/BSD-3-Clause
 */

#ifndef NC_CONFIG_H_
#define NC_CONFIG_H_

/*
 * Mark all objects as hidden and export only objects explicitly marked to be part of the public API or
 * those marked as mock objects for testing purpose
 */
#define API __attribute__((visibility("default")))
#define MOCK __attribute__((visibility("default")))

/*
 * Support for getpeereid
 */
#cmakedefine HAVE_GETPEEREID

/*
 * Support for shadow file manipulation
 */
#cmakedefine HAVE_SHADOW

/*
 * Support for terminal in/out
 */
#cmakedefine HAVE_TERMIOS

/*
 * Support for keyboard-interactive SSH authentication method
 */
#cmakedefine HAVE_LIBPAM

/*
 * Use MbedTLS as TLS back-end
 */
#cmakedefine HAVE_MBEDTLS

/*
 * Location of installed YANG modules on the system
 */
#define NC_SERVER_SEARCH_DIR "@YANG_MODULE_DIR@"

/*
 * Location of installed YANG modules on the system
 */
#define NC_CLIENT_SEARCH_DIR "@CLIENT_SEARCH_DIR@"

/*
 * Inactive read timeout
 */
#define NC_READ_INACT_TIMEOUT @READ_INACTIVE_TIMEOUT@

/*
 * Active read timeout in seconds
 * (also used for internal <get-schema> RPC reply timeout)
 */
#define NC_READ_ACT_TIMEOUT @READ_ACTIVE_TIMEOUT@

/*
 * pspoll structure queue size (also found in nc_server.h)
 */
#define NC_PS_QUEUE_SIZE @MAX_PSPOLL_THREAD_COUNT@

/* Microseconds after which tasks are repeated until the full timeout elapses.
 * A millisecond (1000) should be divisible by this number without remain.
 */
#define NC_TIMEOUT_STEP @TIMEOUT_STEP@

/* Portability feature-check macros. */
#cmakedefine HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP

#endif /* NC_CONFIG_H_ */
