<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ouroboros/src/lib, branch 0.20.1</title>
<subtitle>Ouroboros main repository</subtitle>
<id>https://ouroboros.rocks/cgit/ouroboros/atom?h=0.20.1</id>
<link rel='self' href='https://ouroboros.rocks/cgit/ouroboros/atom?h=0.20.1'/>
<link rel='alternate' type='text/html' href='https://ouroboros.rocks/cgit/ouroboros/'/>
<updated>2023-11-08T08:17:53+00:00</updated>
<entry>
<title>lib: Fix timeout overflow on 32-bit systems</title>
<updated>2023-11-08T08:17:53+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2023-11-07T17:14:11+00:00</published>
<link rel='alternate' type='text/html' href='https://ouroboros.rocks/cgit/ouroboros/commit/?id=d7e3ef70b601831d5bef3fef21fa16b761f561e8'/>
<id>urn:sha1:d7e3ef70b601831d5bef3fef21fa16b761f561e8</id>
<content type='text'>
The timeout comparison for keepalives could overflow on 32-bit
systems, as times were converted to nanoseconds and be limited to a
bit over 4 seconds. This caused flow reads to fail miserably with
EFLOWPEER errors when keepalives were set higher on these systems.

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: Remove pid from flow struct</title>
<updated>2023-10-25T09:41:59+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2023-10-03T03:26:46+00:00</published>
<link rel='alternate' type='text/html' href='https://ouroboros.rocks/cgit/ouroboros/commit/?id=0611afc41d6d1f21c558e73fb95e959f02153bc5'/>
<id>urn:sha1:0611afc41d6d1f21c558e73fb95e959f02153bc5</id>
<content type='text'>
The pid of the N-1 IPCP process was needlessly stored in the flow
struct. We only need it to open the right shared memory maps, which is
done when the flow is created.

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: Wrap pthread_cond_timedwait for NULL abstime</title>
<updated>2023-10-25T07:53:27+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2023-10-07T12:26:23+00:00</published>
<link rel='alternate' type='text/html' href='https://ouroboros.rocks/cgit/ouroboros/commit/?id=5706bf3efa8d8262982bbed15fb041e536f56cf2'/>
<id>urn:sha1:5706bf3efa8d8262982bbed15fb041e536f56cf2</id>
<content type='text'>
We often have the pattern where we NULL-check abstime for
pthread_cond_timedwait to call pthread_cond_wait if it is.
Added a __timedwait function to wrap this.

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: Make crypt.c independent source file</title>
<updated>2023-10-25T07:51:35+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2023-09-29T11:15:00+00:00</published>
<link rel='alternate' type='text/html' href='https://ouroboros.rocks/cgit/ouroboros/commit/?id=fd3381002564c87b85feb2d1947a588e8ca6fdf9'/>
<id>urn:sha1:fd3381002564c87b85feb2d1947a588e8ca6fdf9</id>
<content type='text'>
The cryptography functions were in a C source that was directly
imported into dev.c, enabling ECDHE+AES256 symmetric key encryption on
flows. Now crypt.c is an independent source file with associated
crypt.h header, to prepare for security management and configuration
in the IRMd.

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: Revise port construct in application</title>
<updated>2023-09-20T16:51:19+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2023-09-20T06:57:15+00:00</published>
<link rel='alternate' type='text/html' href='https://ouroboros.rocks/cgit/ouroboros/commit/?id=2df952d68587a6422f7462eee55c0f42904df4c9'/>
<id>urn:sha1:2df952d68587a6422f7462eee55c0f42904df4c9</id>
<content type='text'>
The application had a port construct, which is a leftover from the
early days implementing RINA specs, which had a "port_id" to access
flows. O7s doesn't really have a "port" concept, only flows. The
port_wait_assign function was used in the IPCP to wait for the IRMd to
assign the flow_id and return so the flow object could be created.

This renames things a bit, and also simplifies the locking to us a
single lock/condvar for managing flows. This should be further
improved to move the flow state into the flow object, maintain a
double mapping of to flow objects (id_to_flow and fd_to_flow) and
malloc flow objects at flow allocation, instead of keeping the full
table in memory at init to further reduce memory footprint.

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: Revise application init and fini</title>
<updated>2023-09-20T16:51:19+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2023-09-18T11:59:01+00:00</published>
<link rel='alternate' type='text/html' href='https://ouroboros.rocks/cgit/ouroboros/commit/?id=01df685d0e116a0da43f2a7b19b32e617db4ba3a'/>
<id>urn:sha1:01df685d0e116a0da43f2a7b19b32e617db4ba3a</id>
<content type='text'>
The init will now print more useful errors if a process fails to
initialize. Also rearranged these procedures a little bit.

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: Rename portevent to flowevent</title>
<updated>2023-09-20T16:51:19+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2023-09-17T11:49:59+00:00</published>
<link rel='alternate' type='text/html' href='https://ouroboros.rocks/cgit/ouroboros/commit/?id=c7fbae74dcf91333cc53632153e1c91e2a641f0d'/>
<id>urn:sha1:c7fbae74dcf91333cc53632153e1c91e2a641f0d</id>
<content type='text'>
Doesn't make any sense to call it a port event...

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: Move protobuf definitions to pb/ directory</title>
<updated>2023-08-30T15:11:41+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2023-08-27T15:59:20+00:00</published>
<link rel='alternate' type='text/html' href='https://ouroboros.rocks/cgit/ouroboros/commit/?id=3a321cc77e0f6d29167a925dd706fc36e5aa7cdd'/>
<id>urn:sha1:3a321cc77e0f6d29167a925dd706fc36e5aa7cdd</id>
<content type='text'>
This moves the protobuf definition in the library to a pb/
directory. Also renames the protobuf files and does a quick review of
the #define guards in the include library to specify _LIB_ for
internal/non-public library headers.

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: Add IDs to enrollment</title>
<updated>2023-08-23T11:09:11+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2023-08-17T14:12:44+00:00</published>
<link rel='alternate' type='text/html' href='https://ouroboros.rocks/cgit/ouroboros/commit/?id=8183983c2c1cc50e3e0c82a8ab08d5fd66e0dc86'/>
<id>urn:sha1:8183983c2c1cc50e3e0c82a8ab08d5fd66e0dc86</id>
<content type='text'>
The enrollment messages now have a 64-bit ID to easier track
enrollments in the logs in larger scale tests.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>include: Revise printing hashes</title>
<updated>2023-08-23T11:09:11+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2023-08-16T16:15:14+00:00</published>
<link rel='alternate' type='text/html' href='https://ouroboros.rocks/cgit/ouroboros/commit/?id=ab8ee0b24335790e49127b1330f9d7bcca7f6bfa'/>
<id>urn:sha1:ab8ee0b24335790e49127b1330f9d7bcca7f6bfa</id>
<content type='text'>
The code was a bit convoluted to print hashes as hex strings. Renamed
to HASH_FMT32 and HASH_VAL32 to make clear we are printing the first
32 bits only, and added options to print 64 up to 512 bits as well.
This doesn't depend on endianness anymore. Adds a small test for the
hash (printing) functions.

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