public inbox for passt-dev@passt.top
 help / color / mirror / code / Atom feed
From: Stefano Brivio <sbrivio@redhat.com>
To: Paul Holzinger <pholzing@redhat.com>,
	David Gibson <david@gibson.dropbear.id.au>
Cc: passt-dev@passt.top
Subject: Re: [PATCH v2] conf: No routable interface for IPv4 or IPv6 is informational, not a warning
Date: Fri, 16 Feb 2024 11:43:04 +0100	[thread overview]
Message-ID: <20240216114304.7234a83f@elisabeth> (raw)
In-Reply-To: <e84d6db2-b5df-400a-bfad-b74a631100b5@redhat.com>

On Fri, 16 Feb 2024 11:23:30 +0100
Paul Holzinger <pholzing@redhat.com> wrote:

> Hi Stefano,
> 
> On 16/02/2024 06:09, Stefano Brivio wrote:
> > ...Podman users might get confused by the fact that if we can't
> > find a default route for a given IP version, we'll report that as a
> > warning message and possibly just before actual error messages.
> >
> > However, a lack of routable interface for IPv4 or IPv6 can be a
> > normal circumstance: don't warn about it, just state that as
> > informational message, if those are displayed (they're not in
> > non-error paths in Podman, for example).  
> 
> A bit of topic but what actually is the default log level?

It's LOG_INFO.

> Looking at 
> the main function I see:
> 
> if (c.debug)
>          __setlogmask(LOG_UPTO(LOG_DEBUG));
>      else if (c.quiet)
>          __setlogmask(LOG_UPTO(LOG_ERR));
                                     ^^^
>      else
>          __setlogmask(LOG_UPTO(LOG_INFO));
> 
> So if the default is still log level is info there is no way for podman 
> to say show warnings/errors only.

That's because the second clause above is wrong, I think. It should be:

	else if (c.quiet)
		__setlogmask(LOG_UPTO(LOG_WARN));

because we also say in the man page:

       -q, --quiet
              Don't print informational messages.

but nowhere it's written that we'll also hide warnings with it.

> We can use --quiet but I think the 
> warnings should be displayed to end users as well.
> So my next request would be to one of the following:
> a) change the default level to warn but then there no way show info 
> unless debug is set (or add a new flag for info)

I think LOG_INFO should really be the default, if you use passt or
pasta stand-alone that's very helpful.

> b) add a flag to select warning level

...which is however what --quiet is supposed to do.

> c) log info to stdout and warn/err to stderr then podman could just show 
> stderr and hide stdout

...which doesn't fit the meaning of standard output though: pasta has
no functional terminal output.

I would just fix --quiet if that suits Podman as well.

> > While at it, make it clear that we're disabling IPv4 or IPv6 if
> > there's no routable interface for the corresponding IP version.
> >
> > Reported-by: Paul Holzinger <pholzing@redhat.com>
> > Link: https://github.com/containers/podman/pull/21563#issuecomment-1937024642
> > Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
> > ---
> > v2: Report that we're disabling IPv4 or IPv6 in the message
> >
> >   conf.c | 4 ++--
> >   1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/conf.c b/conf.c
> > index 5e15b66..3646700 100644
> > --- a/conf.c
> > +++ b/conf.c
> > @@ -579,7 +579,7 @@ static unsigned int conf_ip4(unsigned int ifi,
> >   		ifi = nl_get_ext_if(nl_sock, AF_INET);
> >   
> >   	if (!ifi) {
> > -		warn("No external routable interface for IPv4");
> > +		info("No routable interface for IPv4: IPv4 is disabled");
> >   		return 0;
> >   	}
> >   
> > @@ -651,7 +651,7 @@ static unsigned int conf_ip6(unsigned int ifi,
> >   		ifi = nl_get_ext_if(nl_sock, AF_INET6);
> >   
> >   	if (!ifi) {
> > -		warn("No external routable interface for IPv6");
> > +		info("No routable interface for IPv6: IPv6 is disabled");  
>
> The code only looks for a default route, so if one has some custom 
> internal routes then saying no routable interface found is confusing. 
> What this should really say is:
> No interface with a default route for IPv...

Oops, sorry, I just pushed this.

I think it's clear enough in the sense that by design passt and pasta
need a default route, and if you have a specific route on a given
interface, that interface is not "routable" for our purposes.

But sure, we can make it more explicit. Building on your suggestion --
would this be okay:

  "No interface with a default route for IPv[46]: disabling IPv[64]"

? David?

-- 
Stefano


      reply	other threads:[~2024-02-16 10:43 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-16  5:09 [PATCH v2] conf: No routable interface for IPv4 or IPv6 is informational, not a warning Stefano Brivio
2024-02-16 10:23 ` Paul Holzinger
2024-02-16 10:43   ` Stefano Brivio [this message]

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=20240216114304.7234a83f@elisabeth \
    --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).