diff options
| author | dimitri staessens <dimitri.staessens@ugent.be> | 2017-10-12 02:15:39 +0200 | 
|---|---|---|
| committer | dimitri staessens <dimitri.staessens@ugent.be> | 2017-10-14 13:19:10 +0200 | 
| commit | bedd1d4eadde9ab64f924c69eba716b015599e67 (patch) | |
| tree | b521ef89c8752334448bee1582b51dbe97851839 /src/ipcpd | |
| parent | a483bc8597e5c19e796dc55c0587f1a045bc7281 (diff) | |
| download | ouroboros-bedd1d4eadde9ab64f924c69eba716b015599e67.tar.gz ouroboros-bedd1d4eadde9ab64f924c69eba716b015599e67.zip | |
lib: Deprecate ouroboros_init and ourboros_fini
This commit deprecates ouroboros_init and ouroboros_fini and adds them
as a constructor or destructor, causing these function to be run
automatically when a program that links to the library calls and exits
main(). For this to fully work, the library had to be split so that we
can avoid the irmd calling these functions (the IRMd has to create the
shm structures on which these calls depend).
The library is split in 3 parts: libouroboros-dev, libouroboros-irm
and libouroboros-common. The latter is linked to the other two so that
including libouroboros-dev or libouroboros-irm will also link
libouroboros-common.
Diffstat (limited to 'src/ipcpd')
| -rw-r--r-- | src/ipcpd/ipcp.c | 17 | ||||
| -rw-r--r-- | src/ipcpd/ipcp.h | 1 | ||||
| -rw-r--r-- | src/ipcpd/local/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/ipcpd/local/main.c | 2 | ||||
| -rw-r--r-- | src/ipcpd/normal/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/ipcpd/normal/dht.c | 9 | ||||
| -rw-r--r-- | src/ipcpd/normal/main.c | 2 | ||||
| -rw-r--r-- | src/ipcpd/normal/pol/tests/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/ipcpd/normal/tests/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/ipcpd/shim-eth-llc/CMakeLists.txt | 4 | ||||
| -rw-r--r-- | src/ipcpd/shim-eth-llc/main.c | 2 | ||||
| -rw-r--r-- | src/ipcpd/shim-udp/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/ipcpd/shim-udp/main.c | 2 | 
13 files changed, 16 insertions, 33 deletions
| 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, ð_llc_ops) < 0) +        if (ipcp_init(argc, argv, ð_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);          } | 
