summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/ouroboros/fccntl.h2
-rw-r--r--include/ouroboros/ipcp-dev.h18
-rw-r--r--include/ouroboros/ssm_rbuff.h11
3 files changed, 28 insertions, 3 deletions
diff --git a/include/ouroboros/fccntl.h b/include/ouroboros/fccntl.h
index e91e91dd..9a048095 100644
--- a/include/ouroboros/fccntl.h
+++ b/include/ouroboros/fccntl.h
@@ -67,6 +67,8 @@
#define FLOWGRXQLEN 00000010 /* Get queue length on rx */
#define FLOWGTXQLEN 00000011 /* Get queue length on tx */
#define FLOWGMTU 00000012 /* Get per-packet MTU */
+#define FLOWSTXQDLY 00000013 /* Set tx queueing delay */
+#define FLOWGTXQDLY 00000014 /* Get tx queueing delay */
/* FRCT operations */
#define FRCTSFLAGS 00001000 /* Set flags for FRCT */
diff --git a/include/ouroboros/ipcp-dev.h b/include/ouroboros/ipcp-dev.h
index 8677adf0..ab99d950 100644
--- a/include/ouroboros/ipcp-dev.h
+++ b/include/ouroboros/ipcp-dev.h
@@ -71,13 +71,25 @@ int ipcp_flow_fini(int fd);
int ipcp_flow_get_qoscube(int fd,
qoscube_t * cube);
+/* Bytes queued in the transmit path of the flow. */
size_t ipcp_flow_queued(int fd);
+/* Mean size of a packet written to the flow, bytes. */
+size_t ipcp_flow_mean_len(int fd);
+
/*
- * Identifies the transmit queue behind the flow. Flows attached to
- * one point of attachment share a queue and answer the same id.
+ * Capacity estimator of the transmit queue behind the flow.
+ * Flows attached to one point of attachment share a queue and
+ * share the estimator. Armed by the IPCP; unarmed flows read 0.
*/
-int ipcp_flow_queue_id(int fd);
+int ipcp_flow_cap_arm(int fd);
+
+void ipcp_flow_cap_update(int fd,
+ size_t qlen,
+ size_t len);
+
+/* Estimated capacity of the transmit queue (bytes/s), 0 = unknown. */
+uint64_t ipcp_flow_cap(int fd);
int ipcp_spb_reserve(struct ssm_pk_buff ** spb,
size_t len);
diff --git a/include/ouroboros/ssm_rbuff.h b/include/ouroboros/ssm_rbuff.h
index e77eec09..9ff880e9 100644
--- a/include/ouroboros/ssm_rbuff.h
+++ b/include/ouroboros/ssm_rbuff.h
@@ -55,6 +55,14 @@ void ssm_rbuff_clr_bits(struct ssm_rbuff * rb,
uint32_t ssm_rbuff_get_flags(struct ssm_rbuff * rb);
+size_t ssm_rbuff_get_limit(struct ssm_rbuff * rb);
+
+void ssm_rbuff_set_txq_target(struct ssm_rbuff * rb,
+ const struct timespec * ts);
+
+void ssm_rbuff_get_txq_target(struct ssm_rbuff * rb,
+ struct timespec * ts);
+
void ssm_rbuff_fini(struct ssm_rbuff * rb);
int ssm_rbuff_mlock(struct ssm_rbuff * rb);
@@ -62,6 +70,9 @@ int ssm_rbuff_mlock(struct ssm_rbuff * rb);
int ssm_rbuff_write(struct ssm_rbuff * rb,
size_t off);
+int ssm_rbuff_write_prio(struct ssm_rbuff * rb,
+ size_t off);
+
int ssm_rbuff_write_b(struct ssm_rbuff * rb,
size_t off,
const struct timespec * abstime);