diff options
| -rw-r--r-- | src/ipcpd/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/ipcpd/config.h.in | 1 | ||||
| -rw-r--r-- | src/ipcpd/normal/connmgr.c | 7 | ||||
| -rw-r--r-- | src/ipcpd/normal/dht.c | 2 | ||||
| -rw-r--r-- | src/ipcpd/normal/dht.h | 2 | ||||
| -rw-r--r-- | src/ipcpd/normal/dir.c | 10 | ||||
| -rw-r--r-- | src/ipcpd/normal/dir.h | 2 | 
7 files changed, 24 insertions, 2 deletions
diff --git a/src/ipcpd/CMakeLists.txt b/src/ipcpd/CMakeLists.txt index 6679ab50..5402dc80 100644 --- a/src/ipcpd/CMakeLists.txt +++ b/src/ipcpd/CMakeLists.txt @@ -14,6 +14,8 @@ set(IPCP_SCHED_THR_MUL 2 CACHE STRING    "Number of scheduler threads per QoS cube")  set(DISABLE_CORE_LOCK FALSE CACHE BOOL    "Disable locking performance threads to a core") +set(IPCP_CONN_WAIT_DIR FALSE CACHE BOOL +  "Check the running state of the directory when adding a dt connection")  if ((IPCP_QOS_CUBE_BE_PRIO LESS 0) OR (IPCP_QOS_CUBE_BE_PRIO GREATER 99))    message(FATAL_ERROR "Invalid priority for best effort QoS cube") diff --git a/src/ipcpd/config.h.in b/src/ipcpd/config.h.in index de7d4498..197f51bc 100644 --- a/src/ipcpd/config.h.in +++ b/src/ipcpd/config.h.in @@ -44,6 +44,7 @@  #define IPCP_SCHED_THR_MUL  @IPCP_SCHED_THR_MUL@  #define PFT_SIZE            @PFT_SIZE@ +#cmakedefine IPCP_CONN_WAIT_DIR  #cmakedefine DISABLE_CORE_LOCK  #cmakedefine IPCP_FLOW_STATS diff --git a/src/ipcpd/normal/connmgr.c b/src/ipcpd/normal/connmgr.c index 843eb280..6301baed 100644 --- a/src/ipcpd/normal/connmgr.c +++ b/src/ipcpd/normal/connmgr.c @@ -33,6 +33,7 @@  #include "comp.h"  #include "connmgr.h" +#include "dir.h"  #include "enroll.h"  #include "ipcp.h" @@ -376,7 +377,8 @@ int connmgr_alloc(enum comp_id  id,                  return -1;          } -        if (connmgr.comps[id].info.pref_version != conn->conn_info.pref_version) { +        if (connmgr.comps[id].info.pref_version != +            conn->conn_info.pref_version) {                  log_dbg("Unknown protocol version.");                  flow_dealloc(conn->flow_info.fd);                  return -1; @@ -391,6 +393,9 @@ int connmgr_alloc(enum comp_id  id,          switch (id) {          case COMPID_DT:                  notifier_event(NOTIFY_DT_CONN_ADD, conn); +#ifdef IPCP_CONN_WAIT_DIR +                dir_wait_running(); +#endif                  break;          case COMPID_MGMT:                  notifier_event(NOTIFY_MGMT_CONN_ADD, conn); diff --git a/src/ipcpd/normal/dht.c b/src/ipcpd/normal/dht.c index 1fabcb84..5e63f748 100644 --- a/src/ipcpd/normal/dht.c +++ b/src/ipcpd/normal/dht.c @@ -295,7 +295,7 @@ static int dht_set_state(struct dht *   dht,          return 0;  } -static int dht_wait_running(struct dht * dht) +int dht_wait_running(struct dht * dht)  {          int ret = 0; diff --git a/src/ipcpd/normal/dht.h b/src/ipcpd/normal/dht.h index b49e860d..00410ff4 100644 --- a/src/ipcpd/normal/dht.h +++ b/src/ipcpd/normal/dht.h @@ -47,4 +47,6 @@ int          dht_unreg(struct dht *    dht,  uint64_t     dht_query(struct dht *    dht,                         const uint8_t * key); +int          dht_wait_running(struct dht * dht); +  #endif /* OUROBOROS_IPCPD_NORMAL_DHT_H */ diff --git a/src/ipcpd/normal/dir.c b/src/ipcpd/normal/dir.c index 2428e1b6..1c883974 100644 --- a/src/ipcpd/normal/dir.c +++ b/src/ipcpd/normal/dir.c @@ -84,3 +84,13 @@ uint64_t dir_query(const uint8_t * hash)  {          return dht_query(dht, hash);  } + +int dir_wait_running(void) +{ +        if (dht_wait_running(dht)) { +                log_warn("Directory did not bootstrap."); +                return -1; +        } + +        return 0; +} diff --git a/src/ipcpd/normal/dir.h b/src/ipcpd/normal/dir.h index 365341ad..eb7a8aea 100644 --- a/src/ipcpd/normal/dir.h +++ b/src/ipcpd/normal/dir.h @@ -35,4 +35,6 @@ int      dir_unreg(const uint8_t * hash);  uint64_t dir_query(const uint8_t * hash); +int      dir_wait_running(void); +  #endif /* OUROBOROS_IPCPD_NORMAL_DIR_H */  | 
