summaryrefslogtreecommitdiff
path: root/src/ipcpd
diff options
context:
space:
mode:
Diffstat (limited to 'src/ipcpd')
-rw-r--r--src/ipcpd/ipcp.c53
-rw-r--r--src/ipcpd/normal/dt_pci.c1
-rw-r--r--src/ipcpd/shim-eth-llc/CMakeLists.txt6
3 files changed, 46 insertions, 14 deletions
diff --git a/src/ipcpd/ipcp.c b/src/ipcpd/ipcp.c
index 48ff046c..b2afdf99 100644
--- a/src/ipcpd/ipcp.c
+++ b/src/ipcpd/ipcp.c
@@ -23,6 +23,7 @@
#define OUROBOROS_PREFIX "ipcpd/ipcp"
#include <ouroboros/config.h>
+#include <ouroboros/hash.h>
#include <ouroboros/logs.h>
#include <ouroboros/time_utils.h>
#include <ouroboros/utils.h>
@@ -174,7 +175,7 @@ static void * mainloop(void * o)
strcpy(conf.dif_info.dif_name,
conf_msg->dif_info->dif_name);
if (conf.dif_info.dif_name == NULL) {
- ret_msg.has_result = true;
+ log_err("No DIF name provided.");
ret_msg.result = -1;
break;
}
@@ -186,21 +187,55 @@ static void * mainloop(void * o)
conf.dt_gam_type = conf_msg->dt_gam_type;
conf.rm_gam_type = conf_msg->rm_gam_type;
conf.routing_type = conf_msg->routing_type;
- conf.dif_info.dir_hash_algo =
- conf_msg->dif_info->dir_hash_algo;
+
+ switch(conf_msg->dif_info->dir_hash_algo) {
+ case DIR_HASH_SHA3_224:
+ conf.dif_info.dir_hash_algo
+ = HASH_SHA3_224;
+ break;
+ case DIR_HASH_SHA3_256:
+ conf.dif_info.dir_hash_algo
+ = HASH_SHA3_256;
+ break;
+ case DIR_HASH_SHA3_384:
+ conf.dif_info.dir_hash_algo
+ = HASH_SHA3_384;
+ break;
+ case DIR_HASH_SHA3_512:
+ conf.dif_info.dir_hash_algo
+ = HASH_SHA3_512;
+ break;
+ default:
+ assert(false);
+ }
+
+ dif_info.dir_hash_algo =
+ conf.dif_info.dir_hash_algo;
}
if (conf_msg->ipcp_type == IPCP_SHIM_UDP) {
- conf.ip_addr = conf_msg->ip_addr;
- conf.dns_addr = conf_msg->dns_addr;
+ conf.ip_addr = conf_msg->ip_addr;
+ conf.dns_addr = conf_msg->dns_addr;
+ dif_info.dir_hash_algo = HASH_MD5;
+ ipcpi.dir_hash_algo = HASH_MD5;
}
- if (conf_msg->ipcp_type == IPCP_SHIM_ETH_LLC)
- conf.if_name = conf_msg->if_name;
+ if (conf_msg->ipcp_type == IPCP_SHIM_ETH_LLC) {
+ conf.if_name = conf_msg->if_name;
+ dif_info.dir_hash_algo = HASH_SHA3_256;
+ ipcpi.dir_hash_algo = HASH_SHA3_256;
+ }
- ipcpi.dir_hash_algo = conf_msg->dif_info->dir_hash_algo;
+ if (conf_msg->ipcp_type == IPCP_LOCAL) {
+ dif_info.dir_hash_algo = HASH_SHA3_256;
+ ipcpi.dir_hash_algo = HASH_SHA3_256;
+ }
ret_msg.result = ipcpi.ops->ipcp_bootstrap(&conf);
+ if (ret_msg.result == 0) {
+ ret_msg.dif_info = &dif_info;
+ dif_info.dif_name = conf.dif_info.dif_name;
+ }
break;
case IPCP_MSG_CODE__IPCP_ENROLL:
ret_msg.has_result = true;
@@ -220,7 +255,7 @@ static void * mainloop(void * o)
ret_msg.result = ipcpi.ops->ipcp_enroll(msg->dst_name,
&info);
if (ret_msg.result == 0) {
- ret_msg.dif_info = &dif_info;
+ ret_msg.dif_info = &dif_info;
dif_info.dir_hash_algo = info.dir_hash_algo;
dif_info.dif_name = info.dif_name;
}
diff --git a/src/ipcpd/normal/dt_pci.c b/src/ipcpd/normal/dt_pci.c
index a4f99142..2a252545 100644
--- a/src/ipcpd/normal/dt_pci.c
+++ b/src/ipcpd/normal/dt_pci.c
@@ -22,7 +22,6 @@
#include <ouroboros/config.h>
#include <ouroboros/errno.h>
-#include <ouroboros/crc32.h>
#include <ouroboros/rib.h>
#include "dt_pci.h"
diff --git a/src/ipcpd/shim-eth-llc/CMakeLists.txt b/src/ipcpd/shim-eth-llc/CMakeLists.txt
index 08f50c04..12bfb42e 100644
--- a/src/ipcpd/shim-eth-llc/CMakeLists.txt
+++ b/src/ipcpd/shim-eth-llc/CMakeLists.txt
@@ -32,12 +32,10 @@ add_executable(ipcpd-shim-eth-llc ${SHIM_ETH_LLC_SOURCES} ${IPCP_SOURCES}
target_link_libraries(ipcpd-shim-eth-llc LINK_PUBLIC ouroboros
${PROTOBUF_C_LIBRARY})
-if (${NETMAP_C_INCLUDE_DIR} STREQUAL "NETMAP_C_INCLUDE_DIR-NOTFOUND")
- message(STATUS "Could not find netmap. Install for better performance.")
-else ()
+if (NOT ${NETMAP_C_INCLUDE_DIR} STREQUAL "NETMAP_C_INCLUDE_DIR-NOTFOUND")
message(STATUS "Found netmap headers in ${NETMAP_C_INCLUDE_DIR}")
include_directories(${NETMAP_C_INCLUDE_DIR})
- add_compile_flags(ipcpd-shim-eth-llc -DHAVE_NETMAP)
+ set(HAVE_NETMAP "1" CACHE STRING "Have netmap")
test_and_set_c_compiler_flag_global(-std=c99)
endif ()