From 62924a033cb2a0130cc6a072e03590f8eec5ac72 Mon Sep 17 00:00:00 2001 From: Dimitri Staessens Date: Sat, 8 Nov 2025 08:11:24 +0100 Subject: ouroboros: Flow compatibility with O7s 0.22 O7s 0.22 moved the cypher strength from QoS to the service name properties and removed QoS spec from the broadcast API (flow_join). --- README.md | 7 +++---- ffi/pyouroboros_build.py | 2 -- ouroboros/dev.py | 9 ++------- ouroboros/qos.py | 5 ----- 4 files changed, 5 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index a7b3a8c..36c3613 100644 --- a/README.md +++ b/README.md @@ -83,13 +83,12 @@ You can specify a QoSSpec for flow allocation. For instance, ```Python -qos = QoSSpec(loss=0, cypher_s=256, timeout=60000) +qos = QoSSpec(loss=0, timeout=60000) f = flow_alloc("name", qos) ``` -will create a new flow with FRCP retransmission enabled and encrypted -using a 256-bit ECDHE-AES-SHA3 cypher that will timeout if the peer is -not responsive for 1 minute. +will create a new flow with FRCP retransmission enabled that will +timeout if the peer is not responsive for 1 minute. ## Manipulating flows diff --git a/ffi/pyouroboros_build.py b/ffi/pyouroboros_build.py index d216895..a7a6a0d 100644 --- a/ffi/pyouroboros_build.py +++ b/ffi/pyouroboros_build.py @@ -33,7 +33,6 @@ typedef struct qos_spec { uint32_t ber; /* Bit error rate, errors per billion bits */ uint8_t in_order; /* In-order delivery, enables FRCT */ uint32_t max_gap; /* In ms */ - uint16_t cypher_s; /* Cypher strength, 0 = no encryption */ uint32_t timeout; /* Timeout in ms */ } qosspec_t; @@ -49,7 +48,6 @@ int flow_accept(qosspec_t * qs, /* Returns flow descriptor, qs updates to supplied QoS. */ int flow_join(const char * bc, - qosspec_t * qs, const struct timespec * timeo); int flow_dealloc(int fd); diff --git a/ouroboros/dev.py b/ouroboros/dev.py index e0b1488..bc5d133 100644 --- a/ouroboros/dev.py +++ b/ouroboros/dev.py @@ -144,8 +144,7 @@ class Flow: def join(self, dst: str, - qos: QoSSpec = None, - timeo: float = None) -> Optional[QoSSpec]: + timeo: float = None) -> None: """ Join a broadcast layer @@ -158,16 +157,12 @@ class Flow: if self.__fd >= 0: raise FlowAllocatedException() - _qos = _qos_to_qosspec(qos) - _timeo = _fl_to_timespec(timeo) - self.__fd = lib.flow_join(dst.encode(), _qos, _timeo) + self.__fd = lib.flow_join(dst.encode(), _timeo) _raise(self.__fd) - return _qosspec_to_qos(_qos) - def dealloc(self): """ Deallocate a flow diff --git a/ouroboros/qos.py b/ouroboros/qos.py index ccf2c7a..a43d87d 100644 --- a/ouroboros/qos.py +++ b/ouroboros/qos.py @@ -37,7 +37,6 @@ class QoSSpec: ber: Bit error rate, errors per billion bits. default BILLION in_order: In-order delivery, enables FRCT, default 0 max_gap: Maximum interruption in ms, default MILLION - cypher_s: Requested encryption strength in bits timeout: Peer timeout (ms), default 120000 (2 minutes) """ @@ -49,7 +48,6 @@ class QoSSpec: ber: int = MILLION, in_order: int = 0, max_gap: int = MILLION, - cypher_s: int = 0, timeout: int = 120000): self.delay = delay self.bandwidth = bandwidth @@ -58,7 +56,6 @@ class QoSSpec: self.ber = ber self.in_order = in_order self.max_gap = max_gap - self.cypher_s = cypher_s self.timeout = timeout @@ -96,7 +93,6 @@ def _qos_to_qosspec(qos: QoSSpec): qos.ber, qos.in_order, qos.max_gap, - qos.cypher_s, qos.timeout]) @@ -111,5 +107,4 @@ def _qosspec_to_qos(_qos) -> Optional[QoSSpec]: ber=_qos.ber, in_order=_qos.in_order, max_gap=_qos.max_gap, - cypher_s=_qos.cypher_s, timeout=_qos.timeout) -- cgit v1.2.3