From: "Mickaël Salaün" <mic@digikod.net>
To: "Konstantin Meskhidze (A)" <konstantin.meskhidze@huawei.com>
Cc: artem.kuzin@huawei.com, gnoack3000@gmail.com,
willemdebruijn.kernel@gmail.com, yusongping@huawei.com,
linux-security-module@vger.kernel.org, netdev@vger.kernel.org,
netfilter-devel@vger.kernel.org
Subject: Re: [PATCH v11.1] selftests/landlock: Add 11 new test suites dedicated to network
Date: Thu, 17 Aug 2023 15:19:29 +0200 [thread overview]
Message-ID: <20230817.EiHicha5shei@digikod.net> (raw)
In-Reply-To: <30e2bacd-2e48-9056-5950-1974b9373ee3@huawei.com>
On Sun, Aug 13, 2023 at 11:09:59PM +0300, Konstantin Meskhidze (A) wrote:
>
>
> 7/12/2023 10:02 AM, Mickaël Salaün пишет:
> >
> > On 06/07/2023 16:55, Mickaël Salaün wrote:
> > > From: Konstantin Meskhidze <konstantin.meskhidze@huawei.com>
> > >
> > > This patch is a revamp of the v11 tests [1] with new tests (see the
> > > "Changes since v11" description). I (Mickaël) only added the following
> > > todo list and the "Changes since v11" sections in this commit message.
> > > I think this patch is good but it would appreciate reviews.
> > > You can find the diff of my changes here but it is not really readable:
> > > https://git.kernel.org/mic/c/78edf722fba5 (landlock-net-v11 branch)
> > > [1] https://lore.kernel.org/all/20230515161339.631577-11-konstantin.meskhidze@huawei.com/
> > > TODO:
> > > - Rename all "net_service" to "net_port".
> > > - Fix the two kernel bugs found with the new tests.
> > > - Update this commit message with a small description of all tests.
> >
> > [...]
> > > +FIXTURE(inet)
> > > +{
> > > + struct service_fixture srv0, srv1;
> > > +};
> >
> > The "inet" variants are useless and should be removed. The "inet"
> > fixture can then be renamed to "ipv4_tcp".
> >
> Maybe its better to name it "tcp". So we dont need to copy TEST_F(tcp,
> port_endianness) for ipv6 and ipv4.
> What do you think?
I don't see any need to test with IPv4 and IPv6, hence the "inet" name
(and without variants). You can rename it to "inet_tcp" to highlight the
specificities of this fixture.
>
> >
> > > +
> > > +FIXTURE_VARIANT(inet)
> > > +{
> > > + const bool is_sandboxed;
> > > + const struct protocol_variant prot;
> > > +};
> > > +
> > > +/* clang-format off */
> > > +FIXTURE_VARIANT_ADD(inet, no_sandbox_with_ipv4) {
> > > + /* clang-format on */
> > > + .is_sandboxed = false,
> > > + .prot = {
> > > + .domain = AF_INET,
> > > + .type = SOCK_STREAM,
> > > + },
> > > +};
> > > +
> > > +/* clang-format off */
> > > +FIXTURE_VARIANT_ADD(inet, sandbox_with_ipv4) {
> > > + /* clang-format on */
> > > + .is_sandboxed = true,
> > > + .prot = {
> > > + .domain = AF_INET,
> > > + .type = SOCK_STREAM,
> > > + },
> > > +};
> > > +
> > > +/* clang-format off */
> > > +FIXTURE_VARIANT_ADD(inet, no_sandbox_with_ipv6) {
> > > + /* clang-format on */
> > > + .is_sandboxed = false,
> > > + .prot = {
> > > + .domain = AF_INET6,
> > > + .type = SOCK_STREAM,
> > > + },
> > > +};
> > > +
> > > +/* clang-format off */
> > > +FIXTURE_VARIANT_ADD(inet, sandbox_with_ipv6) {
> > > + /* clang-format on */
> > > + .is_sandboxed = true,
> > > + .prot = {
> > > + .domain = AF_INET6,
> > > + .type = SOCK_STREAM,
> > > + },
> > > +};
> > > +
> > > +FIXTURE_SETUP(inet)
> > > +{
> > > + const struct protocol_variant ipv4_tcp = {
> > > + .domain = AF_INET,
> > > + .type = SOCK_STREAM,
> > > + };
> > > +
> > > + disable_caps(_metadata);
> > > +
> > > + ASSERT_EQ(0, set_service(&self->srv0, ipv4_tcp, 0));
> > > + ASSERT_EQ(0, set_service(&self->srv1, ipv4_tcp, 1));
> > > +
> > > + setup_loopback(_metadata);
> > > +};
> > > +
> > > +FIXTURE_TEARDOWN(inet)
> > > +{
> > > +}
> > > +
> > > +TEST_F(inet, port_endianness)
> > > +{
> > > + const struct landlock_ruleset_attr ruleset_attr = {
> > > + .handled_access_net = LANDLOCK_ACCESS_NET_BIND_TCP |
> > > + LANDLOCK_ACCESS_NET_CONNECT_TCP,
> > > + };
> > > + const struct landlock_net_service_attr bind_host_endian_p0 = {
> > > + .allowed_access = LANDLOCK_ACCESS_NET_BIND_TCP,
> > > + /* Host port format. */
> > > + .port = self->srv0.port,
> > > + };
> > > + const struct landlock_net_service_attr connect_big_endian_p0 = {
> > > + .allowed_access = LANDLOCK_ACCESS_NET_CONNECT_TCP,
> > > + /* Big endian port format. */
> > > + .port = htons(self->srv0.port),
> > > + };
> > > + const struct landlock_net_service_attr bind_connect_host_endian_p1 = {
> > > + .allowed_access = LANDLOCK_ACCESS_NET_BIND_TCP |
> > > + LANDLOCK_ACCESS_NET_CONNECT_TCP,
> > > + /* Host port format. */
> > > + .port = self->srv1.port,
> > > + };
> > > + const unsigned int one = 1;
> > > + const char little_endian = *(const char *)&one;
> > > + int ruleset_fd;
> > > +
> > > + ruleset_fd =
> > > + landlock_create_ruleset(&ruleset_attr, sizeof(ruleset_attr), 0);
> > > + ASSERT_LE(0, ruleset_fd);
> > > + ASSERT_EQ(0, landlock_add_rule(ruleset_fd, LANDLOCK_RULE_NET_SERVICE,
> > > + &bind_host_endian_p0, 0));
> > > + ASSERT_EQ(0, landlock_add_rule(ruleset_fd, LANDLOCK_RULE_NET_SERVICE,
> > > + &connect_big_endian_p0, 0));
> > > + ASSERT_EQ(0, landlock_add_rule(ruleset_fd, LANDLOCK_RULE_NET_SERVICE,
> > > + &bind_connect_host_endian_p1, 0));
> > > + enforce_ruleset(_metadata, ruleset_fd);
> > > +
> > > + /* No restriction for big endinan CPU. */
> > > + test_bind_and_connect(_metadata, &self->srv0, false, little_endian);
> > > +
> > > + /* No restriction for any CPU. */
> > > + test_bind_and_connect(_metadata, &self->srv1, false, false);
> > > +}
> > > +
> > > +TEST_HARNESS_MAIN
> > .
next prev parent reply other threads:[~2023-08-17 13:20 UTC|newest]
Thread overview: 95+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-15 16:13 [PATCH v11 00/12] Network support for Landlock Konstantin Meskhidze
2023-05-15 16:13 ` [PATCH v11 01/12] landlock: Make ruleset's access masks more generic Konstantin Meskhidze
2023-05-15 16:13 ` [PATCH v11 02/12] landlock: Allow filesystem layout changes for domains without such rule type Konstantin Meskhidze
2023-05-15 16:13 ` [PATCH v11 03/12] landlock: Refactor landlock_find_rule/insert_rule Konstantin Meskhidze
2023-06-26 18:40 ` Mickaël Salaün
2023-07-01 14:37 ` Konstantin Meskhidze (A)
2023-06-26 18:58 ` Mickaël Salaün
2023-07-01 14:38 ` Konstantin Meskhidze (A)
2023-07-06 14:34 ` Mickaël Salaün
2023-07-10 12:30 ` Konstantin Meskhidze (A)
2023-05-15 16:13 ` [PATCH v11 04/12] landlock: Refactor merge/inherit_ruleset functions Konstantin Meskhidze
2023-06-26 18:40 ` Mickaël Salaün
2023-07-01 14:52 ` Konstantin Meskhidze (A)
2023-07-05 10:16 ` Mickaël Salaün
2023-07-05 10:36 ` Konstantin Meskhidze (A)
2023-05-15 16:13 ` [PATCH v11 05/12] landlock: Move and rename layer helpers Konstantin Meskhidze
2023-05-15 16:13 ` [PATCH v11 06/12] landlock: Refactor " Konstantin Meskhidze
2023-05-15 16:13 ` [PATCH v11 07/12] landlock: Refactor landlock_add_rule() syscall Konstantin Meskhidze
2023-05-15 16:13 ` [PATCH v11 08/12] landlock: Add network rules and TCP hooks support Konstantin Meskhidze
2023-06-26 18:41 ` Mickaël Salaün
2023-07-01 14:54 ` Konstantin Meskhidze (A)
2023-06-26 18:57 ` Mickaël Salaün
2023-07-03 10:36 ` Konstantin Meskhidze (A)
2023-07-03 17:06 ` Mickaël Salaün
2023-07-04 12:37 ` Konstantin Meskhidze (A)
2023-06-27 16:14 ` Mickaël Salaün
2023-06-29 14:04 ` Mickaël Salaün
2023-07-03 10:44 ` Konstantin Meskhidze (A)
2023-07-03 10:43 ` Konstantin Meskhidze (A)
2023-06-27 19:48 ` Günther Noack
2023-07-03 12:39 ` Konstantin Meskhidze (A)
2023-08-03 14:12 ` Mickaël Salaün
2023-08-03 14:13 ` Konstantin Meskhidze (A)
2023-05-15 16:13 ` [PATCH v11 09/12] selftests/landlock: Share enforce_ruleset() Konstantin Meskhidze
2023-05-15 16:13 ` [PATCH v11 10/12] selftests/landlock: Add 11 new test suites dedicated to network Konstantin Meskhidze
2023-07-01 19:07 ` Günther Noack
2023-07-02 8:45 ` Mickaël Salaün
2023-07-03 8:37 ` Konstantin Meskhidze (A)
2023-07-03 9:36 ` Günther Noack
2023-07-06 14:55 ` [PATCH v11.1] " Mickaël Salaün
2023-07-06 16:09 ` Mickaël Salaün
2023-07-10 12:24 ` Konstantin Meskhidze (A)
2023-07-10 16:06 ` Mickaël Salaün
2023-07-12 8:42 ` Konstantin Meskhidze (A)
2023-07-12 7:02 ` Mickaël Salaün
2023-07-12 9:57 ` Konstantin Meskhidze (A)
2023-08-12 14:37 ` Konstantin Meskhidze (A)
2023-08-17 15:08 ` Mickaël Salaün
2023-09-11 10:13 ` Konstantin Meskhidze (A)
2023-09-14 8:08 ` Mickaël Salaün
2023-09-15 8:54 ` Konstantin Meskhidze (A)
2023-09-18 6:56 ` Mickaël Salaün
2023-09-20 10:00 ` Konstantin Meskhidze (A)
2023-08-13 20:09 ` Konstantin Meskhidze (A)
2023-08-17 13:19 ` Mickaël Salaün [this message]
2023-08-17 14:04 ` Konstantin Meskhidze (A)
2023-08-17 15:34 ` Mickaël Salaün
2023-08-18 14:05 ` Konstantin Meskhidze (A)
2023-08-11 21:03 ` Konstantin Meskhidze (A)
2023-08-17 12:54 ` Mickaël Salaün
2023-08-17 13:00 ` [PATCH] landlock: Fix and test network AF inconsistencies Mickaël Salaün
2023-08-17 14:13 ` Konstantin Meskhidze (A)
2023-08-17 15:36 ` Mickaël Salaün
2023-08-18 14:05 ` Konstantin Meskhidze (A)
2023-05-15 16:13 ` [PATCH v11 11/12] samples/landlock: Add network demo Konstantin Meskhidze
2023-06-06 15:17 ` Günther Noack
2023-06-13 10:54 ` Konstantin Meskhidze (A)
2023-06-13 20:38 ` Mickaël Salaün
2023-06-19 14:24 ` Konstantin Meskhidze (A)
2023-06-19 18:19 ` Mickaël Salaün
2023-06-22 8:00 ` Konstantin Meskhidze (A)
2023-06-22 10:18 ` Mickaël Salaün
2023-07-03 12:50 ` Konstantin Meskhidze (A)
2023-07-03 17:09 ` Mickaël Salaün
2023-07-04 12:33 ` Konstantin Meskhidze (A)
2023-07-06 14:35 ` Mickaël Salaün
2023-07-10 12:26 ` Konstantin Meskhidze (A)
2023-05-15 16:13 ` [PATCH v11 12/12] landlock: Document Landlock's network support Konstantin Meskhidze
2023-06-06 14:08 ` Günther Noack
2023-06-07 5:46 ` Jeff Xu
2023-06-13 10:13 ` Konstantin Meskhidze (A)
2023-06-13 20:12 ` Mickaël Salaün
2023-06-22 16:50 ` Mickaël Salaün
2023-06-23 14:35 ` Jeff Xu
2023-07-03 9:04 ` Konstantin Meskhidze (A)
2023-07-03 17:04 ` Mickaël Salaün
2023-06-13 19:56 ` Mickaël Salaün
2023-06-19 14:25 ` Konstantin Meskhidze (A)
2023-06-26 18:59 ` Mickaël Salaün
2023-07-03 10:42 ` Konstantin Meskhidze (A)
2023-06-05 15:02 ` [PATCH v11 00/12] Network support for Landlock Mickaël Salaün
2023-06-06 9:10 ` Konstantin Meskhidze (A)
2023-06-06 9:40 ` Mickaël Salaün
2023-06-19 14:28 ` Konstantin Meskhidze (A)
2023-06-19 18:23 ` Mickaël Salaün
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230817.EiHicha5shei@digikod.net \
--to=mic@digikod.net \
--cc=artem.kuzin@huawei.com \
--cc=gnoack3000@gmail.com \
--cc=konstantin.meskhidze@huawei.com \
--cc=linux-security-module@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=netfilter-devel@vger.kernel.org \
--cc=willemdebruijn.kernel@gmail.com \
--cc=yusongping@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.