summaryrefslogtreecommitdiff
path: root/src/tools/irm
diff options
context:
space:
mode:
authorSander Vrijders <sander.vrijders@ugent.be>2017-07-12 15:18:15 +0200
committerSander Vrijders <sander.vrijders@ugent.be>2017-07-12 16:12:50 +0200
commitd088c3395a28bce3e1530db5aeacbcf59ab16619 (patch)
treed1da4fcf7cc2875b077d767775359ad92dc10d7c /src/tools/irm
parent3e9ee89b3ccf48dcabf7de2ecafcfbf637595cfe (diff)
downloadouroboros-d088c3395a28bce3e1530db5aeacbcf59ab16619.tar.gz
ouroboros-d088c3395a28bce3e1530db5aeacbcf59ab16619.zip
ipcpd, lib, irmd: Hardcode shim hash algorithms
This will hardcode the shim hash algorithms as they don't have an enrollment phase. Fixes #44
Diffstat (limited to 'src/tools/irm')
-rw-r--r--src/tools/irm/irm_ipcp_bootstrap.c81
1 files changed, 42 insertions, 39 deletions
diff --git a/src/tools/irm/irm_ipcp_bootstrap.c b/src/tools/irm/irm_ipcp_bootstrap.c
index 6457a983..6277dee4 100644
--- a/src/tools/irm/irm_ipcp_bootstrap.c
+++ b/src/tools/irm/irm_ipcp_bootstrap.c
@@ -46,8 +46,6 @@
#define SHA3_384 "SHA3_384"
#define SHA3_512 "SHA3_512"
-#define DEFAULT_HASH_ALGO HASH_SHA3_256
-#define DEFAULT_HASH_STR SHA3_256
#define DEFAULT_ADDR_SIZE 4
#define DEFAULT_FD_SIZE 2
#define DEFAULT_DDNS 0
@@ -55,6 +53,7 @@
#define DEFAULT_DT_GAM COMPLETE
#define DEFAULT_RM_GAM COMPLETE
#define DEFAULT_ROUTING LINK_STATE
+#define DEFAULT_HASH_ALGO HASH_SHA3_256
#define ADDR_AUTH_FLAT "flat"
#define DT_GAM_COMPLETE "complete"
#define RM_GAM_COMPLETE "complete"
@@ -67,36 +66,35 @@ static void usage(void)
" name <ipcp name>\n"
" dif <DIF name>\n"
" type [TYPE]\n"
- " [hash [ALGORITHM] (default: %s)]\n"
"where TYPE = {" NORMAL " " LOCAL " "
- SHIM_UDP " " SHIM_ETH_LLC"},\n"
- " ALGORITHM = { " CRC32 " " MD5 " "
- SHA3_224 " " SHA3_256 " " SHA3_384 " " SHA3_512 "}.\n\n"
+ SHIM_UDP " " SHIM_ETH_LLC"},\n\n"
"if TYPE == " NORMAL "\n"
" [addr <address size> (default: %d)]\n"
" [fd <fd size> (default: %d)]\n"
- " [ttl <add time to live value in the PCI>]\n"
+ " [ttl (add time to live value in the PCI)]\n"
" [addr_auth <address policy> (default: %s)]\n"
" [dt_gam <data transfer graph adjacency manager>"
" (default: %s)]\n"
" [rm_gam <rib manager graph adjacency manager>"
" (default: %s)]\n"
" [routing <routing policy> (default: %s)]\n"
+ " [hash [ALGORITHM] (default: %s)]\n"
+ "where ALGORITHM = {" CRC32 " " MD5 " "
+ SHA3_224 " " SHA3_256 " " SHA3_384 " " SHA3_512 "}\n"
"if TYPE == " SHIM_UDP "\n"
" ip <IP address in dotted notation>\n"
" [dns <DDNS IP address in dotted notation>"
- " (default = none: %d)]\n"
+ " (default: none)]\n"
"if TYPE == " SHIM_ETH_LLC "\n"
" if_name <interface name>\n",
- DEFAULT_HASH_STR, DEFAULT_ADDR_SIZE, DEFAULT_FD_SIZE,
+ DEFAULT_ADDR_SIZE, DEFAULT_FD_SIZE,
ADDR_AUTH_FLAT, DT_GAM_COMPLETE, RM_GAM_COMPLETE,
- ROUTING_LINK_STATE, DEFAULT_DDNS);
+ ROUTING_LINK_STATE, SHA3_256);
}
int do_bootstrap_ipcp(int argc, char ** argv)
{
char * name = NULL;
- char * hash = DEFAULT_HASH_STR;
pid_t api;
struct ipcp_config conf;
uint8_t addr_size = DEFAULT_ADDR_SIZE;
@@ -106,6 +104,7 @@ int do_bootstrap_ipcp(int argc, char ** argv)
enum pol_gam dt_gam_type = DEFAULT_DT_GAM;
enum pol_gam rm_gam_type = DEFAULT_RM_GAM;
enum pol_routing routing_type = DEFAULT_ROUTING;
+ enum hash_algo hash_algo = DEFAULT_HASH_ALGO;
uint32_t ip_addr = 0;
uint32_t dns_addr = DEFAULT_DDNS;
char * ipcp_type = NULL;
@@ -123,17 +122,26 @@ int do_bootstrap_ipcp(int argc, char ** argv)
} else if (matches(*argv, "name") == 0) {
name = *(argv + 1);
} else if (matches(*argv, "hash") == 0) {
- hash = *(argv + 1);
+ if (strcmp(*(argv + 1), CRC32) == 0)
+ hash_algo = HASH_CRC32;
+ else if (strcmp(*(argv + 1), MD5) == 0)
+ hash_algo = HASH_MD5;
+ else if (strcmp(*(argv + 1), SHA3_224) == 0)
+ hash_algo = HASH_SHA3_224;
+ else if (strcmp(*(argv + 1), SHA3_256) == 0)
+ hash_algo = HASH_SHA3_256;
+ else if (strcmp(*(argv + 1), SHA3_384) == 0)
+ hash_algo = HASH_SHA3_384;
+ else if (strcmp(*(argv + 1), SHA3_512) == 0)
+ hash_algo = HASH_SHA3_512;
+ else
+ goto unknown_param;
} else if (matches(*argv, "ip") == 0) {
- if (inet_pton (AF_INET, *(argv + 1), &ip_addr) != 1) {
- usage();
- return -1;
- }
+ if (inet_pton (AF_INET, *(argv + 1), &ip_addr) != 1)
+ goto unknown_param;
} else if (matches(*argv, "dns") == 0) {
- if (inet_pton(AF_INET, *(argv + 1), &dns_addr) != 1) {
- usage();
- return -1;
- }
+ if (inet_pton(AF_INET, *(argv + 1), &dns_addr) != 1)
+ goto unknown_param;
} else if (matches(*argv, "if_name") == 0) {
if_name = *(argv + 1);
} else if (matches(*argv, "addr") == 0) {
@@ -147,18 +155,25 @@ int do_bootstrap_ipcp(int argc, char ** argv)
} else if (matches(*argv, "addr_auth") == 0) {
if (strcmp(ADDR_AUTH_FLAT, *(argv + 1)) == 0)
addr_auth_type = FLAT_RANDOM;
+ else
+ goto unknown_param;
} else if (matches(*argv, "dt_gam") == 0) {
if (strcmp(DT_GAM_COMPLETE, *(argv + 1)) == 0)
dt_gam_type = COMPLETE;
+ else
+ goto unknown_param;
} else if (matches(*argv, "rm_gam") == 0) {
if (strcmp(RM_GAM_COMPLETE, *(argv + 1)) == 0)
rm_gam_type = COMPLETE;
+ else
+ goto unknown_param;
} else if (matches(*argv, "routing") == 0) {
if (strcmp(ROUTING_LINK_STATE, *(argv + 1)) == 0)
routing_type = LINK_STATE;
+ else
+ goto unknown_param;
} else {
- printf("\"%s\" is unknown, try \"irm "
- "ipcp bootstrap\".\n", *argv);
+ printf("Unknown option: \"%s\".\n", *argv);
return -1;
}
@@ -173,23 +188,6 @@ int do_bootstrap_ipcp(int argc, char ** argv)
strcpy(conf.dif_info.dif_name, dif_name);
- if (strcmp(hash, CRC32) == 0) {
- conf.dif_info.dir_hash_algo = HASH_CRC32;
- } else if (strcmp(hash, MD5) == 0) {
- conf.dif_info.dir_hash_algo = HASH_MD5;
- } else if (strcmp(hash, SHA3_224) == 0) {
- conf.dif_info.dir_hash_algo = HASH_SHA3_224;
- } else if (strcmp(hash, SHA3_256) == 0) {
- conf.dif_info.dir_hash_algo = HASH_SHA3_256;
- } else if (strcmp(hash, SHA3_384) == 0) {
- conf.dif_info.dir_hash_algo = HASH_SHA3_384;
- } else if (strcmp(hash, SHA3_512) == 0) {
- conf.dif_info.dir_hash_algo = HASH_SHA3_512;
- } else {
- usage();
- return -1;
- }
-
if (strcmp(ipcp_type, NORMAL) == 0) {
conf.type = IPCP_NORMAL;
conf.addr_size = addr_size;
@@ -199,6 +197,7 @@ int do_bootstrap_ipcp(int argc, char ** argv)
conf.dt_gam_type = dt_gam_type;
conf.rm_gam_type = rm_gam_type;
conf.routing_type = routing_type;
+ conf.dif_info.dir_hash_algo = hash_algo;
} else if (strcmp(ipcp_type, SHIM_UDP) == 0) {
conf.type = IPCP_SHIM_UDP;
if (ip_addr == 0) {
@@ -239,4 +238,8 @@ int do_bootstrap_ipcp(int argc, char ** argv)
free(apis);
return 0;
+
+ unknown_param:
+ printf("Unknown parameter for %s: \"%s\".\n", *argv, *(argv + 1));
+ return -1;
}