public inbox for passt-dev@passt.top
 help / color / mirror / code / Atom feed
From: Stefano Brivio <sbrivio@redhat.com>
To: passt-dev@passt.top
Cc: David Gibson <david@gibson.dropbear.id.au>,
	Paul Holzinger <pholzing@redhat.com>
Subject: [PATCH v4 0/7] Prevent DAD for link-local addresses in containers
Date: Sat, 17 Aug 2024 10:43:01 +0200	[thread overview]
Message-ID: <20240817084308.2734874-1-sbrivio@redhat.com> (raw)

There's no point in letting a container perform duplicate address
detection as we'll silently discard neighbour solicitations with
unspecified source addresses anyway, without relaying them to anybody.

And we realised that it's not harmless, see the whole discussion around
https://github.com/containers/podman/pull/23561#discussion_r1711639663:
we can't communicate with the container right away because of that,
which is surely annoying for tests, but it could also be an issue for
use cases with very short-lived containers or namespaces.

Disabling DAD via procfs configuration would be simpler than all this,
but we don't own the namespace (unless we spawn a shell), so we
shouldn't mess up with procfs entries, assuming it's even possible.

Set the nodad attribute, and prevent DAD from being triggered before
on link up, before we can set that attribute.

v4:

- fix botched rebase, changes meant for 4/7 in v3 ended up in 6/7

v3:

- in 4/7, actually handle all the netlink responses for the case where
  we change multiple addresses

v2:

- in 4/7, instead of doing the whole nl_routes_dup()-vendored dance
  to keep addresses in a single buffer, send NLM_F_REPLACE requests
  right away, but use nlmsg_send() instead of nl_do(), and check for
  answers to our further requests later. Use warn() instead of die()
  if we can't set nodad attributes

- in 5/7, make nl_addr_get_ll() get a pointer to struct in6_addr
  instead of a generic void pointer, and warn(), don't die(), if
  it fails

Stefano Brivio (7):
  netlink: Fix typo in function comment for nl_addr_get()
  netlink, pasta: Split MTU setting functionality out of nl_link_up()
  netlink, pasta: Turn nl_link_up() into a generic function to set link
    flags
  netlink, pasta: Disable DAD for link-local addresses on namespace
    interface
  netlink, pasta: Fetch link-local address from namespace interface once
    it's up
  pasta: Disable neighbour solicitations on device up to prevent DAD
  netlink: Fix typo in function comment for nl_addr_set()

 netlink.c | 146 +++++++++++++++++++++++++++++++++++++++++++++++++-----
 netlink.h |   6 ++-
 pasta.c   |  29 ++++++++++-
 3 files changed, 166 insertions(+), 15 deletions(-)

-- 
2.43.0


             reply	other threads:[~2024-08-17  8:43 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-17  8:43 Stefano Brivio [this message]
2024-08-17  8:43 ` [PATCH v4 1/7] netlink: Fix typo in function comment for nl_addr_get() Stefano Brivio
2024-08-17  8:43 ` [PATCH v4 2/7] netlink, pasta: Split MTU setting functionality out of nl_link_up() Stefano Brivio
2024-08-17  8:43 ` [PATCH v4 3/7] netlink, pasta: Turn nl_link_up() into a generic function to set link flags Stefano Brivio
2024-08-17  8:43 ` [PATCH v4 4/7] netlink, pasta: Disable DAD for link-local addresses on namespace interface Stefano Brivio
2024-08-17  9:45   ` David Gibson
2024-08-17  8:43 ` [PATCH v4 5/7] netlink, pasta: Fetch link-local address from namespace interface once it's up Stefano Brivio
2024-08-17  8:43 ` [PATCH v4 6/7] pasta: Disable neighbour solicitations on device up to prevent DAD Stefano Brivio
2024-08-17  8:43 ` [PATCH v4 7/7] netlink: Fix typo in function comment for nl_addr_set() Stefano Brivio

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=20240817084308.2734874-1-sbrivio@redhat.com \
    --to=sbrivio@redhat.com \
    --cc=david@gibson.dropbear.id.au \
    --cc=passt-dev@passt.top \
    --cc=pholzing@redhat.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.
Code repositories for project(s) associated with this public inbox

	https://passt.top/passt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for IMAP folder(s).