summaryrefslogtreecommitdiff
path: root/src/ipcpd/unicast/psched.h
diff options
context:
space:
mode:
authorDimitri Staessens <dimitri@ouroboros.rocks>2022-03-27 11:09:43 +0200
committerSander Vrijders <sander@ouroboros.rocks>2022-03-30 15:05:05 +0200
commit02b3893b1ec392f1b3ca030a03267c31eb1dc290 (patch)
treef7cebdb5ef2c4994bc1e675e838bc8922cbae950 /src/ipcpd/unicast/psched.h
parent56654f2cd1813d87d32695f126939bbfaad52385 (diff)
downloadouroboros-02b3893b1ec392f1b3ca030a03267c31eb1dc290.tar.gz
ouroboros-02b3893b1ec392f1b3ca030a03267c31eb1dc290.zip
lib: Add np1_flow_read and np1_flow_write calls
Reading/writing to (N + 1)-flows from the IPCP was using a raw QoS flow to bypass some functions in the ipcp_flow_read call. But this call was broken for keepalive packets. Fixing the ipcp_flow_read call for (N - 1) flows causes the IPCPs to drop 0-byte keepalive packets coming from (N + 1) client flows. >From now on, there is a dedicated call for (N + 1) reads/writes from the IPCPs that's more efficient and cleaner. The (N + 1) flow internal QoS is now also defaulted to a qos_np1 qosspec, instead of tampering with the qosspec requested by the (N + 1) client. Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks> Signed-off-by: Sander Vrijders <sander@ouroboros.rocks>
Diffstat (limited to 'src/ipcpd/unicast/psched.h')
-rw-r--r--src/ipcpd/unicast/psched.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/ipcpd/unicast/psched.h b/src/ipcpd/unicast/psched.h
index 1f22b34b..654d73d9 100644
--- a/src/ipcpd/unicast/psched.h
+++ b/src/ipcpd/unicast/psched.h
@@ -30,7 +30,11 @@ typedef void (* next_packet_fn_t)(int fd,
qoscube_t qc,
struct shm_du_buff * sdb);
-struct psched * psched_create(next_packet_fn_t callback);
+typedef int (* read_fn_t)(int fd,
+ struct shm_du_buff ** sdb);
+
+struct psched * psched_create(next_packet_fn_t callback,
+ read_fn_t read);
void psched_destroy(struct psched * psched);