/*
 * Ouroboros - Copyright (C) 2016 - 2026
 *
 * Configuration for the IPC Resource Manager
 *
 *    Dimitri Staessens <dimitri@ouroboros.rocks>
 *    Sander Vrijders   <sander@ouroboros.rocks>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * This program 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., http://www.fsf.org/about/contact/.
 */


#define IPCP_UDP4_EXEC         "@IPCP_UDP4_TARGET@"
#define IPCP_UDP6_EXEC         "@IPCP_UDP6_TARGET@"
#define IPCP_ETH_LLC_EXEC      "@IPCP_ETH_LLC_TARGET@"
#define IPCP_ETH_DIX_EXEC      "@IPCP_ETH_DIX_TARGET@"
#define IPCP_UNICAST_EXEC      "@IPCP_UNICAST_TARGET@"
#define IPCP_BROADCAST_EXEC    "@IPCP_BROADCAST_TARGET@"
#define IPCP_LOCAL_EXEC        "@IPCP_LOCAL_TARGET@"

#define INSTALL_PREFIX         "@CMAKE_INSTALL_PREFIX@"
#define INSTALL_SBINDIR        "@CMAKE_INSTALL_SBINDIR@"

#define PTHREAD_COND_CLOCK     @PTHREAD_COND_CLOCK@

#define SOCKET_TIMEOUT         @SOCKET_TIMEOUT@

#define IRMD_REQ_ARR_TIMEOUT   @IRMD_REQ_ARR_TIMEOUT@

#define FLOW_ALLOC_TIMEOUT     @FLOW_ALLOC_TIMEOUT@
#define FLOW_DEALLOC_TIMEOUT   @FLOW_DEALLOC_TIMEOUT@

#define OAP_REPLAY_TIMER       @OAP_REPLAY_TIMER@
#define OAP_REPLAY_MAX         @OAP_REPLAY_MAX@
#define OAP_REKEY_TIMER        @OAP_REKEY_TIMER@
#cmakedefine01 OAP_CLIENT_AUTH_DEFAULT

#define BOOTSTRAP_TIMEOUT      @BOOTSTRAP_TIMEOUT@
#define ENROLL_TIMEOUT         @ENROLL_TIMEOUT@
#define REG_TIMEOUT            @REG_TIMEOUT@
#define QUERY_TIMEOUT          @QUERY_TIMEOUT@
#define CONNECT_TIMEOUT        @CONNECT_TIMEOUT@

#define SYS_MAX_FLOWS          @SYS_MAX_FLOWS@
#define IRMD_MIN_THREADS       @IRMD_MIN_THREADS@
#define IRMD_ADD_THREADS       @IRMD_ADD_THREADS@

#define SSM_PID_GSPP           0

#cmakedefine HAVE_FUSE
#ifdef HAVE_FUSE
#define FUSE_PREFIX            "@FUSE_PREFIX@"
#endif

#cmakedefine HAVE_TOML
#ifdef HAVE_TOML
#define OUROBOROS_CONFIG_DIR   "@OUROBOROS_CONFIG_DIR@"
#define OUROBOROS_CONFIG_FILE  "@OUROBOROS_CONFIG_FILE@"
#endif

#define OUROBOROS_SECURITY_DIR "@OUROBOROS_SECURITY_DIR@"
#define OUROBOROS_CA_CRT_DIR   "@OUROBOROS_CA_CRT_DIR@"
#define OUROBOROS_SRV_CRT_DIR  "@OUROBOROS_SRV_CRT_DIR@"
#define OUROBOROS_CLI_CRT_DIR  "@OUROBOROS_CLI_CRT_DIR@"
#define OUROBOROS_CHAIN_DIR    "@OUROBOROS_UNTRUSTED_DIR@"

#define IRMD_PKILL_TIMEOUT     @IRMD_PKILL_TIMEOUT@

#cmakedefine DISABLE_DIRECT_IPC
#cmakedefine IRMD_KILL_ALL_PROCESSES
#cmakedefine HAVE_LIBGCRYPT
#cmakedefine HAVE_OPENSSL
#ifdef HAVE_OPENSSL
#cmakedefine HAVE_OPENSSL_ML_KEM
#cmakedefine HAVE_OPENSSL_ML_DSA
#endif
#define IRMD_SECMEM_MAX        @IRMD_SECMEM_MAX@
#ifdef CONFIG_OUROBOROS_DEBUG
#cmakedefine DEBUG_PROTO_OAP
#endif

#define _B "[38;5;4m"
#define _G "[38;5;8m"
#define RST "[0m"

#define O7S_ASCII_ART \
RST "\n" \
_B "    ▄▄█████▄▄▄                                                   \n" \
_B "  ▄█▀▀     ▀▀███▄  " _G "                █                       \n" \
_B " ██    ▄▄▄   ▄███▄ " _G "▄  ▄  ▄ ▄   ▄▄  █▄▄   ▄▄  ▄ ▄   ▄▄   ▄▄ \n" \
_B " ██   █   █  █████ " _G "█  █  █▀ ▀ █  █ █  █ █  █ █▀ ▀ █  █ ▀▄ ▀\n" \
_B " ██   ▀▄▄▄▀   ▀█▀  " _G "█  █  █    █  █ █  █ █  █ █    █  █ ▄ ▀▄\n" \
_B "  █▄          █    " _G " ▀▀ ▀ ▀     ▀▀  ▀▀▀   ▀▀  ▀     ▀▀   ▀▀ \n" \
_B "   ▀█▄▄▄▄▄▄▄▄▀                                                   \n" \
_B "     ▀▀▀▀▀▀                                                      \n" \
RST "\n"
