* [PATCH v2] conf: No routable interface for IPv4 or IPv6 is informational, not a warning
@ 2024-02-16 5:09 Stefano Brivio
2024-02-16 10:23 ` Paul Holzinger
0 siblings, 1 reply; 3+ messages in thread
From: Stefano Brivio @ 2024-02-16 5:09 UTC (permalink / raw)
To: passt-dev; +Cc: Paul Holzinger, David Gibson
...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).
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");
return 0;
}
--
@@ -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");
return 0;
}
--
2.39.2
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v2] conf: No routable interface for IPv4 or IPv6 is informational, not a warning
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
0 siblings, 1 reply; 3+ messages in thread
From: Paul Holzinger @ 2024-02-16 10:23 UTC (permalink / raw)
To: Stefano Brivio, passt-dev; +Cc: David Gibson
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? 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. 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)
b) add a flag to select warning level
c) log info to stdout and warn/err to stderr then podman could just show
stderr and hide stdout
>
> 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...
> return 0;
> }
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2] conf: No routable interface for IPv4 or IPv6 is informational, not a warning
2024-02-16 10:23 ` Paul Holzinger
@ 2024-02-16 10:43 ` Stefano Brivio
0 siblings, 0 replies; 3+ messages in thread
From: Stefano Brivio @ 2024-02-16 10:43 UTC (permalink / raw)
To: Paul Holzinger, David Gibson; +Cc: passt-dev
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
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-02-16 10:43 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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
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).