diff options
author | dimitri staessens <dimitri.staessens@ugent.be> | 2017-04-26 20:31:39 +0200 |
---|---|---|
committer | dimitri staessens <dimitri.staessens@ugent.be> | 2017-04-27 17:59:01 +0200 |
commit | b398dbe5cfd12b928e00f9a22cd6826bbdfb18d7 (patch) | |
tree | 137c34f79897b5f371a65dd14208b77201d1e907 /src/irmd/ipcp.c | |
parent | 6d6a4a488d7b631f519b1cf462ffbb44d399e1ce (diff) | |
download | ouroboros-b398dbe5cfd12b928e00f9a22cd6826bbdfb18d7.tar.gz ouroboros-b398dbe5cfd12b928e00f9a22cd6826bbdfb18d7.zip |
ipcpd: Add capability reporting
The IPCP will now report the DIF name and the hash value to the IRMd
as a dif_info struct. This can later be extended to add further
capability reporting. Some bugfixes in normal.
Fixes #24
Diffstat (limited to 'src/irmd/ipcp.c')
-rw-r--r-- | src/irmd/ipcp.c | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/src/irmd/ipcp.c b/src/irmd/ipcp.c index 7a32dd88..182970b1 100644 --- a/src/irmd/ipcp.c +++ b/src/irmd/ipcp.c @@ -212,13 +212,13 @@ int ipcp_bootstrap(pid_t api, return ret; } -/* return the hash algorithm */ -int ipcp_enroll(pid_t api, - const char * dst) +int ipcp_enroll(pid_t api, + const char * dst, + struct dif_info * info) { - ipcp_msg_t msg = IPCP_MSG__INIT; + ipcp_msg_t msg = IPCP_MSG__INIT; ipcp_msg_t * recv_msg = NULL; - int ret = -1; + int ret = -1; if (dst == NULL) return -EINVAL; @@ -236,9 +236,23 @@ int ipcp_enroll(pid_t api, } ret = recv_msg->result; + if (ret != 0) { + ipcp_msg__free_unpacked(recv_msg, NULL); + return ret; + } + + if (!recv_msg->has_dir_hash_algo || recv_msg->dif_name == NULL) { + ipcp_msg__free_unpacked(recv_msg, NULL); + return -EIPCP; + } + + info->algo = recv_msg->dir_hash_algo; + + strcpy(info->dif_name, recv_msg->dif_name); + ipcp_msg__free_unpacked(recv_msg, NULL); - return ret; + return 0; } int ipcp_reg(pid_t api, |