<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ouroboros/src/ipcpd, branch be</title>
<subtitle>Ouroboros main repository</subtitle>
<id>http://www.ouroboros.rocks/cgit/ouroboros/atom?h=be</id>
<link rel='self' href='http://www.ouroboros.rocks/cgit/ouroboros/atom?h=be'/>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/'/>
<updated>2026-05-06T07:04:55+00:00</updated>
<entry>
<title>ipcpd: Add header checksum to ipcpd-eth</title>
<updated>2026-05-06T07:04:55+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-04-26T05:47:08+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=8b5e03fff17dcfcdd73ed40d950ee998d7e9d9f1'/>
<id>urn:sha1:8b5e03fff17dcfcdd73ed40d950ee998d7e9d9f1</id>
<content type='text'>
The internal flow allocator header had no checksum protection. While
it is protected by the Ethernet FCS, lacking a header checksum fails
netem corruption tests. It adds protection against in-memory bitflips.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>lib: Fix certificate DER encoding and key buffers</title>
<updated>2026-03-14T10:23:59+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-03-07T19:54:31+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=044da08973957b32703fe338eb95c5171ce471ba'/>
<id>urn:sha1:044da08973957b32703fe338eb95c5171ce471ba</id>
<content type='text'>
i2d_X509() allocated buf-&gt;data via OPENSSL_malloc(), but callers free
it with freebuf() which uses free(). Fix by allocating with malloc()
and encoding directly into the buffer. Also replaces MSGBUFSZ with
CRYPT_KEY_BUFSZ (4096) for key material buffers and removes leftover
debug logging.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>ipcpd: Fix rejected flow allocation on local</title>
<updated>2026-03-14T10:23:32+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-03-05T18:35:35+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=03bcf516d67a72a6b019c0bcae7d088dcb701d8d'/>
<id>urn:sha1:03bcf516d67a72a6b019c0bcae7d088dcb701d8d</id>
<content type='text'>
When the server rejects the flow, the local didn't send the flow_alloc
response back to the IRMd, causing the irmd and client to time out
instead of being notified of the failed allocation immediately.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>ipcpd: Skip vertices with empty forwarding lists</title>
<updated>2026-02-22T15:05:00+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-02-21T11:22:42+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=83533c990793b18628066196916851e6b34792df'/>
<id>urn:sha1:83533c990793b18628066196916851e6b34792df</id>
<content type='text'>
Fixes ECMP routing table to skip unreachable vertices with empty
forwarding lists, avoiding uninitialized nhop access. Replace inner
vertex list walk with bounded index loop instead of using a
list_for_each to track indices (which confuses the static analyzer as
it seems it can't prove the index remains valid). Remove spurious
free(*dist) on ECMP success path (caller frees).

Extract edge cleanup into free_edges helper in del_vertex to avoid a
static analyzer false positive.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>ipcpd: Fix unused values in unicast IPCP</title>
<updated>2026-02-22T15:04:16+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-02-21T11:05:11+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=c9662b47be711c00f013ac4606dc86c9a2ad8201'/>
<id>urn:sha1:c9662b47be711c00f013ac4606dc86c9a2ad8201</id>
<content type='text'>
Use the key in the store operation in the DHT, to avoid static
analyzer seeing it as being set without being used in release builds.

The length of the packet buffer is only used when tracking DT stats,
so should be set within the IPCP_FLOW_STATS guard.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>ipcpd: Fix lsdb being renamed to lspb</title>
<updated>2026-02-18T07:00:14+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-02-15T14:55:37+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=e9ac4a01f3b1389f7d4d39e0faa6936f17e881ab'/>
<id>urn:sha1:e9ac4a01f3b1389f7d4d39e0faa6936f17e881ab</id>
<content type='text'>
A recent bulk rename of sdb -&gt; spb (shm du buff to shm pkt buff)
unintentionally renamed the lsdb.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>lib: Add struct llist for lists tracking len</title>
<updated>2026-02-18T06:58:21+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-02-15T11:26:04+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=760e17f142eb5cc0f594f1383ae68bb63bebe9ee'/>
<id>urn:sha1:760e17f142eb5cc0f594f1383ae68bb63bebe9ee</id>
<content type='text'>
The DHT uses a struct {struct list_head, size_t len} pattern, which is
also useful in the registry and other places. Having a struct llist
(defined in list.h) with consistent macros for addition/deletion etc
removes a lot of duplication and boilerplate and reduces the risk of
inconsistent updates.

The list management is now a macro-only implementation.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>build: Update copyright to 2026</title>
<updated>2026-02-18T06:54:56+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-02-15T09:21:02+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=0d72b59c2964208ea34ce2322978344d7ff1a223'/>
<id>urn:sha1:0d72b59c2964208ea34ce2322978344d7ff1a223</id>
<content type='text'>
Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>lib: Add SLH-DSA tests and per-algorithm PQC gating</title>
<updated>2026-02-18T06:53:35+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-02-17T21:37:39+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=040bdfb18684d809cb5edacf9867d3378b7e093b'/>
<id>urn:sha1:040bdfb18684d809cb5edacf9867d3378b7e093b</id>
<content type='text'>
This replaces the single HAVE_OPENSSL_PQC/DISABLE_PQC with
per-algorithm CMake variables (ML-KEM, ML-DSA, SLH-DSA), gated by the
OpenSSL versions: ML-KEM and ML-DSA require &gt;= 3.4, SLH-DSA &gt;= 3.5.

SLH-DSA was already working, but now added explicit authentication
tests for it with a full certificate chain (root CA, intermediate CA,
server) to show full support.

Rename PQC test files and cert headers to use algorithm-specific names
(ml_kem, ml_dsa, slh_dsa) and move cert headers to
include/test/certs/.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>build: Fix invisible IPCP_TARGET variables</title>
<updated>2026-02-13T08:22:29+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-02-07T12:01:42+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=ec473cb9a6817bc748c4496a6dba719e7b751368'/>
<id>urn:sha1:ec473cb9a6817bc748c4496a6dba719e7b751368</id>
<content type='text'>
The IPCP_*_TARGET variables (e.g., set(IPCP_LOCAL_TARGET ipcpd-local))
were defined locally in each IPCP's CMakeLists.txt (e.g.,
CMakeLists.txt), but the configure_file() that substitutes
@IPCP_LOCAL_TARGET@ into config.h.in runs in a sibling scope that is
processed before ipcpd. Since CMake variables don't propagate between
sibling directory scopes, all @IPCP_*_TARGET@ substituted to empty
strings, resulting in IPCP_LOCAL_EXEC "".

Moved the IPCP_*_TARGET definitions into the cmake/config/ipcp/*.cmake
files so they are known when generating config.h.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
</feed>
