summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Norman Maurer <norman_maurer@apple.com> 2021-05-17 18:57:35 +0200
committerGravatar GitHub <noreply@github.com> 2021-05-17 17:57:35 +0100
commit3ed9202a0089e7b599214552c807626c678e1aea (patch)
tree2a1db91283345d1885199393565edc49092fd5ba
parent567cc5ebc530ed5cf2c14dd4af88a2496bacb290 (diff)
downloadquiche-3ed9202a0089e7b599214552c807626c678e1aea.tar.gz
quiche-3ed9202a0089e7b599214552c807626c678e1aea.tar.zst
quiche-3ed9202a0089e7b599214552c807626c678e1aea.zip
ffi: expose source / destination connection IDs
Motivation: We should expose functions to access the source and destination ids via the c API as well Modifications: Expose functions in the C API Result: Be able to access the ids of a connection
-rw-r--r--include/quiche.h6
-rw-r--r--src/ffi.rs21
2 files changed, 27 insertions, 0 deletions
diff --git a/include/quiche.h b/include/quiche.h
index abc8b6a0..d22e8171 100644
--- a/include/quiche.h
+++ b/include/quiche.h
@@ -320,6 +320,12 @@ int quiche_conn_close(quiche_conn *conn, bool app, uint64_t err,
// Returns a string uniquely representing the connection.
void quiche_conn_trace_id(quiche_conn *conn, const uint8_t **out, size_t *out_len);
+// Returns the source connection ID.
+void quiche_conn_source_id(quiche_conn *conn, const uint8_t **out, size_t *out_len);
+
+// Returns the destination connection ID.
+void quiche_conn_destination_id(quiche_conn *conn, const uint8_t **out, size_t *out_len);
+
// Returns the negotiated ALPN protocol.
void quiche_conn_application_proto(quiche_conn *conn, const uint8_t **out,
size_t *out_len);
diff --git a/src/ffi.rs b/src/ffi.rs
index 1db9d05d..fda2a37a 100644
--- a/src/ffi.rs
+++ b/src/ffi.rs
@@ -767,6 +767,27 @@ pub extern fn quiche_conn_trace_id(
}
#[no_mangle]
+pub extern fn quiche_conn_source_id(
+ conn: &mut Connection, out: &mut *const u8, out_len: &mut size_t,
+) {
+ let conn_id = conn.source_id();
+ let id = conn_id.as_ref();
+ *out = id.as_ptr();
+ *out_len = id.len();
+}
+
+#[no_mangle]
+pub extern fn quiche_conn_destination_id(
+ conn: &mut Connection, out: &mut *const u8, out_len: &mut size_t,
+) {
+ let conn_id = conn.destination_id();
+ let id = conn_id.as_ref();
+
+ *out = id.as_ptr();
+ *out_len = id.len();
+}
+
+#[no_mangle]
pub extern fn quiche_conn_application_proto(
conn: &mut Connection, out: &mut *const u8, out_len: &mut size_t,
) {