blob: 5ad585b6b041408e890ce40a984286e2a569fa26 [file] [log] [blame]
Radek Krejcid0d19522015-09-02 13:49:25 +02001/**
2 * \file config.h
3 * \author Radek Krejci <rkrejci@cesnet.cz>
4 * \brief libnetconf2 various configuration settings.
5 *
Michal Vaskof471fa02017-02-15 10:48:12 +01006 * Copyright (c) 2015 - 2017 CESNET, z.s.p.o.
Radek Krejcid0d19522015-09-02 13:49:25 +02007 *
Radek Krejci9b81f5b2016-02-24 13:14:49 +01008 * This source code is licensed under BSD 3-Clause License (the "License").
9 * You may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
Michal Vaskoafd416b2016-02-25 14:51:46 +010011 *
Radek Krejci9b81f5b2016-02-24 13:14:49 +010012 * https://opensource.org/licenses/BSD-3-Clause
Radek Krejcid0d19522015-09-02 13:49:25 +020013 */
14
15#ifndef NC_CONFIG_H_
16#define NC_CONFIG_H_
17
18/*
David Sedlákaae4df32018-10-08 22:27:22 +020019 * Mark all objects as hidden and export only objects explicitly marked to be part of the public API or
20 * those marked as mock objects for testing purpose
Radek Krejcid0d19522015-09-02 13:49:25 +020021 */
22#define API __attribute__((visibility("default")))
David Sedlákddde4492018-09-30 21:34:38 +020023#define MOCK __attribute__((visibility("default")))
24
Radek Krejci14b14032015-10-21 15:19:43 +020025/*
Michal Vasko7ae909a2018-11-09 09:51:42 +010026 * Support for atomic variables
Radek Krejci32898d52016-07-14 17:37:02 +020027 */
Michal Vasko7ae909a2018-11-09 09:51:42 +010028#cmakedefine HAVE_STDATOMIC
Michal Vasko7a20d2e2021-05-19 16:40:23 +020029
Michal Vasko7ae909a2018-11-09 09:51:42 +010030#ifdef HAVE_STDATOMIC
31# include <stdatomic.h>
32
33# define ATOMIC_UINT32_T atomic_uint_fast32_t
Michal Vasko7f1fa3c2020-09-08 16:30:41 +020034# define ATOMIC_PTR atomic_uintptr_t
Michal Vaskob639e9c2020-09-09 09:51:48 +020035# define ATOMIC_STORE(x, val) atomic_store(&(x), (val))
36# define ATOMIC_LOAD(x) atomic_load((atomic_uintptr_t *)&(x))
Michal Vasko7f1fa3c2020-09-08 16:30:41 +020037# define ATOMIC_INC(x) atomic_fetch_add(&(x), 1)
Michal Vasko7ae909a2018-11-09 09:51:42 +010038#else
Michal Vasko7a20d2e2021-05-19 16:40:23 +020039# include <stdint.h>
40
Michal Vasko7ae909a2018-11-09 09:51:42 +010041# define ATOMIC_UINT32_T uint32_t
Michal Vasko7f1fa3c2020-09-08 16:30:41 +020042# define ATOMIC_PTR void *
Michal Vaskob639e9c2020-09-09 09:51:48 +020043# define ATOMIC_STORE(x, val) (x) = (val)
44# define ATOMIC_LOAD(x) (x)
Michal Vasko7f1fa3c2020-09-08 16:30:41 +020045# define ATOMIC_INC(x) __sync_add_and_fetch(&(x), 1)
Radek Krejci32898d52016-07-14 17:37:02 +020046#endif
47
48/*
apropp-molex4e903c32020-04-20 03:06:58 -040049 * Support for getpeereid
50 */
51#cmakedefine HAVE_GETPEEREID
52
53/*
54 * Support for shadow file manipulation
55 */
56#cmakedefine HAVE_SHADOW
57
58/*
59 * Support for crypt.h
60 */
61#cmakedefine HAVE_CRYPT
62
63/*
Michal Vasko5a446472020-05-06 12:43:42 +020064 * Location of installed basic YANG modules on the system
Radek Krejci14b14032015-10-21 15:19:43 +020065 */
Michal Vasko5a446472020-05-06 12:43:42 +020066#define NC_YANG_DIR "@YANG_MODULE_DIR@"
Radek Krejci14b14032015-10-21 15:19:43 +020067
Michal Vasko6b7c42e2016-03-02 15:46:41 +010068/*
Michal Vaskof471fa02017-02-15 10:48:12 +010069 * Inactive read timeout
Michal Vasko6b7c42e2016-03-02 15:46:41 +010070 */
Michal Vaskof471fa02017-02-15 10:48:12 +010071#define NC_READ_INACT_TIMEOUT @READ_INACTIVE_TIMEOUT@
72
73/*
74 * Active read timeout in seconds
75 * (also used for internal <get-schema> RPC reply timeout)
76 */
77#define NC_READ_ACT_TIMEOUT @READ_ACTIVE_TIMEOUT@
Michal Vasko6b7c42e2016-03-02 15:46:41 +010078
Michal Vaskoafdb8ec2017-02-15 11:25:36 +010079/*
80 * pspoll structure queue size (also found in nc_server.h)
81 */
82#define NC_PS_QUEUE_SIZE @MAX_PSPOLL_THREAD_COUNT@
83
Michal Vasko5a9bd9c2019-08-16 15:50:09 +020084/* Microseconds after which tasks are repeated until the full timeout elapses.
85 * A millisecond (1000) should be divisible by this number without remain.
86 */
87#define NC_TIMEOUT_STEP @TIMEOUT_STEP@
88
Rosen Penevef2f3ac2019-07-15 18:15:28 -070089/* Portability feature-check macros. */
90#cmakedefine HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP
91
Radek Krejcid0d19522015-09-02 13:49:25 +020092#endif /* NC_CONFIG_H_ */