/**
 * @file config.h
 * @author Radek Krejci <rkrejci@cesnet.cz>
 * @brief libnetconf2 various configuration settings.
 *
 * @copyright
 * Copyright (c) 2015 - 2017 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 crypt.h
 */
#cmakedefine HAVE_CRYPT

/*
 * Location of installed basic YANG modules on the system
 */
#define NC_YANG_DIR "@YANG_MODULE_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_ */
