Thread (40 messages) 40 messages, 6 authors, 2009-08-29

Re: [RFC PATCH V2] lib/vsprintf.c: Add struct sockaddr * "%pN<foo>" output

From: Chuck Lever <chuck.lever@oracle.com>
Date: 2009-08-19 23:01:35

On Aug 19, 2009, at 6:36 PM, Joe Perches wrote:
On Wed, 2009-08-19 at 18:20 -0400, Chuck Lever wrote:
quoted
On Aug 19, 2009, at 4:44 PM, Joe Perches wrote:
quoted
I'm not too sure there's much value in ever more formatters for
relatively simple things or in printing something like port or
scope without the ip address.

%hu ntohs(sa6->sin6_port)
or
%d or 0x%x ntohl(sa6->sin6_flowinfo)

seem pretty straightforward to me.
It's the same issue for port numbers as it is for addresses: though
the port field is the same size in each, it's at different offsets in
AF_INET and AF_INET6 addresses, so extra logic is still needed to  
sort
that at each call site.
I should add that the scope ID and flowinfo tag are IPv6 only, so they  
really don't have the same problem.  If you have to print a scope ID,  
you pretty much know you are dealing only with sockaddr_in6.
quoted
As an example, an rpcbind query cares about the port number result,
but usually not the address.  A human-readable message could show the
returned port number, but leave out the address.  Without a separate
formatter, you would still need extra logic around each debugging
message (for example) to choose how to print the port number.

You could probably argue, though, that this is a less common need  
than
printing addresses.
I suppose an address exclude could be added to %pN
if really needed.  Maybe "%pNx(specifiers)"
quoted
quoted
Here's another tentative patch that does both using square
brackets around IPv6 addresses with a port number and
allows selection of the port number style ":dddd" or ":hi.lo"
The "hi.lo" form is always separated from the address by a dot, not  
by
a colon, and square brackets are never used in that case.  The hi.lo
format is probably enough of a special case that a separate specifier
for that one is unnecessary.
Is the RPC code never used with a ipv6_addr_v4mapped address?
::192.168.0.1.1.1 would look pretty ugly
As I understand it, TI-RPC does not ever use mapped v4 addresses on  
the wire (only pure IPv4 and IPv6).  So they shouldn't actually appear  
in the universal address format, in practice.

--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help