blob: d4b4808c82cca935f4c8599736c5b0367be77dab (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
set(IRMD_SOURCE_DIR "${CMAKE_SOURCE_DIR}/src/irmd")
set(IRMD_BINARY_DIR "${CMAKE_BINARY_DIR}/src/irmd")
set(OUROBOROS_CONFIG_DIR /etc/ouroboros CACHE STRING
"Configuration directory (should be absolute)")
# Configuration file support
set(OUROBOROS_SECURITY_DIR "${OUROBOROS_CONFIG_DIR}/security" CACHE STRING
"Security directory holding authentication information")
set(OUROBOROS_CA_CRT_DIR "${OUROBOROS_SECURITY_DIR}/cacert" CACHE STRING
"Directory holding trusted CA certificates")
set(OUROBOROS_SRV_CRT_DIR "${OUROBOROS_SECURITY_DIR}/server" CACHE STRING
"Directory holding server certificates")
set(OUROBOROS_CLI_CRT_DIR "${OUROBOROS_SECURITY_DIR}/client" CACHE STRING
"Directory holding client certificates")
set(OUROBOROS_UNTRUSTED_DIR "${OUROBOROS_SECURITY_DIR}/untrusted" CACHE STRING
"Directory holding untrusted intermediate certificates")
# IRMd timeouts and parameters
set(IRMD_REQ_ARR_TIMEOUT 1000 CACHE STRING
"Timeout for an application to respond to a new flow (ms)")
set(BOOTSTRAP_TIMEOUT 5000 CACHE STRING
"Timeout for an IPCP to bootstrap (ms)")
set(ENROLL_TIMEOUT 20000 CACHE STRING
"Timeout for an IPCP to enroll (ms)")
set(REG_TIMEOUT 20000 CACHE STRING
"Timeout for registering a name (ms)")
set(QUERY_TIMEOUT 200 CACHE STRING
"Timeout to query a name with an IPCP (ms)")
set(CONNECT_TIMEOUT 20000 CACHE STRING
"Timeout to connect an IPCP to another IPCP (ms)")
set(FLOW_ALLOC_TIMEOUT 20000 CACHE STRING
"Timeout for a flow allocation response (ms)")
set(IRMD_MIN_THREADS 8 CACHE STRING
"Minimum number of worker threads in the IRMd")
set(IRMD_ADD_THREADS 8 CACHE STRING
"Number of extra threads to start when the IRMD faces thread starvation")
set(IRMD_PKILL_TIMEOUT 30 CACHE STRING
"Number of seconds to wait before sending SIGKILL to subprocesses on exit")
set(IRMD_KILL_ALL_PROCESSES TRUE CACHE BOOL
"Kill all processes on exit")
set(DEBUG_PROTO_OAP FALSE CACHE BOOL
"Add Flow allocation protocol message output to IRMd debug logging")
# Configuration file support (libtoml)
if (LIBTOML_LIBRARIES)
set(DISABLE_CONFIGFILE FALSE CACHE BOOL
"Disable configuration file support")
if (NOT DISABLE_CONFIGFILE)
set(OUROBOROS_CONFIG_FILE irmd.conf CACHE STRING
"Name of the IRMd configuration file")
set(HAVE_TOML TRUE)
message(STATUS "Configuration file support enabled")
message(STATUS "Configuration directory: ${OUROBOROS_CONFIG_DIR}")
set(INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}")
configure_file("${CMAKE_SOURCE_DIR}/irmd.conf.in"
"${CMAKE_BINARY_DIR}/${OUROBOROS_CONFIG_FILE}.example" @ONLY)
install(FILES "${CMAKE_BINARY_DIR}/${OUROBOROS_CONFIG_FILE}.example"
DESTINATION "${OUROBOROS_CONFIG_DIR}")
install(CODE "
if (NOT EXISTS \"${OUROBOROS_CONFIG_DIR}/${OUROBOROS_CONFIG_FILE}\")
file(WRITE \"${OUROBOROS_CONFIG_DIR}/${OUROBOROS_CONFIG_FILE}\" \"\")
endif()
")
unset(INSTALL_DIR)
else ()
message(STATUS "Configuration file support disabled by user")
unset(OUROBOROS_CONFIG_FILE CACHE)
set(HAVE_TOML FALSE)
endif ()
else ()
message(STATUS "Install tomlc99 for config file support")
message(STATUS " https://github.com/cktan/tomlc99")
unset(HAVE_TOML)
endif ()
configure_file("${IRMD_SOURCE_DIR}/config.h.in"
"${IRMD_BINARY_DIR}/config.h" @ONLY)
set(IRMD_SOURCES
"${IRMD_SOURCE_DIR}/ipcp.c"
"${IRMD_SOURCE_DIR}/configfile.c"
"${IRMD_SOURCE_DIR}/main.c"
"${IRMD_SOURCE_DIR}/oap.c"
"${IRMD_SOURCE_DIR}/reg/flow.c"
"${IRMD_SOURCE_DIR}/reg/ipcp.c"
"${IRMD_SOURCE_DIR}/reg/proc.c"
"${IRMD_SOURCE_DIR}/reg/prog.c"
"${IRMD_SOURCE_DIR}/reg/name.c"
"${IRMD_SOURCE_DIR}/reg/reg.c"
)
add_executable(irmd ${IRMD_SOURCES})
target_include_directories(irmd PRIVATE
"${IRMD_SOURCE_DIR}"
"${IRMD_BINARY_DIR}"
"${CMAKE_SOURCE_DIR}/include"
"${CMAKE_BINARY_DIR}/include")
target_link_libraries(irmd PUBLIC ouroboros-common)
if (LIBTOML_LIBRARIES)
target_link_libraries(irmd PUBLIC ${LIBTOML_LIBRARIES})
endif ()
if (HAVE_TOML)
target_include_directories(irmd PRIVATE ${LIBTOML_INCLUDE})
endif ()
include(utils/AddCompileFlags)
if (CMAKE_BUILD_TYPE MATCHES "Debug*")
add_compile_flags(irmd -DCONFIG_OUROBOROS_DEBUG)
endif ()
install(TARGETS irmd RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR})
|