summaryrefslogtreecommitdiff
path: root/src/ipcpd/ipcp.c
diff options
context:
space:
mode:
authorSander Vrijders <sander.vrijders@ugent.be>2017-12-03 21:30:31 +0100
committerDimitri Staessens <dimitri.staessens@ugent.be>2017-12-04 16:23:55 +0100
commita1b982bf4c052360cd854b9e4c97592893692701 (patch)
treec9db1dae875b5e901b37e6f198729a5e25dc443b /src/ipcpd/ipcp.c
parent961bb67e7dd120d19742ef5c51fbd80c2a18cb12 (diff)
downloadouroboros-a1b982bf4c052360cd854b9e4c97592893692701.tar.gz
ouroboros-a1b982bf4c052360cd854b9e4c97592893692701.zip
ipcpd: Make hash algorithm configurable
This makes the hashing algorithm configurable once more for the local and the shim-eth-llc, since their scope is so small that it is up to the network administrator to select a correct algorithm for the whole network. Signed-off-by: Sander Vrijders <sander.vrijders@ugent.be> Signed-off-by: Dimitri Staessens <dimitri.staessens@ugent.be>
Diffstat (limited to 'src/ipcpd/ipcp.c')
-rw-r--r--src/ipcpd/ipcp.c48
1 files changed, 23 insertions, 25 deletions
diff --git a/src/ipcpd/ipcp.c b/src/ipcpd/ipcp.c
index 42064817..84c42b98 100644
--- a/src/ipcpd/ipcp.c
+++ b/src/ipcpd/ipcp.c
@@ -243,23 +243,37 @@ static void * mainloop(void * o)
conf.addr_auth_type = conf_msg->addr_auth_type;
conf.routing_type = conf_msg->routing_type;
conf.pff_type = conf_msg->pff_type;
+ }
+
+ if (conf_msg->ipcp_type == IPCP_SHIM_ETH_LLC)
+ conf.if_name = conf_msg->if_name;
+
+ if (conf_msg->ipcp_type == IPCP_SHIM_UDP) {
+ conf.ip_addr = conf_msg->ip_addr;
+ conf.dns_addr = conf_msg->dns_addr;
+
+ conf.dif_info.dir_hash_algo = HASH_MD5;
+ dif_info.dir_hash_algo = HASH_MD5;
+ }
+ /* Only shim-udp needs a fixed hash algorithm */
+ if (conf_msg->ipcp_type != IPCP_SHIM_UDP) {
switch(conf_msg->dif_info->dir_hash_algo) {
case DIR_HASH_SHA3_224:
- conf.dif_info.dir_hash_algo
- = 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;
+ conf.dif_info.dir_hash_algo =
+ HASH_SHA3_256;
break;
case DIR_HASH_SHA3_384:
- conf.dif_info.dir_hash_algo
- = 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;
+ conf.dif_info.dir_hash_algo =
+ HASH_SHA3_512;
break;
default:
assert(false);
@@ -269,23 +283,7 @@ static void * mainloop(void * o)
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;
- 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;
- dif_info.dir_hash_algo = HASH_SHA3_256;
- ipcpi.dir_hash_algo = HASH_SHA3_256;
- }
-
- if (conf_msg->ipcp_type == IPCP_LOCAL) {
- dif_info.dir_hash_algo = HASH_SHA3_256;
- ipcpi.dir_hash_algo = HASH_SHA3_256;
- }
+ ipcpi.dir_hash_algo = conf.dif_info.dir_hash_algo;
ret_msg.result = ipcpi.ops->ipcp_bootstrap(&conf);
if (ret_msg.result == 0) {