SUNRPC: Display compressed (shorthand) IPv6 presentation addresses
authorChuck Lever <chuck.lever@oracle.com>
Thu, 3 Dec 2009 20:58:56 +0000 (15:58 -0500)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Thu, 3 Dec 2009 20:58:56 +0000 (15:58 -0500)
Recent changes to snprintf() introduced the %pI6c formatter, which can
display an IPv6 address with standard shorthanding.  Using a
shorthanded address can save us a few bytes of memory for each stored
presentation address, or a few bytes on the wire when sending these in
a universal address.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
net/sunrpc/addr.c

index c7450c8..6dcdd25 100644 (file)
@@ -55,16 +55,8 @@ static size_t rpc_ntop6_noscopeid(const struct sockaddr *sap,
 
        /*
         * RFC 4291, Section 2.2.1
-        *
-        * To keep the result as short as possible, especially
-        * since we don't shorthand, we don't want leading zeros
-        * in each halfword, so avoid %pI6.
         */
-       return snprintf(buf, buflen, "%x:%x:%x:%x:%x:%x:%x:%x",
-               ntohs(addr->s6_addr16[0]), ntohs(addr->s6_addr16[1]),
-               ntohs(addr->s6_addr16[2]), ntohs(addr->s6_addr16[3]),
-               ntohs(addr->s6_addr16[4]), ntohs(addr->s6_addr16[5]),
-               ntohs(addr->s6_addr16[6]), ntohs(addr->s6_addr16[7]));
+       return snprintf(buf, buflen, "%pI6c", addr);
 }
 
 static size_t rpc_ntop6(const struct sockaddr *sap,