summaryrefslogtreecommitdiff
path: root/cmake/lib
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/lib')
-rw-r--r--cmake/lib/common.cmake124
-rw-r--r--cmake/lib/dev.cmake37
-rw-r--r--cmake/lib/irm.cmake34
-rw-r--r--cmake/lib/lib.cmake99
4 files changed, 294 insertions, 0 deletions
diff --git a/cmake/lib/common.cmake b/cmake/lib/common.cmake
new file mode 100644
index 00000000..1e834f10
--- /dev/null
+++ b/cmake/lib/common.cmake
@@ -0,0 +1,124 @@
+# Common library configuration
+
+set(LIB_SOURCE_DIR "${CMAKE_SOURCE_DIR}/src/lib")
+set(LIB_BINARY_DIR "${CMAKE_BINARY_DIR}/src/lib")
+
+# Protobuf files
+set_source_files_properties(
+ "${LIB_SOURCE_DIR}/pb/model.proto"
+ "${LIB_SOURCE_DIR}/pb/ipcp_config.proto"
+ "${LIB_SOURCE_DIR}/pb/enroll.proto"
+ "${LIB_SOURCE_DIR}/pb/cep.proto"
+ "${LIB_SOURCE_DIR}/pb/irm.proto"
+ "${LIB_SOURCE_DIR}/pb/ipcp.proto"
+ PROPERTIES
+ COMPILE_FLAGS "-I${LIB_SOURCE_DIR}/pb"
+)
+
+protobuf_generate_c(MODEL_PROTO_SRCS MODEL_PROTO_HDRS
+ "${LIB_SOURCE_DIR}/pb/model.proto")
+protobuf_generate_c(IPCP_CONFIG_PROTO_SRCS IPCP_CONFIG_PROTO_HDRS
+ "${LIB_SOURCE_DIR}/pb/ipcp_config.proto")
+protobuf_generate_c(ENROLL_PROTO_SRCS ENROLL_PROTO_HDRS
+ "${LIB_SOURCE_DIR}/pb/enroll.proto")
+protobuf_generate_c(CEP_PROTO_SRCS CEP_PROTO_HDRS
+ "${LIB_SOURCE_DIR}/pb/cep.proto")
+protobuf_generate_c(IRM_PROTO_SRCS IRM_PROTO_HDRS
+ "${LIB_SOURCE_DIR}/pb/irm.proto")
+protobuf_generate_c(IPCP_PROTO_SRCS IPCP_PROTO_HDRS
+ "${LIB_SOURCE_DIR}/pb/ipcp.proto")
+
+# Common library source files
+set(SOURCE_FILES_COMMON
+ bitmap.c
+ btree.c
+ crc32.c
+ crypt.c
+ hash.c
+ list.c
+ lockfile.c
+ logs.c
+ md5.c
+ notifier.c
+ protobuf.c
+ qoscube.c
+ random.c
+ rib.c
+ serdes-irm.c
+ serdes-oep.c
+ sha3.c
+ shm_flow_set.c
+ shm_rbuff.c
+ shm_rdrbuff.c
+ sockets.c
+ tpm.c
+ utils.c
+)
+
+# Convert relative paths to absolute
+set(SOURCE_FILES_COMMON_ABS)
+foreach(src ${SOURCE_FILES_COMMON})
+ list(APPEND SOURCE_FILES_COMMON_ABS "${LIB_SOURCE_DIR}/${src}")
+endforeach()
+
+if (HAVE_OPENSSL)
+ set(OPENSSL_SOURCES "${LIB_SOURCE_DIR}/crypt/openssl.c")
+else()
+ set(OPENSSL_SOURCES "")
+endif()
+
+add_library(ouroboros-common SHARED
+ ${SOURCE_FILES_COMMON_ABS}
+ ${IRM_PROTO_SRCS}
+ ${IPCP_PROTO_SRCS}
+ ${IPCP_CONFIG_PROTO_SRCS}
+ ${MODEL_PROTO_SRCS}
+ ${ENROLL_PROTO_SRCS}
+ ${OPENSSL_SOURCES})
+
+set_target_properties(ouroboros-common PROPERTIES
+ VERSION ${PACKAGE_VERSION}
+ SOVERSION ${PACKAGE_VERSION_MAJOR}.${PACKAGE_VERSION_MINOR})
+
+include(utils/AddCompileFlags)
+if (CMAKE_BUILD_TYPE MATCHES "Debug*")
+ add_compile_flags(ouroboros-common -DCONFIG_OUROBOROS_DEBUG)
+endif ()
+
+target_include_directories(ouroboros-common PUBLIC
+ ${LIB_SOURCE_DIR}
+ ${LIB_BINARY_DIR}
+ ${CMAKE_SOURCE_DIR}/include
+ ${CMAKE_BINARY_DIR}/include
+ ${CMAKE_BINARY_DIR}
+ ${PROTOBUF_C_INCLUDE_DIRS}
+ ${SYS_RND_HDR})
+
+if (LIBGCRYPT_INCLUDE_DIR)
+ target_include_directories(ouroboros-common PUBLIC ${LIBGCRYPT_INCLUDE_DIR})
+endif ()
+
+if (OPENSSL_INCLUDE_DIR)
+ target_include_directories(ouroboros-common PUBLIC ${OPENSSL_INCLUDE_DIR})
+endif ()
+
+
+target_link_libraries(ouroboros-common
+ ${LIBRT_LIBRARIES}
+ ${LIBPTHREAD_LIBRARIES}
+ ${PROTOBUF_C_LIBRARY})
+
+if (OPENSSL_CRYPTO_LIBRARY)
+ target_link_libraries(ouroboros-common ${OPENSSL_CRYPTO_LIBRARY})
+endif ()
+
+if (LIBGCRYPT_LIBRARIES)
+ target_link_libraries(ouroboros-common ${LIBGCRYPT_LIBRARIES})
+endif ()
+
+if (FUSE_LIBRARIES)
+ target_link_libraries(ouroboros-common ${FUSE_LIBRARIES})
+endif ()
+
+install(TARGETS ouroboros-common LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+
diff --git a/cmake/lib/dev.cmake b/cmake/lib/dev.cmake
new file mode 100644
index 00000000..21fe140d
--- /dev/null
+++ b/cmake/lib/dev.cmake
@@ -0,0 +1,37 @@
+set(SOURCE_FILES_DEV
+ cep.c
+ dev.c
+)
+
+# Convert relative paths to absolute
+set(SOURCE_FILES_DEV_ABS)
+foreach(src ${SOURCE_FILES_DEV})
+ list(APPEND SOURCE_FILES_DEV_ABS "${LIB_SOURCE_DIR}/${src}")
+endforeach()
+
+add_library(ouroboros-dev SHARED
+ ${SOURCE_FILES_DEV_ABS}
+ ${CEP_PROTO_SRCS})
+
+set_target_properties(ouroboros-dev PROPERTIES
+ VERSION ${PACKAGE_VERSION}
+ SOVERSION ${PACKAGE_VERSION_MAJOR}.${PACKAGE_VERSION_MINOR})
+
+if (CMAKE_BUILD_TYPE MATCHES "Debug*")
+ add_compile_flags(ouroboros-dev -DCONFIG_OUROBOROS_DEBUG)
+endif ()
+
+target_include_directories(ouroboros-dev PUBLIC
+ ${LIB_SOURCE_DIR}
+ ${LIB_BINARY_DIR}
+ ${CMAKE_SOURCE_DIR}/include
+ ${CMAKE_BINARY_DIR}/include
+ ${CMAKE_BINARY_DIR}
+ ${PROTOBUF_C_INCLUDE_DIRS}
+ ${SYS_RND_HDR}
+ ${LIBGCRYPT_INCLUDE_DIR}
+ ${OPENSSL_INCLUDE_DIR})
+
+target_link_libraries(ouroboros-dev ouroboros-common)
+
+install(TARGETS ouroboros-dev LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
diff --git a/cmake/lib/irm.cmake b/cmake/lib/irm.cmake
new file mode 100644
index 00000000..5e336b31
--- /dev/null
+++ b/cmake/lib/irm.cmake
@@ -0,0 +1,34 @@
+set(SOURCE_FILES_IRM
+ irm.c
+)
+
+# Convert relative paths to absolute
+set(SOURCE_FILES_IRM_ABS)
+foreach(src ${SOURCE_FILES_IRM})
+ list(APPEND SOURCE_FILES_IRM_ABS "${LIB_SOURCE_DIR}/${src}")
+endforeach()
+
+add_library(ouroboros-irm SHARED ${SOURCE_FILES_IRM_ABS})
+
+set_target_properties(ouroboros-irm PROPERTIES
+ VERSION ${PACKAGE_VERSION}
+ SOVERSION ${PACKAGE_VERSION_MAJOR}.${PACKAGE_VERSION_MINOR})
+
+if (CMAKE_BUILD_TYPE MATCHES "Debug*")
+ add_compile_flags(ouroboros-irm -DCONFIG_OUROBOROS_DEBUG)
+endif ()
+
+target_include_directories(ouroboros-irm PUBLIC
+ ${LIB_SOURCE_DIR}
+ ${LIB_BINARY_DIR}
+ ${CMAKE_SOURCE_DIR}/include
+ ${CMAKE_BINARY_DIR}/include
+ ${CMAKE_BINARY_DIR}
+ ${PROTOBUF_C_INCLUDE_DIRS}
+ ${SYS_RND_HDR}
+ ${LIBGCRYPT_INCLUDE_DIR}
+ ${OPENSSL_INCLUDE_DIR})
+
+target_link_libraries(ouroboros-irm ouroboros-common)
+
+install(TARGETS ouroboros-irm LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
diff --git a/cmake/lib/lib.cmake b/cmake/lib/lib.cmake
new file mode 100644
index 00000000..bf79da44
--- /dev/null
+++ b/cmake/lib/lib.cmake
@@ -0,0 +1,99 @@
+set(LIB_SOURCE_DIR "${CMAKE_SOURCE_DIR}/src/lib")
+set(LIB_BINARY_DIR "${CMAKE_BINARY_DIR}/src/lib")
+
+# Library configuration variables
+set(SHM_BUFFER_SIZE 16384 CACHE STRING
+ "Number of blocks in packet buffer, must be a power of 2")
+set(SHM_RBUFF_SIZE 1024 CACHE STRING
+ "Number of blocks in rbuff buffer, must be a power of 2")
+set(SYS_MAX_FLOWS 10240 CACHE STRING
+ "Maximum number of total flows for this system")
+set(PROG_MAX_FLOWS 4096 CACHE STRING
+ "Maximum number of flows in an application")
+set(PROG_RES_FDS 64 CACHE STRING
+ "Number of reserved flow descriptors per application")
+set(PROG_MAX_FQUEUES 32 CACHE STRING
+ "Maximum number of flow sets per application")
+set(DU_BUFF_HEADSPACE 256 CACHE STRING
+ "Bytes of headspace to reserve for future headers")
+set(DU_BUFF_TAILSPACE 32 CACHE STRING
+ "Bytes of tailspace to reserve for future tails")
+
+if (NOT APPLE)
+ set(PTHREAD_COND_CLOCK "CLOCK_MONOTONIC" CACHE STRING
+ "Clock to use for condition variable timing")
+else ()
+ set(PTHREAD_COND_CLOCK "CLOCK_REALTIME" CACHE INTERNAL
+ "Clock to use for condition variable timing")
+endif ()
+
+set(SOCKET_TIMEOUT 500 CACHE STRING
+ "Default timeout for responses from IPCPs (ms)")
+set(SHM_PREFIX "ouroboros" CACHE STRING
+ "String to prepend to POSIX shared memory filenames")
+set(SHM_RBUFF_PREFIX "/${SHM_PREFIX}.rbuff." CACHE INTERNAL
+ "Prefix for rbuff POSIX shared memory filenames")
+set(SHM_LOCKFILE_NAME "/${SHM_PREFIX}.lockfile" CACHE INTERNAL
+ "Filename for the POSIX shared memory lockfile")
+set(SHM_FLOW_SET_PREFIX "/${SHM_PREFIX}.set." CACHE INTERNAL
+ "Prefix for the POSIX shared memory flow set")
+set(SHM_RDRB_NAME "/${SHM_PREFIX}.rdrb" CACHE INTERNAL
+ "Name for the main POSIX shared memory buffer")
+set(SHM_RDRB_BLOCK_SIZE "sysconf(_SC_PAGESIZE)" CACHE STRING
+ "Packet buffer block size, multiple of pagesize for performance")
+set(SHM_RDRB_MULTI_BLOCK TRUE CACHE BOOL
+ "Packet buffer multiblock packet support")
+set(SHM_RBUFF_LOCKLESS FALSE CACHE BOOL
+ "Enable shared memory lockless rbuff support")
+set(QOS_DISABLE_CRC TRUE CACHE BOOL
+ "Ignores ber setting on all QoS cubes")
+set(DELTA_T_MPL 60 CACHE STRING
+ "Maximum packet lifetime (s)")
+set(DELTA_T_ACK 10 CACHE STRING
+ "Maximum time to acknowledge a packet (s)")
+set(DELTA_T_RTX 120 CACHE STRING
+ "Maximum time to retransmit a packet (s)")
+set(FRCT_REORDER_QUEUE_SIZE 256 CACHE STRING
+ "Size of the reordering queue, must be a power of 2")
+set(FRCT_START_WINDOW 64 CACHE STRING
+ "Start window, must be a power of 2")
+set(FRCT_LINUX_RTT_ESTIMATOR TRUE CACHE BOOL
+ "Use Linux RTT estimator formula instead of the TCP RFC formula")
+set(FRCT_RTO_MDEV_MULTIPLIER 2 CACHE STRING
+ "Multiplier for deviation term in the RTO: RTO = sRTT + (mdev << X)")
+set(FRCT_RTO_INC_FACTOR 0 CACHE STRING
+ "Divisor for RTO increase after timeout: RTO += RTX >> X, 0: Karn/Partridge")
+set(FRCT_RTO_MIN 250 CACHE STRING
+ "Minimum Retransmission Timeout (RTO) for FRCT (us)")
+set(FRCT_TICK_TIME 5000 CACHE STRING
+ "Tick time for FRCT activity (retransmission, acknowledgments) (us)")
+set(RXM_BUFFER_ON_HEAP FALSE CACHE BOOL
+ "Store packets for retransmission on the heap instead of in packet buffer")
+set(RXM_BLOCKING TRUE CACHE BOOL
+ "Use blocking writes for retransmission")
+set(RXM_MIN_RESOLUTION 20 CACHE STRING
+ "Minimum retransmission delay (ns), as a power to 2")
+set(RXM_WHEEL_MULTIPLIER 4 CACHE STRING
+ "Factor for retransmission wheel levels as a power to 2")
+set(RXM_WHEEL_LEVELS 3 CACHE STRING
+ "Number of levels in the retransmission wheel")
+set(RXM_WHEEL_SLOTS_PER_LEVEL 256 CACHE STRING
+ "Number of slots per level in the retransmission wheel, must be a power of 2")
+set(ACK_WHEEL_SLOTS 256 CACHE STRING
+ "Number of slots in the acknowledgment wheel, must be a power of 2")
+set(ACK_WHEEL_RESOLUTION 18 CACHE STRING
+ "Minimum acknowledgment delay (ns), as a power to 2")
+set(TPM_DEBUG_REPORT_INTERVAL 0 CACHE STRING
+ "Interval at wich the TPM will report long running threads (s), 0 disables")
+set(TPM_DEBUG_ABORT_TIMEOUT 0 CACHE STRING
+ "TPM abort process after a thread reaches this timeout (s), 0 disables")
+
+if (HAVE_FUSE)
+ set(PROC_FLOW_STATS TRUE CACHE BOOL
+ "Enable flow statistics tracking for application flows")
+ if (PROC_FLOW_STATS)
+ message(STATUS "Application flow statistics enabled")
+ else ()
+ message(STATUS "Application flow statistics disabled")
+ endif ()
+endif ()