Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 217283
b: refs/heads/master
c: 9247685
h: refs/heads/master
i:
  217281: 457d4b2
  217279: 25d77e2
v: v3
  • Loading branch information
Chuck Lever authored and J. Bruce Fields committed Oct 21, 2010
1 parent cc3a1e7 commit aca2ef3
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 2 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: 4232e8634ad82c5a53389e4016de15a8b15c09c3
refs/heads/master: 9247685088398cf21bcb513bd2832b4cd42516c4
33 changes: 32 additions & 1 deletion trunk/net/sunrpc/xprtsock.c
Original file line number Diff line number Diff line change
Expand Up @@ -1629,7 +1629,6 @@ static struct socket *xs_create_sock(struct rpc_xprt *xprt,
protocol, -err);
goto out;
}
transport->srcaddr.ss_family = family;
xs_reclassify_socket(family, sock);

if (xs_bind(transport, sock)) {
Expand Down Expand Up @@ -2136,6 +2135,31 @@ static struct rpc_xprt_ops bc_tcp_ops = {
.print_stats = xs_tcp_print_stats,
};

static int xs_init_anyaddr(const int family, struct sockaddr *sap)
{
static const struct sockaddr_in sin = {
.sin_family = AF_INET,
.sin_addr.s_addr = htonl(INADDR_ANY),
};
static const struct sockaddr_in6 sin6 = {
.sin6_family = AF_INET6,
.sin6_addr = IN6ADDR_ANY_INIT,
};

switch (family) {
case AF_INET:
memcpy(sap, &sin, sizeof(sin));
break;
case AF_INET6:
memcpy(sap, &sin6, sizeof(sin6));
break;
default:
dprintk("RPC: %s: Bad address family\n", __func__);
return -EAFNOSUPPORT;
}
return 0;
}

static struct rpc_xprt *xs_setup_xprt(struct xprt_create *args,
unsigned int slot_table_size)
{
Expand All @@ -2159,6 +2183,13 @@ static struct rpc_xprt *xs_setup_xprt(struct xprt_create *args,
xprt->addrlen = args->addrlen;
if (args->srcaddr)
memcpy(&new->srcaddr, args->srcaddr, args->addrlen);
else {
int err;
err = xs_init_anyaddr(args->dstaddr->sa_family,
(struct sockaddr *)&new->srcaddr);
if (err != 0)
return ERR_PTR(err);
}

return xprt;
}
Expand Down

0 comments on commit aca2ef3

Please sign in to comment.