/*
 * Ouroboros - Copyright (C) 2016 - 2017
 *
 * Configuration information
 *
 *    Sander Vrijders <sander.vrijders@intec.ugent.be>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public License
 * version 2.1 as published by the Free Software Foundation.
 *
 * This library 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 * 02110-1301 USA
 */

#ifndef OUROBOROS_CONFIG
#define OUROBOROS_CONFIG

#define PROJECT_NAME           "@CMAKE_PROJECT_NAME@"
#define PROJECT_VERSION        "@PACKAGE_VERSION@"
#define INSTALL_PREFIX         "@CMAKE_INSTALL_PREFIX@"
#define _POSIX_C_SOURCE        200809L
#define __XSI_VISIBLE          500
#ifdef __FreeBSD__
#define __BSD_VISIBLE          1
#endif
#define IPCP_SHIM_UDP_EXEC     "@IPCP_SHIM_UDP_TARGET@"
#define IPCP_SHIM_ETH_LLC_EXEC "@IPCP_SHIM_ETH_LLC_TARGET@"
#define IPCP_NORMAL_EXEC       "@IPCP_NORMAL_TARGET@"
#define IPCP_LOCAL_EXEC        "@IPCP_LOCAL_TARGET@"
#define AP_MAX_FLOWS           256
#define AP_MAX_FQUEUES         64
#define SHM_RDRB_BLOCK_SIZE    sysconf(_SC_PAGESIZE)
#define SHM_RDRB_MULTI_BLOCK
#define SHM_RDRB_PREFIX        "/ouroboros.rdrb."
#define LOCKFILE_NAME          "/ouroboros.lockfile"
#define SHM_BUFFER_SIZE        1 << 14
#define DU_BUFF_HEADSPACE      128
#define DU_BUFF_TAILSPACE      0
#define SHM_RBUFF_PREFIX       "/ouroboros.rbuff."
#define SHM_FLOW_SET_PREFIX    "/ouroboros.sets."
#define IRMD_MAX_FLOWS         4096
#define IRMD_THREADPOOL_SIZE   16
#define IPCPD_THREADPOOL_SIZE  16
#define IPCPD_MAX_CONNS        IRMD_MAX_FLOWS
#define PTHREAD_COND_CLOCK     CLOCK_MONOTONIC
#define PFT_SIZE               1 << 12
/* Timeout values */
#define IRMD_ACCEPT_TIMEOUT    100
#define IRMD_REQ_ARR_TIMEOUT   200
#define IRMD_FLOW_TIMEOUT      5000
#define IPCP_ACCEPT_TIMEOUT    100
#define SOCKET_TIMEOUT         4000
#define CDAP_REPLY_TIMEOUT     1000
#define ENROLL_TIMEOUT         2000

#endif /* OUROBOROS_CONFIG */
