netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* oh crap... (re: %p6)
@ 2008-10-29  8:54 David Miller
  2008-10-29 14:55 ` Harvey Harrison
  0 siblings, 1 reply; 11+ messages in thread
From: David Miller @ 2008-10-29  8:54 UTC (permalink / raw)
  To: harvey.harrison; +Cc: netdev


I think we'll need to revert all of this or find some fix soon.  GCC
warns about %p with a '#' flag modifier it seems :-(

net/ipv6/ip6_flowlabel.c: In function 'ip6fl_seq_show':
net/ipv6/ip6_flowlabel.c:707: warning: '#' flag used with '%p' printf format

this is with:

davem@sunset:~/src/GIT/net-next-2.6$ gcc --version
gcc (GCC) 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

davem@sunset:~/src/GIT/net-next-2.6$ 

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: oh crap... (re: %p6)
  2008-10-29  8:54 oh crap... (re: %p6) David Miller
@ 2008-10-29 14:55 ` Harvey Harrison
  2008-10-29 15:39   ` Joe Perches
  0 siblings, 1 reply; 11+ messages in thread
From: Harvey Harrison @ 2008-10-29 14:55 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

On Wed, 2008-10-29 at 01:54 -0700, David Miller wrote:
> I think we'll need to revert all of this or find some fix soon.  GCC
> warns about %p with a '#' flag modifier it seems :-(
> 
> net/ipv6/ip6_flowlabel.c: In function 'ip6fl_seq_show':
> net/ipv6/ip6_flowlabel.c:707: warning: '#' flag used with '%p' printf format

The easiest would be to pick a separate modifier for the raw case.  Or
revert the removal of NIP6_SEQFMT, I'll shoot you a patch shortly,
any preference in what modifier should be used?

Harvey


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: oh crap... (re: %p6)
  2008-10-29 14:55 ` Harvey Harrison
@ 2008-10-29 15:39   ` Joe Perches
  2008-10-29 17:24     ` Harvey Harrison
  0 siblings, 1 reply; 11+ messages in thread
From: Joe Perches @ 2008-10-29 15:39 UTC (permalink / raw)
  To: Harvey Harrison; +Cc: David Miller, netdev

On Wed, 2008-10-29 at 07:55 -0700, Harvey Harrison wrote:
> On Wed, 2008-10-29 at 01:54 -0700, David Miller wrote:
> > I think we'll need to revert all of this or find some fix soon.  GCC
> > warns about %p with a '#' flag modifier it seems :-(
> > 
> > net/ipv6/ip6_flowlabel.c: In function 'ip6fl_seq_show':
> > net/ipv6/ip6_flowlabel.c:707: warning: '#' flag used with '%p' printf format
> 
> The easiest would be to pick a separate modifier for the raw case.  Or
> revert the removal of NIP6_SEQFMT, I'll shoot you a patch shortly,
> any preference in what modifier should be used?

I'd prefer something visual that represents "no colon".

Maybe %p6-: 

Or perhaps slightly worse to change the colon separated 
default %p6 to %p:6

There are another cases where the v6 address should have
as few leading zeros as possible or where the interior
zeros should be collapsed using :: separators.

Perhaps a good solution is to use the equivalent of
a "display-hint" after the %p6

Maybe use combinations of:

%p6:: use "::" and collapse when 0
%p6-: raw hex
%p6-0 %x not %04x
%p6.4 last u32 as ipv4 dotted decimal




^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: oh crap... (re: %p6)
  2008-10-29 15:39   ` Joe Perches
@ 2008-10-29 17:24     ` Harvey Harrison
  2008-10-29 18:16       ` Joe Perches
  2008-10-29 18:28       ` David Miller
  0 siblings, 2 replies; 11+ messages in thread
From: Harvey Harrison @ 2008-10-29 17:24 UTC (permalink / raw)
  To: Joe Perches; +Cc: David Miller, netdev

On Wed, 2008-10-29 at 08:39 -0700, Joe Perches wrote:
> On Wed, 2008-10-29 at 07:55 -0700, Harvey Harrison wrote:
> > On Wed, 2008-10-29 at 01:54 -0700, David Miller wrote:
> > > I think we'll need to revert all of this or find some fix soon.  GCC
> > > warns about %p with a '#' flag modifier it seems :-(
> > > 
> > > net/ipv6/ip6_flowlabel.c: In function 'ip6fl_seq_show':
> > > net/ipv6/ip6_flowlabel.c:707: warning: '#' flag used with '%p' printf format
> > 
> > The easiest would be to pick a separate modifier for the raw case.  Or
> > revert the removal of NIP6_SEQFMT, I'll shoot you a patch shortly,
> > any preference in what modifier should be used?
> 
> I'd prefer something visual that represents "no colon".
> 
> Maybe %p6-: 

Putting a modifier after the format specifier seems a little strange to me.  But
I'm not sure if I can think of something that's too much better, currently I
was thinking of:

%pI6, %pi6
	%pI6 would act just like %p6
	%pi6 would act just like %#p6

Eventually %pI4 could be added as well. Which would print out the dot-separated
format.

Either that or add a %px<bytes> that prints out raw hex for the number
of <bytes>, so %p6 would stay and %#p6 would become %px16.  While this
is a bit uglier, it could be useful to others elsewhere in-kernel,
perhaps limited to 16 bytes or so.

Dave, I'll wait for your $0.02 before sending in a patch, but I have
both of the above implemented.

Harvey



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: oh crap... (re: %p6)
  2008-10-29 17:24     ` Harvey Harrison
@ 2008-10-29 18:16       ` Joe Perches
  2008-10-29 18:21         ` Harvey Harrison
  2008-10-29 18:31         ` David Miller
  2008-10-29 18:28       ` David Miller
  1 sibling, 2 replies; 11+ messages in thread
From: Joe Perches @ 2008-10-29 18:16 UTC (permalink / raw)
  To: Harvey Harrison; +Cc: David Miller, netdev

On Wed, 2008-10-29 at 10:24 -0700, Harvey Harrison wrote:
> Putting a modifier after the format specifier seems a little strange to me.

Harvey, please remember the whole %p<foo> concept is based on
modifier after format specifier.

I think %p6 followed by combinations of things:

"::" compressed v6, largest block of consecutive 0's replaced with ::
"-:" no separating colons, use space instead
"-0" no leading 0's
".4" last word as ipv4 dotted decimal
"x1" u8 form
"x2" be16
"x4" be32
"x8" be64

So that you could have:

%p6::		1234:000a::c0a8:0101
%p6::-0		1234:a::c0a8:0101
%p6::-0.4	1234:a::192.168.1.1
%p6-0-:x1	0 1 2 3 4 5 6 7 8 9 a b c d e f
%p6x1		00:01:02:03:04:05:06:07:09:0a:0b:0c:0d:0e:0f

etc.  If acceptable, I'll submit a patch.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: oh crap... (re: %p6)
  2008-10-29 18:16       ` Joe Perches
@ 2008-10-29 18:21         ` Harvey Harrison
  2008-10-29 18:32           ` oh crap David Miller
  2008-10-29 18:31         ` David Miller
  1 sibling, 1 reply; 11+ messages in thread
From: Harvey Harrison @ 2008-10-29 18:21 UTC (permalink / raw)
  To: Joe Perches; +Cc: David Miller, netdev

On Wed, 2008-10-29 at 11:16 -0700, Joe Perches wrote:
> On Wed, 2008-10-29 at 10:24 -0700, Harvey Harrison wrote:
> > Putting a modifier after the format specifier seems a little strange to me.
> 
> Harvey, please remember the whole %p<foo> concept is based on
> modifier after format specifier.
> 
> I think %p6 followed by combinations of things:
> 
> "::" compressed v6, largest block of consecutive 0's replaced with ::
> "-:" no separating colons, use space instead
> "-0" no leading 0's
> ".4" last word as ipv4 dotted decimal
> "x1" u8 form
> "x2" be16
> "x4" be32
> "x8" be64
> 

Yes, but if you put anything but alphanumerics after the %p, make sure
you handle that in vsnprintf(), so it will be a bit more involved than
my simplistic ones were.

> So that you could have:
> 
> %p6::		1234:000a::c0a8:0101
> %p6::-0		1234:a::c0a8:0101
> %p6::-0.4	1234:a::192.168.1.1
> %p6-0-:x1	0 1 2 3 4 5 6 7 8 9 a b c d e f
> %p6x1		00:01:02:03:04:05:06:07:09:0a:0b:0c:0d:0e:0f
> 
> etc.  If acceptable, I'll submit a patch.
> 

I'll let Dave comment on whether this flexibility is desired.  Mine was
more an attempt to consolidate a very common (and simplisitic) usage.


Cheers,

Harvey



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: oh crap...
  2008-10-29 17:24     ` Harvey Harrison
  2008-10-29 18:16       ` Joe Perches
@ 2008-10-29 18:28       ` David Miller
  2008-10-29 18:31         ` Harvey Harrison
  1 sibling, 1 reply; 11+ messages in thread
From: David Miller @ 2008-10-29 18:28 UTC (permalink / raw)
  To: harvey.harrison; +Cc: joe, netdev

From: Harvey Harrison <harvey.harrison@gmail.com>
Date: Wed, 29 Oct 2008 10:24:42 -0700

> %pI6, %pi6
> 	%pI6 would act just like %p6
> 	%pi6 would act just like %#p6

I think this form is not a bad idea.

Please send me the patch that does this.

And will you be sending the ipv4 side stuff next?

Thanks.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: oh crap...
  2008-10-29 18:16       ` Joe Perches
  2008-10-29 18:21         ` Harvey Harrison
@ 2008-10-29 18:31         ` David Miller
  2008-10-29 19:13           ` Joe Perches
  1 sibling, 1 reply; 11+ messages in thread
From: David Miller @ 2008-10-29 18:31 UTC (permalink / raw)
  To: joe; +Cc: harvey.harrison, netdev

From: Joe Perches <joe@perches.com>
Date: Wed, 29 Oct 2008 11:16:54 -0700

> On Wed, 2008-10-29 at 10:24 -0700, Harvey Harrison wrote:
> > Putting a modifier after the format specifier seems a little strange to me.
> 
> Harvey, please remember the whole %p<foo> concept is based on
> modifier after format specifier.

I don't think there is any such strict rule, or even that we'd
want to enforce that.

There is nothing wrong with saying something like %pI6 where
the "I" signifies "internet address in 'natural' form" and
"6" is the 'modifier' which you love so much which means
"oh btw, it's ipv6"

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: oh crap...
  2008-10-29 18:28       ` David Miller
@ 2008-10-29 18:31         ` Harvey Harrison
  0 siblings, 0 replies; 11+ messages in thread
From: Harvey Harrison @ 2008-10-29 18:31 UTC (permalink / raw)
  To: David Miller; +Cc: joe, netdev

On Wed, 2008-10-29 at 11:28 -0700, David Miller wrote:
> From: Harvey Harrison <harvey.harrison@gmail.com>
> Date: Wed, 29 Oct 2008 10:24:42 -0700
> 
> > %pI6, %pi6
> > 	%pI6 would act just like %p6
> > 	%pi6 would act just like %#p6
> 
> I think this form is not a bad idea.
> 
> Please send me the patch that does this.
> 
> And will you be sending the ipv4 side stuff next?
> 

I can do if you'd like it, I'll sneak %pI4 into the patch fixing up
the warnings I've made and do a conversion of the IPv4 stuff later this
week.

Cheers,

Harvey


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: oh crap...
  2008-10-29 18:21         ` Harvey Harrison
@ 2008-10-29 18:32           ` David Miller
  0 siblings, 0 replies; 11+ messages in thread
From: David Miller @ 2008-10-29 18:32 UTC (permalink / raw)
  To: harvey.harrison; +Cc: joe, netdev

From: Harvey Harrison <harvey.harrison@gmail.com>
Date: Wed, 29 Oct 2008 11:21:19 -0700

> I'll let Dave comment on whether this flexibility is desired.  Mine was
> more an attempt to consolidate a very common (and simplisitic) usage.

I like Harvey's suggestion the best.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: oh crap...
  2008-10-29 18:31         ` David Miller
@ 2008-10-29 19:13           ` Joe Perches
  0 siblings, 0 replies; 11+ messages in thread
From: Joe Perches @ 2008-10-29 19:13 UTC (permalink / raw)
  To: David Miller; +Cc: harvey.harrison, netdev

On Wed, 2008-10-29 at 11:31 -0700, David Miller wrote:
> From: Joe Perches <joe@perches.com>
> Date: Wed, 29 Oct 2008 11:16:54 -0700
> > On Wed, 2008-10-29 at 10:24 -0700, Harvey Harrison wrote:
> > > Putting a modifier after the format specifier seems a little strange to me.
> > Harvey, please remember the whole %p<foo> concept is based on
> > modifier after format specifier.
> I don't think there is any such strict rule, or even that we'd
> want to enforce that.

Of course there's a strict rule.

"%<flags>p" is a normal format conversion specifier.
It takes a pointer as its argument.
Character(s) immediately after the pointer conversion
specifier "p" may be linux-specific format modifiers.

> There is nothing wrong with saying something like %pI6 where
> the "I" signifies "internet address in 'natural' form" and
> "6" is the 'modifier' which you love so much which means
> "oh btw, it's ipv6"

True enough.  6 and I6 are both modifiers.

I have been doodling with sparse to verify the pointer types.
I just want a simple rule: char after "%<flag>p" specifies pointer type.

Ideally it would be:

4: __be32 *
6: struct in6_addr *
R: struct resource *
M: char *

cheers, Joe


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2008-10-29 19:13 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-29  8:54 oh crap... (re: %p6) David Miller
2008-10-29 14:55 ` Harvey Harrison
2008-10-29 15:39   ` Joe Perches
2008-10-29 17:24     ` Harvey Harrison
2008-10-29 18:16       ` Joe Perches
2008-10-29 18:21         ` Harvey Harrison
2008-10-29 18:32           ` oh crap David Miller
2008-10-29 18:31         ` David Miller
2008-10-29 19:13           ` Joe Perches
2008-10-29 18:28       ` David Miller
2008-10-29 18:31         ` Harvey Harrison

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 NNTP newsgroup(s).