Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 158543
b: refs/heads/master
c: c877b84
h: refs/heads/master
i:
  158541: ee3feea
  158539: f0fff7b
  158535: 43118dd
  158527: cc328b8
v: v3
  • Loading branch information
Chuck Lever authored and Trond Myklebust committed Aug 9, 2009
1 parent 9374a20 commit 545fa5d
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 103 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ba809130bc260fce04141aca01ef9e068d32af2a
refs/heads/master: c877b849d302d1275452af80b7221a2555dc02e1
45 changes: 18 additions & 27 deletions trunk/net/sunrpc/xprtrdma/transport.c
Original file line number Diff line number Diff line change
Expand Up @@ -168,39 +168,30 @@ static struct rpc_xprt_ops xprt_rdma_procs; /* forward reference */
static void
xprt_rdma_format_addresses(struct rpc_xprt *xprt)
{
struct sockaddr_in *addr = (struct sockaddr_in *)
struct sockaddr *sap = (struct sockaddr *)
&rpcx_to_rdmad(xprt).addr;
char *buf;
struct sockaddr_in *sin = (struct sockaddr_in *)sap;
char buf[64];

buf = kzalloc(20, GFP_KERNEL);
if (buf)
snprintf(buf, 20, "%pI4", &addr->sin_addr.s_addr);
xprt->address_strings[RPC_DISPLAY_ADDR] = buf;
(void)rpc_ntop(sap, buf, sizeof(buf));
xprt->address_strings[RPC_DISPLAY_ADDR] = kstrdup(buf, GFP_KERNEL);

buf = kzalloc(8, GFP_KERNEL);
if (buf)
snprintf(buf, 8, "%u", ntohs(addr->sin_port));
xprt->address_strings[RPC_DISPLAY_PORT] = buf;
(void)snprintf(buf, sizeof(buf), "%u", rpc_get_port(sap));
xprt->address_strings[RPC_DISPLAY_PORT] = kstrdup(buf, GFP_KERNEL);

xprt->address_strings[RPC_DISPLAY_PROTO] = "rdma";

buf = kzalloc(48, GFP_KERNEL);
if (buf)
snprintf(buf, 48, "addr=%pI4 port=%u proto=%s",
&addr->sin_addr.s_addr,
ntohs(addr->sin_port), "rdma");
xprt->address_strings[RPC_DISPLAY_ALL] = buf;

buf = kzalloc(10, GFP_KERNEL);
if (buf)
snprintf(buf, 10, "%02x%02x%02x%02x",
NIPQUAD(addr->sin_addr.s_addr));
xprt->address_strings[RPC_DISPLAY_HEX_ADDR] = buf;

buf = kzalloc(8, GFP_KERNEL);
if (buf)
snprintf(buf, 8, "%4hx", ntohs(addr->sin_port));
xprt->address_strings[RPC_DISPLAY_HEX_PORT] = buf;
(void)snprintf(buf, sizeof(buf), "addr=%s port=%s proto=rdma",
xprt->address_strings[RPC_DISPLAY_ADDR],
xprt->address_strings[RPC_DISPLAY_PORT]);
xprt->address_strings[RPC_DISPLAY_ALL] = kstrdup(buf, GFP_KERNEL);

(void)snprintf(buf, sizeof(buf), "%02x%02x%02x%02x",
NIPQUAD(sin->sin_addr.s_addr));
xprt->address_strings[RPC_DISPLAY_HEX_ADDR] = kstrdup(buf, GFP_KERNEL);

(void)snprintf(buf, sizeof(buf), "%4hx", rpc_get_port(sap));
xprt->address_strings[RPC_DISPLAY_HEX_PORT] = kstrdup(buf, GFP_KERNEL);

/* netid */
xprt->address_strings[RPC_DISPLAY_NETID] = "rdma";
Expand Down
109 changes: 34 additions & 75 deletions trunk/net/sunrpc/xprtsock.c
Original file line number Diff line number Diff line change
Expand Up @@ -296,99 +296,58 @@ static inline struct sockaddr_in6 *xs_addr_in6(struct rpc_xprt *xprt)
return (struct sockaddr_in6 *) &xprt->addr;
}

static void xs_format_ipv4_peer_addresses(struct rpc_xprt *xprt,
const char *protocol,
const char *netid)
static void xs_format_common_peer_addresses(struct rpc_xprt *xprt)
{
struct sockaddr_in *addr = xs_addr_in(xprt);
char *buf;

buf = kzalloc(20, GFP_KERNEL);
if (buf) {
snprintf(buf, 20, "%pI4", &addr->sin_addr.s_addr);
}
xprt->address_strings[RPC_DISPLAY_ADDR] = buf;
struct sockaddr *sap = xs_addr(xprt);
char buf[128];

buf = kzalloc(8, GFP_KERNEL);
if (buf) {
snprintf(buf, 8, "%u",
ntohs(addr->sin_port));
}
xprt->address_strings[RPC_DISPLAY_PORT] = buf;
(void)rpc_ntop(sap, buf, sizeof(buf));
xprt->address_strings[RPC_DISPLAY_ADDR] = kstrdup(buf, GFP_KERNEL);

xprt->address_strings[RPC_DISPLAY_PROTO] = protocol;
(void)snprintf(buf, sizeof(buf), "%u", rpc_get_port(sap));
xprt->address_strings[RPC_DISPLAY_PORT] = kstrdup(buf, GFP_KERNEL);

buf = kzalloc(48, GFP_KERNEL);
if (buf) {
snprintf(buf, 48, "addr=%pI4 port=%u proto=%s",
&addr->sin_addr.s_addr,
ntohs(addr->sin_port),
protocol);
}
xprt->address_strings[RPC_DISPLAY_ALL] = buf;
(void)snprintf(buf, sizeof(buf), "addr=%s port=%s proto=%s",
xprt->address_strings[RPC_DISPLAY_ADDR],
xprt->address_strings[RPC_DISPLAY_PORT],
xprt->address_strings[RPC_DISPLAY_PROTO]);
xprt->address_strings[RPC_DISPLAY_ALL] = kstrdup(buf, GFP_KERNEL);

buf = kzalloc(10, GFP_KERNEL);
if (buf) {
snprintf(buf, 10, "%02x%02x%02x%02x",
NIPQUAD(addr->sin_addr.s_addr));
}
xprt->address_strings[RPC_DISPLAY_HEX_ADDR] = buf;
(void)snprintf(buf, sizeof(buf), "%4hx", rpc_get_port(sap));
xprt->address_strings[RPC_DISPLAY_HEX_PORT] = kstrdup(buf, GFP_KERNEL);
}

buf = kzalloc(8, GFP_KERNEL);
if (buf) {
snprintf(buf, 8, "%4hx",
ntohs(addr->sin_port));
}
xprt->address_strings[RPC_DISPLAY_HEX_PORT] = buf;
static void xs_format_ipv4_peer_addresses(struct rpc_xprt *xprt,
const char *protocol,
const char *netid)
{
struct sockaddr_in *sin = xs_addr_in(xprt);
char buf[16];

xprt->address_strings[RPC_DISPLAY_PROTO] = protocol;
xprt->address_strings[RPC_DISPLAY_NETID] = netid;

(void)snprintf(buf, sizeof(buf), "%02x%02x%02x%02x",
NIPQUAD(sin->sin_addr.s_addr));
xprt->address_strings[RPC_DISPLAY_HEX_ADDR] = kstrdup(buf, GFP_KERNEL);

xs_format_common_peer_addresses(xprt);
}

static void xs_format_ipv6_peer_addresses(struct rpc_xprt *xprt,
const char *protocol,
const char *netid)
{
struct sockaddr_in6 *addr = xs_addr_in6(xprt);
char *buf;

buf = kzalloc(40, GFP_KERNEL);
if (buf) {
snprintf(buf, 40, "%pI6",&addr->sin6_addr);
}
xprt->address_strings[RPC_DISPLAY_ADDR] = buf;

buf = kzalloc(8, GFP_KERNEL);
if (buf) {
snprintf(buf, 8, "%u",
ntohs(addr->sin6_port));
}
xprt->address_strings[RPC_DISPLAY_PORT] = buf;
struct sockaddr_in6 *sin6 = xs_addr_in6(xprt);
char buf[48];

xprt->address_strings[RPC_DISPLAY_PROTO] = protocol;
xprt->address_strings[RPC_DISPLAY_NETID] = netid;

buf = kzalloc(64, GFP_KERNEL);
if (buf) {
snprintf(buf, 64, "addr=%pI6 port=%u proto=%s",
&addr->sin6_addr,
ntohs(addr->sin6_port),
protocol);
}
xprt->address_strings[RPC_DISPLAY_ALL] = buf;

buf = kzalloc(36, GFP_KERNEL);
if (buf)
snprintf(buf, 36, "%pi6", &addr->sin6_addr);

xprt->address_strings[RPC_DISPLAY_HEX_ADDR] = buf;

buf = kzalloc(8, GFP_KERNEL);
if (buf) {
snprintf(buf, 8, "%4hx",
ntohs(addr->sin6_port));
}
xprt->address_strings[RPC_DISPLAY_HEX_PORT] = buf;
(void)snprintf(buf, sizeof(buf), "%pi6", &sin6->sin6_addr);
xprt->address_strings[RPC_DISPLAY_HEX_ADDR] = kstrdup(buf, GFP_KERNEL);

xprt->address_strings[RPC_DISPLAY_NETID] = netid;
xs_format_common_peer_addresses(xprt);
}

static void xs_free_peer_addresses(struct rpc_xprt *xprt)
Expand Down

0 comments on commit 545fa5d

Please sign in to comment.