summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDimitri Staessens <dimitri@ouroboros.rocks>2026-06-14 16:00:30 +0200
committerSander Vrijders <sander@ouroboros.rocks>2026-06-29 08:32:58 +0200
commitc386d9b7caa56f472fdce20ff5b2841ed41dd539 (patch)
tree81c8124854e0557ef6be4d9eda0a15f28f79350a /include
parent22e2380b09730a2f18deefd688585edb430d3299 (diff)
downloadouroboros-c386d9b7caa56f472fdce20ff5b2841ed41dd539.tar.gz
ouroboros-c386d9b7caa56f472fdce20ff5b2841ed41dd539.zip
ipcpd: Add flow-update relay
This adds an ipcp_flow_update() call to relay opaque messages between the two IRMds (carried by FLOW_IRM_UPDATE messages), which passes it back up to the peer IRMd via ipcp_flow_update_arr(). The broadcast layer does not implement this. Needed for periodic re-keying of encrypted flows via OAP. Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks> Signed-off-by: Sander Vrijders <sander@ouroboros.rocks>
Diffstat (limited to 'include')
-rw-r--r--include/ouroboros/ipcp-dev.h3
-rw-r--r--include/ouroboros/np1_flow.h4
-rw-r--r--include/ouroboros/serdes-irm.h13
3 files changed, 20 insertions, 0 deletions
diff --git a/include/ouroboros/ipcp-dev.h b/include/ouroboros/ipcp-dev.h
index d23f757e..d00d6f08 100644
--- a/include/ouroboros/ipcp-dev.h
+++ b/include/ouroboros/ipcp-dev.h
@@ -38,6 +38,9 @@ int ipcp_flow_req_arr(const buffer_t * dst,
uint32_t mtu,
const buffer_t * data);
+int ipcp_flow_update_arr(int flow_id,
+ const buffer_t * data);
+
int ipcp_flow_alloc_reply(int fd,
int response,
time_t mpl,
diff --git a/include/ouroboros/np1_flow.h b/include/ouroboros/np1_flow.h
index 309d01c2..758b6db8 100644
--- a/include/ouroboros/np1_flow.h
+++ b/include/ouroboros/np1_flow.h
@@ -36,6 +36,10 @@ int np1_flow_resp(int flow_id,
int np1_flow_dealloc(int flow_id,
time_t timeo);
+int np1_flow_fd(int flow_id);
+
+int np1_flow_id(int fd);
+
static const qosspec_t qos_np1 = {
.service = SVC_RAW,
.delay = UINT32_MAX,
diff --git a/include/ouroboros/serdes-irm.h b/include/ouroboros/serdes-irm.h
index 1dfff4d9..01c4153c 100644
--- a/include/ouroboros/serdes-irm.h
+++ b/include/ouroboros/serdes-irm.h
@@ -31,6 +31,7 @@
#include <ouroboros/utils.h>
#include <inttypes.h>
+#include <stdbool.h>
int flow_alloc__irm_req_ser(buffer_t * buf,
const struct flow_info * flow,
@@ -51,6 +52,10 @@ int ipcp_flow_req_arr__irm_req_ser(buffer_t * buf,
const struct flow_info * flow,
const buffer_t * data);
+int ipcp_flow_update_arr__irm_req_ser(buffer_t * buf,
+ const struct flow_info * flow,
+ const buffer_t * data);
+
int ipcp_flow_alloc_reply__irm_msg_ser(buffer_t * buf,
const struct flow_info * flow,
int response,
@@ -64,6 +69,14 @@ int flow_dealloc__irm_req_ser(buffer_t * buf,
const struct flow_info * flow,
const struct timespec * timeo);
+int flow_update__irm_req_ser(buffer_t * buf,
+ const struct flow_info * flow,
+ bool rekey);
+
+int flow_rekey__irm_result_des(buffer_t * buf,
+ struct crypt_sk * sk,
+ bool * has_key);
+
int ipcp_flow_dealloc__irm_req_ser(buffer_t * buf,
const struct flow_info * info);