/**
 * @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

/*
 * 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_ */
