summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt14
-rw-r--r--CONTRIBUTORS4
-rw-r--r--doc/man/CMakeLists.txt2
-rw-r--r--doc/man/fccntl.32
-rw-r--r--doc/man/flow_alloc.35
-rw-r--r--doc/man/flow_read.32
-rw-r--r--doc/man/fqueue.32
-rw-r--r--doc/man/fset.32
-rw-r--r--doc/man/ouroboros_fini.31
-rw-r--r--doc/man/ouroboros_init.369
-rw-r--r--include/ouroboros/dev.h5
-rw-r--r--include/ouroboros/wrap/CMakeLists.txt3
-rw-r--r--include/ouroboros/wrap/ouroboros.i3
-rw-r--r--ouroboros-dev.pc.in12
-rw-r--r--ouroboros-irm.pc.in (renamed from ouroboros.pc.in)6
-rw-r--r--src/ipcpd/ipcp.c17
-rw-r--r--src/ipcpd/ipcp.h1
-rw-r--r--src/ipcpd/local/CMakeLists.txt2
-rw-r--r--src/ipcpd/local/main.c2
-rw-r--r--src/ipcpd/normal/CMakeLists.txt2
-rw-r--r--src/ipcpd/normal/dht.c9
-rw-r--r--src/ipcpd/normal/main.c2
-rw-r--r--src/ipcpd/normal/pol/tests/CMakeLists.txt2
-rw-r--r--src/ipcpd/normal/tests/CMakeLists.txt2
-rw-r--r--src/ipcpd/shim-eth-llc/CMakeLists.txt4
-rw-r--r--src/ipcpd/shim-eth-llc/main.c2
-rw-r--r--src/ipcpd/shim-udp/CMakeLists.txt2
-rw-r--r--src/ipcpd/shim-udp/main.c2
-rw-r--r--src/irmd/CMakeLists.txt2
-rw-r--r--src/irmd/main.c1
-rw-r--r--src/lib/CMakeLists.txt64
-rw-r--r--src/lib/dev.c29
-rw-r--r--src/lib/tests/CMakeLists.txt2
-rw-r--r--src/tools/cbr/CMakeLists.txt2
-rw-r--r--src/tools/cbr/cbr.c13
-rw-r--r--src/tools/echo/CMakeLists.txt2
-rw-r--r--src/tools/echo/echo.c16
-rw-r--r--src/tools/echo/echo_server.c14
-rw-r--r--src/tools/irm/CMakeLists.txt2
-rw-r--r--src/tools/operf/CMakeLists.txt2
-rw-r--r--src/tools/operf/operf.c13
-rw-r--r--src/tools/oping/CMakeLists.txt2
-rw-r--r--src/tools/oping/oping.c13
43 files changed, 123 insertions, 235 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 624950bc..432f6f49 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -11,7 +11,7 @@ include(GNUInstallDirs)
set(PACKAGE_NAME "${CMAKE_PROJECT_NAME}")
set(PACKAGE_DESCRIPTION "The Ouroboros prototype")
-set(PACKAGE_URL "None")
+set(PACKAGE_URL "http://ouroboros.ilabt.imec.be")
set(PACKAGE_BUGREPORT "None")
set(PACKAGE_VERSION "${PACKAGE_VERSION_MAJOR}.${PACKAGE_VERSION_MINOR}")
@@ -68,10 +68,16 @@ test_and_set_c_compiler_flag_global(-Wunreachable-code)
test_and_set_c_compiler_flag_global(-Wdeclaration-after-statement)
test_and_set_c_compiler_flag_global(-fmax-errors=5)
-configure_file("${CMAKE_CURRENT_SOURCE_DIR}/ouroboros.pc.in"
- "${CMAKE_CURRENT_BINARY_DIR}/ouroboros.pc" @ONLY)
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/ouroboros-dev.pc.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/ouroboros-dev.pc" @ONLY)
-install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ouroboros.pc"
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/ouroboros-irm.pc.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/ouroboros-irm.pc" @ONLY)
+
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ouroboros-dev.pc"
+ DESTINATION "usr/lib/pkgconfig")
+
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ouroboros-irm.pc"
DESTINATION "usr/lib/pkgconfig")
if (IS_DIRECTORY "/usr/lib/systemd")
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index eeff71ad..dbe6bde8 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -1,5 +1,5 @@
This file contains a list of people who have made large contributions to
Ouroboros, in alphabetical order.
-Dimitri Staessens <dimitri.staessens@intec.ugent.be>
-Sander Vrijders <sander.vrijders@intec.ugent.be>
+Dimitri Staessens <dimitri.staessens@ugent.be>
+Sander Vrijders <sander.vrijders@ugent.be>
diff --git a/doc/man/CMakeLists.txt b/doc/man/CMakeLists.txt
index ab56242d..ba72b14b 100644
--- a/doc/man/CMakeLists.txt
+++ b/doc/man/CMakeLists.txt
@@ -1,7 +1,5 @@
set(MAN_NAMES
# Add man page sources here
- ouroboros_init.3
- ouroboros_fini.3
flow_accept.3
flow_alloc.3
flow_dealloc.3
diff --git a/doc/man/fccntl.3 b/doc/man/fccntl.3
index ac35a7f8..eaa6a02e 100644
--- a/doc/man/fccntl.3
+++ b/doc/man/fccntl.3
@@ -14,7 +14,7 @@ fccntl \- control commands for flows and FRCT connections
\fBint fccntl(int \fIfd\fB, int \fIcmd\fB, ...);
-Compile and link with \fI-louroboros\fR.
+Compile and link with \fI-louroboros-dev\fR.
.SH DESCRIPTION
diff --git a/doc/man/flow_alloc.3 b/doc/man/flow_alloc.3
index 662c46ec..cab8153e 100644
--- a/doc/man/flow_alloc.3
+++ b/doc/man/flow_alloc.3
@@ -22,7 +22,7 @@ const struct timespec * \fItimeo\fB);
\fBint flow_dealloc(int \fIfd\fB);\fR
-Compile and link with \fI-louroboros\fR.
+Compile and link with \fI-louroboros-dev\fR.
.SH DESCRIPTION
@@ -109,8 +109,7 @@ _
.SH SEE ALSO
-.BR ouroboros_init "(3), " ouroboros_fini "(3), " \
-flow_read "(3), " flow_write (3)
+.BR flow_read "(3), " flow_write (3)
.SH COLOPHON
This page is part of the Ouroboros project, found at
diff --git a/doc/man/flow_read.3 b/doc/man/flow_read.3
index 36a506a6..9e7842e5 100644
--- a/doc/man/flow_read.3
+++ b/doc/man/flow_read.3
@@ -16,7 +16,7 @@ flow_read, flow_write \- read and write from/to a flow
\fBint flow_write(int \fIfd\fB, const void * \fIbuf\fB, size_t \fIcount\fB);\fR
-Compile and link with \fI-louroboros\fR.
+Compile and link with \fI-louroboros-dev\fR.
.SH DESCRIPTION
diff --git a/doc/man/fqueue.3 b/doc/man/fqueue.3
index cf8cef20..f932633d 100644
--- a/doc/man/fqueue.3
+++ b/doc/man/fqueue.3
@@ -22,7 +22,7 @@ on flows
\fBint fevent(fset_t * \fIset\fB, fqueue_t * \fIfq\fB,
const struct timespec * \fItimeo\fB);
-Compile and link with \fI-louroboros\fR.
+Compile and link with \fI-louroboros-dev\fR.
.SH DESCRIPTION
diff --git a/doc/man/fset.3 b/doc/man/fset.3
index b4f3a1b0..3b367e17 100644
--- a/doc/man/fset.3
+++ b/doc/man/fset.3
@@ -25,7 +25,7 @@ manipulation of a set of flow descriptors
\fBbool fset_has(fset_t * \fIset\fB, int \fIfd\fB);
-Compile and link with \fI-louroboros\fR.
+Compile and link with \fI-louroboros-dev\fR.
.SH DESCRIPTION
diff --git a/doc/man/ouroboros_fini.3 b/doc/man/ouroboros_fini.3
deleted file mode 100644
index d525d287..00000000
--- a/doc/man/ouroboros_fini.3
+++ /dev/null
@@ -1 +0,0 @@
-.so ouroboros_init.3
diff --git a/doc/man/ouroboros_init.3 b/doc/man/ouroboros_init.3
deleted file mode 100644
index c74bea5e..00000000
--- a/doc/man/ouroboros_init.3
+++ /dev/null
@@ -1,69 +0,0 @@
-.\" Ouroboros man pages (C) 2017
-.\" Dimitri Staessens <dimitri.staessens@ugent.be>
-.\" Sander Vrijders <sander.vrijders@ugent.be>
-
-.TH OUROBOROS_INIT 3 2017-04-10 GNU "Ouroboros Programmer's Manual"
-
-.SH NAME
-
-ouroboros_init, ouroboros_fini \- initialize and finalize an
-application for using Ouroboros
-
-.SH SYNOPSIS
-
-.B #include <ouroboros/dev.h>
-
-\fBint ouroboros_init(char * \fIapn\fB);\fR
-
-\fBvoid ouroboros_fini(void);\fR
-
-Compile and link with \fI-louroboros\fR.
-
-.SH DESCRIPTION
-
-The \fBouroboros_init\fR() call initializes an application process
-instance for using the Ouroboros IPC infrastructure. If the
-application is a server or peer, a \fBchar * \fIapn\fR has to be
-provided indicating the application process that this instance belongs
-to. This is usually argv[0]. A client application may pass NULL. The
-\fBouroboros_fini\fR() call will release all resources allocated by
-\fBouroboros_fini\fR().
-
-\fBouroboros_init\fR() and \fBouroboros_fini\fR() should be called
-only once in the application.
-
-.SH RETURN VALUE
-
-On success, \fBouroboros_init\fR() returns 0. On failure, a negative
-value indicating the error will be returned. The
-\fBouroboros_fini\fR() function has no return value.
-
-.SH ERRORS
-
-\fBouroboros_init\fR() can return the following errors:
-
-.B -EIRMD
-Failed to contact an IRMd instance.
-
-.B -ENOMEM
-Insufficient system resources to intialize the application.
-
-.SH ATTRIBUTES
-
-For an explanation of the terms used in this section, see
-\fBattributes\fR(7).
-
-.TS
-box, tab(&);
-LB|LB|LB
-L|L|L.
-Interface & Attribute & Value
-_
-\fBouroboros_init\fR() & Thread safety & MT-Safe
-_
-\fBouroboros_fini\fR() & Thread safety & MT-Safe
-.TE
-
-.SH COLOPHON
-This page is part of the Ouroboros project, found at
-https://bitbucket.org/ouroboros-rina/ouroboros
diff --git a/include/ouroboros/dev.h b/include/ouroboros/dev.h
index 0441179d..f64221d8 100644
--- a/include/ouroboros/dev.h
+++ b/include/ouroboros/dev.h
@@ -31,11 +31,6 @@
__BEGIN_DECLS
-/* These calls should be removed once we write the ouroboros OS. */
-int ouroboros_init(const char * ap_name);
-
-void ouroboros_fini(void);
-
/* Returns flow descriptor, qs updates to supplied QoS. */
int flow_alloc(const char * dst_name,
qosspec_t * qs,
diff --git a/include/ouroboros/wrap/CMakeLists.txt b/include/ouroboros/wrap/CMakeLists.txt
index 4ec42b9a..4ffc54a8 100644
--- a/include/ouroboros/wrap/CMakeLists.txt
+++ b/include/ouroboros/wrap/CMakeLists.txt
@@ -32,7 +32,8 @@ else ()
TYPE MODULE)
endif()
- swig_link_libraries(ouroboros ${PYTHON_LIBRARIES} ouroboros)
+ swig_link_libraries(ouroboros ${PYTHON_LIBRARIES} ouroboros-common
+ ouroboros-dev ouroboros-irm)
# Installation directives
if (CMAKE_INSTALL_PREFIX STREQUAL "")
diff --git a/include/ouroboros/wrap/ouroboros.i b/include/ouroboros/wrap/ouroboros.i
index db5e09f2..42d78c1c 100644
--- a/include/ouroboros/wrap/ouroboros.i
+++ b/include/ouroboros/wrap/ouroboros.i
@@ -3,7 +3,8 @@
*
* SWIG wrapper file
*
- * Sander Vrijders <sander.vrijders@intec.ugent.be>
+ * Dimitri Staessens <dimitri.staessens@ugent.be>
+ * Sander Vrijders <sander.vrijders@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
diff --git a/ouroboros-dev.pc.in b/ouroboros-dev.pc.in
new file mode 100644
index 00000000..8895a76b
--- /dev/null
+++ b/ouroboros-dev.pc.in
@@ -0,0 +1,12 @@
+prefix=@CMAKE_INSTALL_PREFIX@
+exec_prefix=${prefix}
+libdir=${exec_prefix}/usr/lib
+includedir=${prefix}/usr/include
+
+Name: ouroboros-dev
+Description: Development library for Ouroboros
+URL: @PACKAGE_URL@
+Version: @PACKAGE_VERSION@
+
+Libs: -L${libdir} -louroboros-dev
+Cflags: -I${includedir}
diff --git a/ouroboros.pc.in b/ouroboros-irm.pc.in
index 44da4b91..5e5841c2 100644
--- a/ouroboros.pc.in
+++ b/ouroboros-irm.pc.in
@@ -3,10 +3,10 @@ exec_prefix=${prefix}
libdir=${exec_prefix}/usr/lib
includedir=${prefix}/usr/include
-Name: @PROJECT_NAME@
-Description: @PACKAGE_DESCRIPTION@
+Name: ouroboros-irm
+Description: Management library for Ouroboros
URL: @PACKAGE_URL@
Version: @PACKAGE_VERSION@
-Libs: -L${libdir} -louroboros
+Libs: -L${libdir} -louroboros-irm
Cflags: -I${includedir}
diff --git a/src/ipcpd/ipcp.c b/src/ipcpd/ipcp.c
index 9f4d9eea..44dbb52a 100644
--- a/src/ipcpd/ipcp.c
+++ b/src/ipcpd/ipcp.c
@@ -544,7 +544,6 @@ static int parse_args(int argc,
int ipcp_init(int argc,
char ** argv,
- enum ipcp_type type,
struct ipcp_ops * ops)
{
bool log;
@@ -558,18 +557,6 @@ int ipcp_init(int argc,
log_init(log);
- if (type == IPCP_NORMAL) {
- if (ouroboros_init(argv[0])) {
- log_err("Failed to init normal IPCPI.");
- return -1;
- }
- } else {
- if (ouroboros_init(NULL)) {
- log_err("Failed to init shim IPCPI.");
- return -1;
- }
- }
-
ipcpi.irmd_fd = -1;
ipcpi.state = IPCP_NULL;
@@ -652,8 +639,6 @@ int ipcp_init(int argc,
fail_serv_sock:
free(ipcpi.sock_path);
fail_sock_path:
- ouroboros_fini();
-
return ret;
}
@@ -736,8 +721,6 @@ void ipcp_fini()
log_info("IPCP %d out.", getpid());
log_fini();
-
- ouroboros_fini();
}
void ipcp_set_state(enum ipcp_state state)
diff --git a/src/ipcpd/ipcp.h b/src/ipcpd/ipcp.h
index d47d224b..62fb310a 100644
--- a/src/ipcpd/ipcp.h
+++ b/src/ipcpd/ipcp.h
@@ -109,7 +109,6 @@ struct ipcp {
int ipcp_init(int argc,
char ** argv,
- enum ipcp_type type,
struct ipcp_ops * ops);
int ipcp_boot(void);
diff --git a/src/ipcpd/local/CMakeLists.txt b/src/ipcpd/local/CMakeLists.txt
index 925092bd..788c1139 100644
--- a/src/ipcpd/local/CMakeLists.txt
+++ b/src/ipcpd/local/CMakeLists.txt
@@ -19,7 +19,7 @@ set(SHIM_LOCAL_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/main.c)
add_executable(ipcpd-local ${SHIM_LOCAL_SOURCES} ${IPCP_SOURCES})
-target_link_libraries(ipcpd-local LINK_PUBLIC ouroboros)
+target_link_libraries(ipcpd-local LINK_PUBLIC ouroboros-common ouroboros-dev)
include(AddCompileFlags)
if (CMAKE_BUILD_TYPE MATCHES Debug)
diff --git a/src/ipcpd/local/main.c b/src/ipcpd/local/main.c
index b98e144c..684949d9 100644
--- a/src/ipcpd/local/main.c
+++ b/src/ipcpd/local/main.c
@@ -326,7 +326,7 @@ static struct ipcp_ops local_ops = {
int main(int argc,
char * argv[])
{
- if (ipcp_init(argc, argv, THIS_TYPE, &local_ops) < 0) {
+ if (ipcp_init(argc, argv, &local_ops) < 0) {
ipcp_create_r(getpid(), -1);
exit(EXIT_FAILURE);
}
diff --git a/src/ipcpd/normal/CMakeLists.txt b/src/ipcpd/normal/CMakeLists.txt
index 8dbe4820..dd67ce05 100644
--- a/src/ipcpd/normal/CMakeLists.txt
+++ b/src/ipcpd/normal/CMakeLists.txt
@@ -50,7 +50,7 @@ set(SOURCE_FILES
add_executable(ipcpd-normal ${SOURCE_FILES} ${IPCP_SOURCES}
${FLOW_ALLOC_SRCS} ${LS_PROTO_SRCS} ${KAD_PROTO_SRCS} ${ENROLL_PROTO_SRCS})
-target_link_libraries(ipcpd-normal LINK_PUBLIC ouroboros)
+target_link_libraries(ipcpd-normal LINK_PUBLIC ouroboros-dev ouroboros-irm)
include(AddCompileFlags)
if (CMAKE_BUILD_TYPE MATCHES Debug)
diff --git a/src/ipcpd/normal/dht.c b/src/ipcpd/normal/dht.c
index 7ca555ab..161bf292 100644
--- a/src/ipcpd/normal/dht.c
+++ b/src/ipcpd/normal/dht.c
@@ -1420,7 +1420,9 @@ static int send_msg(struct dht * dht,
kad_msg_t * msg,
uint64_t addr)
{
+#ifndef __DHT_TEST__
struct shm_du_buff * sdb;
+#endif
size_t len;
int retr = 0;
@@ -1451,12 +1453,11 @@ static int send_msg(struct dht * dht,
if (len == 0)
goto fail_msg;
+#ifndef __DHT_TEST__
if (ipcp_sdb_reserve(&sdb, len))
goto fail_msg;
-
kad_msg__pack(msg, shm_du_buff_head(sdb));
-#ifndef __DHT_TEST__
while (retr >= 0) {
if (dt_write_sdu(addr, QOS_CUBE_BE, dht->fd, sdb))
retr--;
@@ -1470,7 +1471,6 @@ static int send_msg(struct dht * dht,
#else
(void) addr;
(void) retr;
- ipcp_sdb_release(sdb);
#endif /* __DHT_TEST__ */
if (msg->code < KAD_STORE && dht_get_state(dht) != DHT_SHUTDOWN)
@@ -2363,8 +2363,9 @@ static void * dht_handle_sdu(void * o)
i = shm_du_buff_tail(cmd->sdb) - shm_du_buff_head(cmd->sdb);
msg = kad_msg__unpack(NULL, i, shm_du_buff_head(cmd->sdb));
-
+#ifndef __DHT_TEST__
ipcp_sdb_release(cmd->sdb);
+#endif
free(cmd);
if (msg == NULL) {
diff --git a/src/ipcpd/normal/main.c b/src/ipcpd/normal/main.c
index 8c16fd22..719be77c 100644
--- a/src/ipcpd/normal/main.c
+++ b/src/ipcpd/normal/main.c
@@ -299,7 +299,7 @@ static struct ipcp_ops normal_ops = {
int main(int argc,
char * argv[])
{
- if (ipcp_init(argc, argv, THIS_TYPE, &normal_ops) < 0) {
+ if (ipcp_init(argc, argv, &normal_ops) < 0) {
log_err("Failed to init IPCP.");
goto fail_init;
}
diff --git a/src/ipcpd/normal/pol/tests/CMakeLists.txt b/src/ipcpd/normal/pol/tests/CMakeLists.txt
index 55ca425a..d0652533 100644
--- a/src/ipcpd/normal/pol/tests/CMakeLists.txt
+++ b/src/ipcpd/normal/pol/tests/CMakeLists.txt
@@ -21,7 +21,7 @@ create_test_sourcelist(${PARENT_DIR}_tests test_suite.c
)
add_executable(${PARENT_DIR}_test EXCLUDE_FROM_ALL ${${PARENT_DIR}_tests})
-target_link_libraries(${PARENT_DIR}_test ouroboros)
+target_link_libraries(${PARENT_DIR}_test ouroboros-common)
add_dependencies(check ${PARENT_DIR}_test)
diff --git a/src/ipcpd/normal/tests/CMakeLists.txt b/src/ipcpd/normal/tests/CMakeLists.txt
index d975caf6..be92888f 100644
--- a/src/ipcpd/normal/tests/CMakeLists.txt
+++ b/src/ipcpd/normal/tests/CMakeLists.txt
@@ -24,7 +24,7 @@ set_source_files_properties(${KAD_PROTO_SRCS} PROPERTIES GENERATED TRUE)
add_executable(${PARENT_DIR}_test EXCLUDE_FROM_ALL ${${PARENT_DIR}_tests}
${KAD_PROTO_SRCS})
-target_link_libraries(${PARENT_DIR}_test ouroboros)
+target_link_libraries(${PARENT_DIR}_test ouroboros-common)
add_dependencies(check ${PARENT_DIR}_test)
diff --git a/src/ipcpd/shim-eth-llc/CMakeLists.txt b/src/ipcpd/shim-eth-llc/CMakeLists.txt
index e10a715f..600340b7 100644
--- a/src/ipcpd/shim-eth-llc/CMakeLists.txt
+++ b/src/ipcpd/shim-eth-llc/CMakeLists.txt
@@ -91,8 +91,8 @@ if (HAVE_LLC)
${NETMAP_C_INCLUDE_DIR})
endif ()
- target_link_libraries(ipcpd-shim-eth-llc LINK_PUBLIC ouroboros
- ${PROTOBUF_C_LIBRARY})
+ target_link_libraries(ipcpd-shim-eth-llc LINK_PUBLIC ouroboros-common
+ ouroboros-dev ${PROTOBUF_C_LIBRARY})
include(AddCompileFlags)
if (CMAKE_BUILD_TYPE MATCHES Debug)
diff --git a/src/ipcpd/shim-eth-llc/main.c b/src/ipcpd/shim-eth-llc/main.c
index 52b111a5..e735b651 100644
--- a/src/ipcpd/shim-eth-llc/main.c
+++ b/src/ipcpd/shim-eth-llc/main.c
@@ -1342,7 +1342,7 @@ static struct ipcp_ops eth_llc_ops = {
int main(int argc,
char * argv[])
{
- if (ipcp_init(argc, argv, THIS_TYPE, &eth_llc_ops) < 0)
+ if (ipcp_init(argc, argv, &eth_llc_ops) < 0)
goto fail_init;
if (eth_llc_data_init() < 0) {
diff --git a/src/ipcpd/shim-udp/CMakeLists.txt b/src/ipcpd/shim-udp/CMakeLists.txt
index fb57778e..89a446a7 100644
--- a/src/ipcpd/shim-udp/CMakeLists.txt
+++ b/src/ipcpd/shim-udp/CMakeLists.txt
@@ -23,7 +23,7 @@ set(SHIM_UDP_SOURCES
add_executable(ipcpd-shim-udp ${SHIM_UDP_SOURCES} ${IPCP_SOURCES}
${SHIM_UDP_PROTO_SRCS})
-target_link_libraries(ipcpd-shim-udp LINK_PUBLIC ouroboros
+target_link_libraries(ipcpd-shim-udp LINK_PUBLIC ouroboros-common ouroboros-dev
${PROTOBUF_C_LIBRARY})
# Find the nsupdate executable
diff --git a/src/ipcpd/shim-udp/main.c b/src/ipcpd/shim-udp/main.c
index d393dc4b..f8248f86 100644
--- a/src/ipcpd/shim-udp/main.c
+++ b/src/ipcpd/shim-udp/main.c
@@ -1113,7 +1113,7 @@ static struct ipcp_ops udp_ops = {
int main(int argc,
char * argv[])
{
- if (ipcp_init(argc, argv, THIS_TYPE, &udp_ops) < 0) {
+ if (ipcp_init(argc, argv, &udp_ops) < 0) {
ipcp_create_r(getpid(), -1);
exit(EXIT_FAILURE);
}
diff --git a/src/irmd/CMakeLists.txt b/src/irmd/CMakeLists.txt
index de883d63..55288263 100644
--- a/src/irmd/CMakeLists.txt
+++ b/src/irmd/CMakeLists.txt
@@ -41,7 +41,7 @@ set(SOURCE_FILES
add_executable (irmd ${SOURCE_FILES})
-target_link_libraries (irmd LINK_PUBLIC ouroboros)
+target_link_libraries (irmd LINK_PUBLIC ouroboros-common)
include(AddCompileFlags)
if (CMAKE_BUILD_TYPE MATCHES Debug)
diff --git a/src/irmd/main.c b/src/irmd/main.c
index 99a34af2..80417806 100644
--- a/src/irmd/main.c
+++ b/src/irmd/main.c
@@ -1120,7 +1120,6 @@ static int flow_accept(pid_t api,
e = api_table_get(&irmd.api_table, api);
if (e == NULL) {
- /* Can only happen if server called ouroboros_init(NULL); */
pthread_rwlock_unlock(&irmd.reg_lock);
log_err("Unknown instance %d calling accept.", api);
return -EINVAL;
diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt
index 6ab5ebc8..c1b8f354 100644
--- a/src/lib/CMakeLists.txt
+++ b/src/lib/CMakeLists.txt
@@ -73,7 +73,7 @@ if (LIBGCRYPT_LIBRARIES)
string(REGEX REPLACE "^#define GCRYPT_VERSION \"(.*)\".*$" "\\1"
GCVER "${GCSTR}")
if (NOT GCVER VERSION_LESS "1.7.0")
- set (DISABLE_LIBGCRYPT FALSE CACHE BOOL "Disable libgcrypt support")
+ set(DISABLE_LIBGCRYPT FALSE CACHE BOOL "Disable libgcrypt support")
if (NOT DISABLE_LIBGCRYPT)
message(STATUS "libgcrypt support enabled")
set(HAVE_LIBGCRYPT TRUE CACHE INTERNAL "")
@@ -94,7 +94,7 @@ endif ()
find_package(OpenSSL QUIET)
if (OPENSSL_FOUND)
- set (DISABLE_OPENSSL FALSE CACHE BOOL "Disable OpenSSL support")
+ set(DISABLE_OPENSSL FALSE CACHE BOOL "Disable OpenSSL support")
if (NOT DISABLE_OPENSSL)
message(STATUS "OpenSSL support enabled")
set(HAVE_OPENSSL TRUE)
@@ -104,7 +104,7 @@ if (OPENSSL_FOUND)
endif ()
if (NOT HAVE_OPENSSL)
- set (OPENSSL_INCLUDE_DIR "")
+ set(OPENSSL_INCLUDE_DIR "")
endif ()
if (APPLE OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
@@ -129,12 +129,12 @@ mark_as_advanced(LIBRT_LIBRARIES LIBPTHREAD_LIBRARIES
LIBGCRYPT_LIBRARIES OPENSSL_LIBRARIES SYS_RND_INCLUDE_DIR
LIBGCRYPT_INCLUDE_DIR SYS_RND_HDR)
-math(EXPR SHM_BUFFER_EXPR "1 << 20")
+math(EXPR SHM_BUFFER_EXPR "1 << 17")
set(SHM_BUFFER_SIZE ${SHM_BUFFER_EXPR} CACHE STRING
"Number of blocks in SDU buffer, must be a power of 2")
-set(SYS_MAX_FLOWS 4096 CACHE STRING
+set(SYS_MAX_FLOWS 10240 CACHE STRING
"Maximum number of total flows for this system")
-set(AP_MAX_FLOWS 1024 CACHE STRING
+set(AP_MAX_FLOWS 4096 CACHE STRING
"Maximum number of flows in an application")
set(AP_RES_FDS 64 CACHE STRING
"Number of reserved flow descriptors per application")
@@ -148,7 +148,7 @@ 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
+ set(PTHREAD_COND_CLOCK "CLOCK_REALTIME" CACHE INTERNAL
"Clock to use for condition variable timing")
endif ()
set(SOCKET_TIMEOUT 1000 CACHE STRING
@@ -168,17 +168,24 @@ set(SHM_RDRB_BLOCK_SIZE "sysconf(_SC_PAGESIZE)" CACHE STRING
set(SHM_RBUFF_LOCKLESS 0 CACHE BOOL
"Enable shared memory lockless rbuff support")
-set(SOURCE_FILES
+set(SOURCE_FILES_DEV
# Add source files here
- bitmap.c
- btree.c
cacep.c
- crc32.c
dev.c
frct_pci.c
+ timerwheel.c
+ )
+
+set(SOURCE_FILES_IRM
+ irm.c
+)
+
+set(SOURCE_FILES_COMMON
+ bitmap.c
+ btree.c
+ crc32.c
hash.c
hashtable.c
- irm.c
list.c
lockfile.c
logs.c
@@ -195,29 +202,48 @@ set(SOURCE_FILES
shm_rdrbuff.c
sockets.c
time_utils.c
- timerwheel.c
tpm.c
utils.c
- )
+)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/config.h.in"
"${CMAKE_CURRENT_BINARY_DIR}/config.h" @ONLY)
-add_library(ouroboros SHARED ${SOURCE_FILES} ${IRM_PROTO_SRCS}
+add_library(ouroboros-common SHARED ${SOURCE_FILES_COMMON} ${IRM_PROTO_SRCS}
+ ${IPCP_PROTO_SRCS} ${DIF_CONFIG_PROTO_SRCS})
+
+add_library(ouroboros-dev SHARED ${SOURCE_FILES_DEV} ${IRM_PROTO_SRCS}
${IPCP_PROTO_SRCS} ${DIF_CONFIG_PROTO_SRCS} ${CACEP_PROTO_SRCS})
+add_library(ouroboros-irm SHARED ${SOURCE_FILES_IRM} ${IRM_PROTO_SRCS}
+ ${IPCP_PROTO_SRCS} ${DIF_CONFIG_PROTO_SRCS})
+
include(AddCompileFlags)
if (CMAKE_BUILD_TYPE MATCHES Debug)
- add_compile_flags(ouroboros -DCONFIG_OUROBOROS_DEBUG)
+ add_compile_flags(ouroboros-common -DCONFIG_OUROBOROS_DEBUG)
+ add_compile_flags(ouroboros-dev -DCONFIG_OUROBOROS_DEBUG)
+ add_compile_flags(ouroboros-irm -DCONFIG_OUROBOROS_DEBUG)
endif (CMAKE_BUILD_TYPE MATCHES Debug)
-target_link_libraries(ouroboros ${LIBRT_LIBRARIES}
+target_link_libraries(ouroboros-common ${LIBRT_LIBRARIES}
${LIBPTHREAD_LIBRARIES} ${PROTOBUF_C_LIBRARY} ${OPENSSL_LIBRARIES}
${LIBGCRYPT_LIBRARIES} ${FUSE_LIBRARIES})
-install(TARGETS ouroboros LIBRARY DESTINATION usr/lib)
+target_link_libraries(ouroboros-dev ouroboros-common)
+
+target_link_libraries(ouroboros-irm ouroboros-common)
+
+install(TARGETS ouroboros-common LIBRARY DESTINATION usr/lib)
+install(TARGETS ouroboros-dev LIBRARY DESTINATION usr/lib)
+install(TARGETS ouroboros-irm LIBRARY DESTINATION usr/lib)
+
+target_include_directories(ouroboros-common PUBLIC ${CMAKE_CURRENT_BINARY_DIR}
+ ${SYS_RND_HDR} ${LIBGCRYPT_INCLUDE_DIR} ${OPENSSL_INCLUDE_DIR})
+
+target_include_directories(ouroboros-dev PUBLIC ${CMAKE_CURRENT_BINARY_DIR}
+ ${SYS_RND_HDR} ${LIBGCRYPT_INCLUDE_DIR} ${OPENSSL_INCLUDE_DIR})
-target_include_directories(ouroboros PUBLIC ${CMAKE_CURRENT_BINARY_DIR}
+target_include_directories(ouroboros-irm PUBLIC ${CMAKE_CURRENT_BINARY_DIR}
${SYS_RND_HDR} ${LIBGCRYPT_INCLUDE_DIR} ${OPENSSL_INCLUDE_DIR})
add_subdirectory(tests)
diff --git a/src/lib/dev.c b/src/lib/dev.c
index 9cb6f2ed..99d3ecec 100644
--- a/src/lib/dev.c
+++ b/src/lib/dev.c
@@ -595,11 +595,16 @@ static int flow_init(int port_id,
return fd;
}
-int ouroboros_init(const char * ap_name)
+__attribute__((constructor)) static void init(int argc,
+ char ** argv,
+ char ** envp)
{
- int i;
- int j;
- int ret = -ENOMEM;
+ const char * ap_name = argv[0];
+ int i;
+ int j;
+
+ (void) argc;
+ (void) envp;
assert(ai.ap_name == NULL);
@@ -618,10 +623,8 @@ int ouroboros_init(const char * ap_name)
goto fail_fqset;
ai.rdrb = shm_rdrbuff_open();
- if (ai.rdrb == NULL) {
- ret = -EIRMD;
+ if (ai.rdrb == NULL)
goto fail_rdrb;
- }
ai.flows = malloc(sizeof(*ai.flows) * AP_MAX_FLOWS);
if (ai.flows == NULL)
@@ -651,10 +654,8 @@ int ouroboros_init(const char * ap_name)
if (ai.ap_name == NULL)
goto fail_ap_name;
- if (api_announce((char *) ai.ap_name)) {
- ret = -EIRMD;
+ if (api_announce((char *) ai.ap_name))
goto fail_announce;
- }
}
for (i = 0; i < SYS_MAX_FLOWS; ++i) {
@@ -680,7 +681,7 @@ int ouroboros_init(const char * ap_name)
if (ai.tw == NULL)
goto fail_timerwheel;
- return 0;
+ return;
fail_timerwheel:
pthread_rwlock_destroy(&ai.lock);
@@ -710,10 +711,12 @@ int ouroboros_init(const char * ap_name)
fail_fqueues:
bmp_destroy(ai.fds);
fail_fds:
- return ret;
+ fprintf(stderr, "FATAL: ouroboros-dev init failed. "
+ "Make sure an IRMd is running.\n\n");
+ exit(EXIT_FAILURE);
}
-void ouroboros_fini()
+__attribute__((destructor)) static void fini(void)
{
int i = 0;
diff --git a/src/lib/tests/CMakeLists.txt b/src/lib/tests/CMakeLists.txt
index 0edd4a42..a9ff207e 100644
--- a/src/lib/tests/CMakeLists.txt
+++ b/src/lib/tests/CMakeLists.txt
@@ -22,7 +22,7 @@ create_test_sourcelist(${PARENT_DIR}_tests test_suite.c
add_executable(${PARENT_DIR}_test EXCLUDE_FROM_ALL ${${PARENT_DIR}_tests})
-target_link_libraries(${PARENT_DIR}_test ouroboros)
+target_link_libraries(${PARENT_DIR}_test ouroboros-common)
add_dependencies(check ${PARENT_DIR}_test)
diff --git a/src/tools/cbr/CMakeLists.txt b/src/tools/cbr/CMakeLists.txt
index 1883141c..2a64a65b 100644
--- a/src/tools/cbr/CMakeLists.txt
+++ b/src/tools/cbr/CMakeLists.txt
@@ -11,6 +11,6 @@ set(SOURCE_FILES
add_executable(cbr ${SOURCE_FILES})
-target_link_libraries(cbr LINK_PUBLIC ouroboros)
+target_link_libraries(cbr LINK_PUBLIC ouroboros-dev)
install(TARGETS cbr RUNTIME DESTINATION usr/bin)
diff --git a/src/tools/cbr/cbr.c b/src/tools/cbr/cbr.c
index 14613198..afa9b535 100644
--- a/src/tools/cbr/cbr.c
+++ b/src/tools/cbr/cbr.c
@@ -72,7 +72,6 @@ int main(int argc, char ** argv)
int ret = 0;
char * rem = NULL;
char * s_apn = NULL;
- char ** argv_dup = argv;
bool server = false;
@@ -129,18 +128,8 @@ int main(int argc, char ** argv)
}
if (server) {
- if (ouroboros_init(argv_dup[0]) < 0) {
- printf("Failed to init.\n");
- exit(EXIT_FAILURE);
- }
-
ret = server_main();
} else {
- if (ouroboros_init(NULL) < 0) {
- printf("Failed to init.\n");
- exit(EXIT_FAILURE);
- }
-
if (s_apn == NULL) {
printf("No server specified.\n");
usage();
@@ -150,7 +139,5 @@ int main(int argc, char ** argv)
ret = client_main(s_apn, duration, size, rate, flood, sleep);
}
- ouroboros_fini();
-
return ret;
}
diff --git a/src/tools/echo/CMakeLists.txt b/src/tools/echo/CMakeLists.txt
index 7cecfe50..0cca8466 100644
--- a/src/tools/echo/CMakeLists.txt
+++ b/src/tools/echo/CMakeLists.txt
@@ -11,6 +11,6 @@ set(SOURCE_FILES
add_executable(echo-app ${SOURCE_FILES})
-target_link_libraries(echo-app LINK_PUBLIC ouroboros)
+target_link_libraries(echo-app LINK_PUBLIC ouroboros-dev)
install(TARGETS echo-app RUNTIME DESTINATION usr/bin)
diff --git a/src/tools/echo/echo.c b/src/tools/echo/echo.c
index d07d99a3..91ab552d 100644
--- a/src/tools/echo/echo.c
+++ b/src/tools/echo/echo.c
@@ -41,7 +41,6 @@ static void usage(void)
int main(int argc, char ** argv)
{
int ret = -1;
- char ** argv_dup = argv;
bool server = false;
argc--;
@@ -58,21 +57,10 @@ int main(int argc, char ** argv)
argv++;
}
- if (server) {
- if (ouroboros_init(argv_dup[0])) {
- printf("Failed to init AP.\n");
- return -1;
- }
+ if (server)
ret = server_main();
- } else {
- if (ouroboros_init(NULL)) {
- printf("Failed to init AP.\n");
- return -1;
- }
+ else
ret = client_main();
- }
-
- ouroboros_fini();
return ret;
}
diff --git a/src/tools/echo/echo_server.c b/src/tools/echo/echo_server.c
index 1e57ed60..14e0aa58 100644
--- a/src/tools/echo/echo_server.c
+++ b/src/tools/echo/echo_server.c
@@ -27,14 +27,6 @@
#include <ouroboros/dev.h>
-void shutdown_server(int signo)
-{
- (void) signo;
-
- ouroboros_fini();
- exit(EXIT_SUCCESS);
-}
-
int server_main(void)
{
int fd = 0;
@@ -44,12 +36,6 @@ int server_main(void)
printf("Starting the server.\n");
- /* Manual cleanup is required for now */
- if (signal(SIGINT, shutdown_server) == SIG_ERR) {
- printf("Can't install signal handler.\n");
- return -1;
- }
-
while (true) {
fd = flow_accept(&qs, NULL);
if (fd < 0) {
diff --git a/src/tools/irm/CMakeLists.txt b/src/tools/irm/CMakeLists.txt
index 895bc746..03c1490a 100644
--- a/src/tools/irm/CMakeLists.txt
+++ b/src/tools/irm/CMakeLists.txt
@@ -29,6 +29,6 @@ set(SOURCE_FILES
add_executable(irm ${SOURCE_FILES})
-target_link_libraries(irm LINK_PUBLIC ouroboros)
+target_link_libraries(irm LINK_PUBLIC ouroboros-irm)
install(TARGETS irm RUNTIME DESTINATION sbin)
diff --git a/src/tools/operf/CMakeLists.txt b/src/tools/operf/CMakeLists.txt
index 906bab7b..271a992d 100644
--- a/src/tools/operf/CMakeLists.txt
+++ b/src/tools/operf/CMakeLists.txt
@@ -16,6 +16,6 @@ set(SOURCE_FILES
add_executable(operf ${SOURCE_FILES})
-target_link_libraries(operf LINK_PUBLIC ${LIBM_LIBRARIES} ouroboros)
+target_link_libraries(operf LINK_PUBLIC ${LIBM_LIBRARIES} ouroboros-dev)
install(TARGETS operf RUNTIME DESTINATION usr/bin)
diff --git a/src/tools/operf/operf.c b/src/tools/operf/operf.c
index 62adcdb7..1c975ae1 100644
--- a/src/tools/operf/operf.c
+++ b/src/tools/operf/operf.c
@@ -88,7 +88,6 @@ int main(int argc, char ** argv)
int ret = -1;
char * rem = NULL;
bool serv = false;
- char ** argv_dup = argv;
argc--;
argv++;
@@ -141,18 +140,8 @@ int main(int argc, char ** argv)
}
if (serv) {
- if (ouroboros_init(argv_dup[0])) {
- printf("Failed to init AP.\n");
- exit(EXIT_FAILURE);
- }
-
ret = server_main();
} else {
- if (ouroboros_init(NULL)) {
- printf("Failed to init AP.\n");
- exit(EXIT_FAILURE);
- }
-
if (client.s_apn == NULL) {
printf("No server specified.\n");
usage();
@@ -172,8 +161,6 @@ int main(int argc, char ** argv)
ret = client_main();
}
- ouroboros_fini();
-
if (ret < 0)
exit(EXIT_FAILURE);
diff --git a/src/tools/oping/CMakeLists.txt b/src/tools/oping/CMakeLists.txt
index b95add7e..d3146780 100644
--- a/src/tools/oping/CMakeLists.txt
+++ b/src/tools/oping/CMakeLists.txt
@@ -18,6 +18,6 @@ set(SOURCE_FILES
add_executable(oping ${SOURCE_FILES})
-target_link_libraries(oping LINK_PUBLIC ${LIBM_LIBRARIES} ouroboros)
+target_link_libraries(oping LINK_PUBLIC ${LIBM_LIBRARIES} ouroboros-dev)
install(TARGETS oping RUNTIME DESTINATION usr/bin)
diff --git a/src/tools/oping/oping.c b/src/tools/oping/oping.c
index bca4f80b..a76f0fec 100644
--- a/src/tools/oping/oping.c
+++ b/src/tools/oping/oping.c
@@ -101,7 +101,6 @@ int main(int argc, char ** argv)
int ret = -1;
char * rem = NULL;
bool serv = false;
- char ** argv_dup = argv;
argc--;
argv++;
@@ -140,18 +139,8 @@ int main(int argc, char ** argv)
}
if (serv) {
- if (ouroboros_init(argv_dup[0])) {
- printf("Failed to init AP.\n");
- exit(EXIT_FAILURE);
- }
-
ret = server_main();
} else {
- if (ouroboros_init(NULL)) {
- printf("Failed to init AP.\n");
- exit(EXIT_FAILURE);
- }
-
if (client.s_apn == NULL) {
printf("No server specified.\n");
usage();
@@ -180,8 +169,6 @@ int main(int argc, char ** argv)
ret = client_main();
}
- ouroboros_fini();
-
if (ret < 0)
exit(EXIT_FAILURE);