<feed xmlns='http://www.w3.org/2005/Atom'>
<title>seitan, branch master</title>
<subtitle>Syscall Expressive Interpreter, Transformer and Notifier</subtitle>
<link rel='alternate' type='text/html' href='https://seitan.rocks/seitan/'/>
<entry>
<title>call, emit, match: Add support for vectorised operations, nfnetlink</title>
<updated>2024-08-13T17:00:35+00:00</updated>
<author>
<name>Stefano Brivio</name>
<email>sbrivio@redhat.com</email>
</author>
<published>2024-08-13T16:50:33+00:00</published>
<link rel='alternate' type='text/html' href='https://seitan.rocks/seitan/commit/?id=9bf3b1cc7a94357c250f77f16829c96cbae801fe'/>
<id>9bf3b1cc7a94357c250f77f16829c96cbae801fe</id>
<content type='text'>
We want to add and delete rules with iptables(8), and manipulate set
elements with nft(8).

These are the first users we encounter sending multiple netlink
messages in one sendmsg().

To support matching on those, we need to iterate over several
messages, looking for a matching one, or a mismatching one (depending
on quantifiers and match type), but we don't want to implement program
loops because of security design reasons.

We can't implement a generalised instruction that vectorises existing
ones, either, because we need to support universal and existential
quantifiers in fields that are repeated multiple times, once per each
netlink message, with bitwise operations and non-exact matching types.

Add vectorisation support to OP_CMP and OP_BITWISE instead, with a
generic description for a vector (only sequences of netlink messages
with length in nlmsghdr are supported at the moment) so that,
depending on the quantifiers, we'll repeat those operations as many
times as needed. This way, we don't risk any O(n^2) explosion, and we
are bound by O(m * n) instead, with m compare/bitwise operations for
a given expression, and n number of netlink messages.

Add demos for nft and iptables using the new concepts.

Signed-off-by: Stefano Brivio &lt;sbrivio@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We want to add and delete rules with iptables(8), and manipulate set
elements with nft(8).

These are the first users we encounter sending multiple netlink
messages in one sendmsg().

To support matching on those, we need to iterate over several
messages, looking for a matching one, or a mismatching one (depending
on quantifiers and match type), but we don't want to implement program
loops because of security design reasons.

We can't implement a generalised instruction that vectorises existing
ones, either, because we need to support universal and existential
quantifiers in fields that are repeated multiple times, once per each
netlink message, with bitwise operations and non-exact matching types.

Add vectorisation support to OP_CMP and OP_BITWISE instead, with a
generic description for a vector (only sequences of netlink messages
with length in nlmsghdr are supported at the moment) so that,
depending on the quantifiers, we'll repeat those operations as many
times as needed. This way, we don't risk any O(n^2) explosion, and we
are bound by O(m * n) instead, with m compare/bitwise operations for
a given expression, and n number of netlink messages.

Add demos for nft and iptables using the new concepts.

Signed-off-by: Stefano Brivio &lt;sbrivio@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>util: Fix system call name resolution in syscall_name() debug function</title>
<updated>2024-07-02T11:46:48+00:00</updated>
<author>
<name>Stefano Brivio</name>
<email>sbrivio@redhat.com</email>
</author>
<published>2024-07-02T11:46:48+00:00</published>
<link rel='alternate' type='text/html' href='https://seitan.rocks/seitan/commit/?id=d699dac08778c597eefac1067a325059925e87e6'/>
<id>d699dac08778c597eefac1067a325059925e87e6</id>
<content type='text'>
Fix the starting index, otherwise we miss the first call in sets
(say, mknod in filesystem calls).

And if we don't find a matching name for the system call, actually
return it, instead of trying to fetch it from the current (invalid)
call.

Fixes: bdbec30a8498 ("seitan: Add netlink, sendto()/sendmsg(), iovec handling, demo with routes")
Signed-off-by: Stefano Brivio &lt;sbrivio@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix the starting index, otherwise we miss the first call in sets
(say, mknod in filesystem calls).

And if we don't find a matching name for the system call, actually
return it, instead of trying to fetch it from the current (invalid)
call.

Fixes: bdbec30a8498 ("seitan: Add netlink, sendto()/sendmsg(), iovec handling, demo with routes")
Signed-off-by: Stefano Brivio &lt;sbrivio@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Add fsetxattr(), fremovexattr(), open_by_handle_at(), and "virtiofsd demo"</title>
<updated>2024-05-15T06:49:56+00:00</updated>
<author>
<name>Stefano Brivio</name>
<email>sbrivio@redhat.com</email>
</author>
<published>2024-05-15T06:49:56+00:00</published>
<link rel='alternate' type='text/html' href='https://seitan.rocks/seitan/commit/?id=5a9302bab9c9bb3d1577f04678d074fb7af4115f'/>
<id>5a9302bab9c9bb3d1577f04678d074fb7af4115f</id>
<content type='text'>
Mostly assorted fixes, a new FDGET operation (get a copy of the
target file descriptor via pidfd_getfd()) and a new "FD" flag that
means we have to do that on direct tag reference.

Signed-off-by: Stefano Brivio &lt;sbrivio@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Mostly assorted fixes, a new FDGET operation (get a copy of the
target file descriptor via pidfd_getfd()) and a new "FD" flag that
means we have to do that on direct tag reference.

Signed-off-by: Stefano Brivio &lt;sbrivio@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>seitan: Add netlink, sendto()/sendmsg(), iovec handling, demo with routes</title>
<updated>2023-12-21T11:45:36+00:00</updated>
<author>
<name>Stefano Brivio</name>
<email>sbrivio@redhat.com</email>
</author>
<published>2023-12-21T11:06:05+00:00</published>
<link rel='alternate' type='text/html' href='https://seitan.rocks/seitan/commit/?id=bdbec30a849807fb5e6841a38cfe0d168e5962b9'/>
<id>bdbec30a849807fb5e6841a38cfe0d168e5962b9</id>
<content type='text'>
A bit rough at the moment, but it does the trick. Bonus: setsockopt()
(with magic values only, not used in any demo yet).

Signed-off-by: Stefano Brivio &lt;sbrivio@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A bit rough at the moment, but it does the trick. Bonus: setsockopt()
(with magic values only, not used in any demo yet).

Signed-off-by: Stefano Brivio &lt;sbrivio@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>seitan: try to improve print of the arguments to check</title>
<updated>2023-09-08T12:47:42+00:00</updated>
<author>
<name>Alice Frosi</name>
<email>afrosi@redhat.com</email>
</author>
<published>2023-09-08T12:47:42+00:00</published>
<link rel='alternate' type='text/html' href='https://seitan.rocks/seitan/commit/?id=c72c2493de8990c3a3b4780ec1429a3c359c121e'/>
<id>c72c2493de8990c3a3b4780ec1429a3c359c121e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>gluten: throw an error if the offset is seccomp but the request is empty</title>
<updated>2023-09-08T12:44:30+00:00</updated>
<author>
<name>Alice Frosi</name>
<email>afrosi@redhat.com</email>
</author>
<published>2023-09-08T12:44:30+00:00</published>
<link rel='alternate' type='text/html' href='https://seitan.rocks/seitan/commit/?id=7837722a09c08957af93055062cecfd9c3ea8b14'/>
<id>7837722a09c08957af93055062cecfd9c3ea8b14</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>cooker: set base_offset for struct</title>
<updated>2023-09-08T12:43:57+00:00</updated>
<author>
<name>Alice Frosi</name>
<email>afrosi@redhat.com</email>
</author>
<published>2023-09-08T12:43:57+00:00</published>
<link rel='alternate' type='text/html' href='https://seitan.rocks/seitan/commit/?id=24659c84ab27ad19d95f0c64dcc9568f2bbb4b66'/>
<id>24659c84ab27ad19d95f0c64dcc9568f2bbb4b66</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>cooker: Don't mix up JSON objects when checking temporary storage needs</title>
<updated>2023-09-05T11:55:17+00:00</updated>
<author>
<name>Stefano Brivio</name>
<email>sbrivio@redhat.com</email>
</author>
<published>2023-09-05T11:55:17+00:00</published>
<link rel='alternate' type='text/html' href='https://seitan.rocks/seitan/commit/?id=f9efac198653634b03677ac0fccf95b376104436'/>
<id>f9efac198653634b03677ac0fccf95b376104436</id>
<content type='text'>
...including the check on whether the given object is a top-level
(corresponding to a full argument) metadata tag.

Fixes: d3917582873d ("cooker: simplify tag and add caller metadata")
Signed-off-by: Stefano Brivio &lt;sbrivio@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
...including the check on whether the given object is a top-level
(corresponding to a full argument) metadata tag.

Fixes: d3917582873d ("cooker: simplify tag and add caller metadata")
Signed-off-by: Stefano Brivio &lt;sbrivio@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cooker/calls: Add support for bind()</title>
<updated>2023-09-04T15:16:05+00:00</updated>
<author>
<name>Stefano Brivio</name>
<email>sbrivio@redhat.com</email>
</author>
<published>2023-07-07T15:33:04+00:00</published>
<link rel='alternate' type='text/html' href='https://seitan.rocks/seitan/commit/?id=bcbe728187c7239d43d0fe32eaa0f07d09f7e765'/>
<id>bcbe728187c7239d43d0fe32eaa0f07d09f7e765</id>
<content type='text'>
...no examples yet, but it's trivial as the prototype is exactly the
same as connect().

Signed-off-by: Stefano Brivio &lt;sbrivio@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
...no examples yet, but it's trivial as the prototype is exactly the
same as connect().

Signed-off-by: Stefano Brivio &lt;sbrivio@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cooker: fix tag check with the new format</title>
<updated>2023-09-04T08:17:52+00:00</updated>
<author>
<name>Alice Frosi</name>
<email>afrosi@redhat.com</email>
</author>
<published>2023-09-04T08:17:52+00:00</published>
<link rel='alternate' type='text/html' href='https://seitan.rocks/seitan/commit/?id=b1bcfb03685b6255c9b79ec48459eeb1e02ab485'/>
<id>b1bcfb03685b6255c9b79ec48459eeb1e02ab485</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
