diff options
author | Dimitri Staessens <dimitri@ouroboros.rocks> | 2023-03-14 12:50:27 +0100 |
---|---|---|
committer | Sander Vrijders <sander@ouroboros.rocks> | 2023-03-18 17:12:27 +0100 |
commit | 99b4f4d6d6f18321489bae50f1762b29165f7de1 (patch) | |
tree | 980ce47c1e7e84b91403ecc8f8263c8d05dfc1c3 /src/irmd/ipcp.c | |
parent | 3b2f38aeafa1d6d2976dd5581ef46a5d3b463825 (diff) | |
download | ouroboros-99b4f4d6d6f18321489bae50f1762b29165f7de1.tar.gz ouroboros-99b4f4d6d6f18321489bae50f1762b29165f7de1.zip |
irmd: Use buffer_t for piggybacked data
Instead of passing a const void * and len, it now passes buffer_t to
operations that send piggybacked data (flow_req_arr and flow_reply)
and a buffer_t * for operations that send and receive piggybacked data
(flow_alloc and flow_accept).
Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks>
Signed-off-by: Sander Vrijders <sander@ouroboros.rocks>
Diffstat (limited to 'src/irmd/ipcp.c')
-rw-r--r-- | src/irmd/ipcp.c | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/src/irmd/ipcp.c b/src/irmd/ipcp.c index c062809c..360934b0 100644 --- a/src/irmd/ipcp.c +++ b/src/irmd/ipcp.c @@ -99,6 +99,7 @@ ipcp_msg_t * send_recv_ipcp_msg(pid_t pid, default: tv.tv_sec = SOCKET_TIMEOUT / 1000; tv.tv_usec = (SOCKET_TIMEOUT % 1000) * 1000; + break; } @@ -176,7 +177,7 @@ pid_t ipcp_create(const char * name, argv[4] = NULL; - if (posix_spawn(&pid, argv[0], NULL, NULL, argv, NULL)) { + if (posix_spawn(&pid, argv[0], NULL, NULL, argv, NULL) != 0) { log_err("Failed to spawn new process"); return -1; } @@ -434,8 +435,7 @@ static int __ipcp_flow_alloc(pid_t pid, size_t len, qosspec_t qs, bool join, - const void * data, - size_t dlen) + const buffer_t data) { ipcp_msg_t msg = IPCP_MSG__INIT; ipcp_msg_t * recv_msg = NULL; @@ -454,8 +454,8 @@ static int __ipcp_flow_alloc(pid_t pid, msg.hash.data = (uint8_t *) dst; msg.qosspec = qos_spec_s_to_msg(&qs);; msg.has_pk = true; - msg.pk.data = (uint8_t *) data; - msg.pk.len = (uint32_t) dlen; + msg.pk.data = data.data; + msg.pk.len = data.len; recv_msg = send_recv_ipcp_msg(pid, &msg); free(msg.qosspec); @@ -479,11 +479,10 @@ int ipcp_flow_alloc(pid_t pid, const uint8_t * dst, size_t len, qosspec_t qs, - const void * data, - size_t dlen) + const buffer_t data) { - return __ipcp_flow_alloc(pid, flow_id, n_pid, dst, len, qs, false, - data, dlen); + return __ipcp_flow_alloc(pid, flow_id, n_pid, dst, + len, qs, false, data); } int ipcp_flow_join(pid_t pid, @@ -493,16 +492,16 @@ int ipcp_flow_join(pid_t pid, size_t len, qosspec_t qs) { - return __ipcp_flow_alloc(pid, flow_id, n_pid, dst, len, qs, true, - NULL, 0); + buffer_t data = {NULL, 0}; + return __ipcp_flow_alloc(pid, flow_id, n_pid, dst, + len, qs, true, data); } -int ipcp_flow_alloc_resp(pid_t pid, - int flow_id, - pid_t n_pid, - int response, - const void * data, - size_t len) +int ipcp_flow_alloc_resp(pid_t pid, + int flow_id, + pid_t n_pid, + int response, + const buffer_t data) { ipcp_msg_t msg = IPCP_MSG__INIT; ipcp_msg_t * recv_msg = NULL; @@ -516,8 +515,8 @@ int ipcp_flow_alloc_resp(pid_t pid, msg.has_response = true; msg.response = response; msg.has_pk = true; - msg.pk.data = (uint8_t *) data; - msg.pk.len = (uint32_t) len; + msg.pk.data = data.data; + msg.pk.len = data.len; recv_msg = send_recv_ipcp_msg(pid, &msg); if (recv_msg == NULL) |