Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=756805e7a76bcd2aae07fe31786fe453375e60b1
Commit:     756805e7a76bcd2aae07fe31786fe453375e60b1
Parent:     8945ee5e27156ef9708bc3a11da87ba689aa38b6
Author:     Chuck Lever <[EMAIL PROTECTED]>
AuthorDate: Thu Aug 16 16:03:26 2007 -0400
Committer:  Trond Myklebust <[EMAIL PROTECTED]>
CommitDate: Tue Oct 9 17:16:29 2007 -0400

    SUNRPC: Add support for formatted universal addresses
    
    "Universal addresses" are a string representation of an IP address and
    port.  They are described fully in RFC 3530, section 2.2.  Add support
    for generating them in the RPC client's socket transport module.
    
    Signed-off-by: Chuck Lever <[EMAIL PROTECTED]>
---
 include/linux/sunrpc/xprt.h |    1 +
 net/sunrpc/xprtsock.c       |   18 ++++++++++++++++++
 2 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/include/linux/sunrpc/xprt.h b/include/linux/sunrpc/xprt.h
index 4596c26..902a9c0 100644
--- a/include/linux/sunrpc/xprt.h
+++ b/include/linux/sunrpc/xprt.h
@@ -55,6 +55,7 @@ enum rpc_display_format_t {
        RPC_DISPLAY_ALL,
        RPC_DISPLAY_HEX_ADDR,
        RPC_DISPLAY_HEX_PORT,
+       RPC_DISPLAY_UNIVERSAL_ADDR,
        RPC_DISPLAY_MAX,
 };
 
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
index 01121a4..7a154e4 100644
--- a/net/sunrpc/xprtsock.c
+++ b/net/sunrpc/xprtsock.c
@@ -328,6 +328,15 @@ static void xs_format_ipv4_peer_addresses(struct rpc_xprt 
*xprt)
                                ntohs(addr->sin_port));
        }
        xprt->address_strings[RPC_DISPLAY_HEX_PORT] = buf;
+
+       buf = kzalloc(30, GFP_KERNEL);
+       if (buf) {
+               snprintf(buf, 30, NIPQUAD_FMT".%u.%u",
+                               NIPQUAD(addr->sin_addr.s_addr),
+                               ntohs(addr->sin_port) >> 8,
+                               ntohs(addr->sin_port) & 0xff);
+       }
+       xprt->address_strings[RPC_DISPLAY_UNIVERSAL_ADDR] = buf;
 }
 
 static void xs_format_ipv6_peer_addresses(struct rpc_xprt *xprt)
@@ -380,6 +389,15 @@ static void xs_format_ipv6_peer_addresses(struct rpc_xprt 
*xprt)
                                ntohs(addr->sin6_port));
        }
        xprt->address_strings[RPC_DISPLAY_HEX_PORT] = buf;
+
+       buf = kzalloc(50, GFP_KERNEL);
+       if (buf) {
+               snprintf(buf, 50, NIP6_FMT".%u.%u",
+                               NIP6(addr->sin6_addr),
+                               ntohs(addr->sin6_port) >> 8,
+                               ntohs(addr->sin6_port) & 0xff);
+       }
+       xprt->address_strings[RPC_DISPLAY_UNIVERSAL_ADDR] = buf;
 }
 
 static void xs_free_peer_addresses(struct rpc_xprt *xprt)
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to