[rds-devel] [PATCH 18/19] Teach transport->laddr_check() aware of struct net. - Make tcp_laddr_check() really works. - Make IB/IW laddr_check() can be compiled without warnning only.
Jie Liu
jeff.liu at oracle.com
Sun Oct 7 05:18:10 PDT 2012
Signed-off-by: Jie Liu <jeff.liu at oracle.com>
---
net/rds/ib.c | 2 +-
net/rds/iw.c | 2 +-
net/rds/rds.h | 2 +-
net/rds/tcp.c | 5 +++--
net/rds/transport.c | 2 +-
5 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/net/rds/ib.c b/net/rds/ib.c
index b4c8b00..d0e5651 100644
--- a/net/rds/ib.c
+++ b/net/rds/ib.c
@@ -317,7 +317,7 @@ static void rds_ib_ic_info(struct socket *sock, unsigned int len,
* allowed to influence which paths have priority. We could call userspace
* asserting this policy "routing".
*/
-static int rds_ib_laddr_check(__be32 addr)
+static int rds_ib_laddr_check(struct net *net, __be32 addr)
{
int ret;
struct rdma_cm_id *cm_id;
diff --git a/net/rds/iw.c b/net/rds/iw.c
index 7826d46..00f810b 100644
--- a/net/rds/iw.c
+++ b/net/rds/iw.c
@@ -218,7 +218,7 @@ static void rds_iw_ic_info(struct socket *sock, unsigned int len,
* allowed to influence which paths have priority. We could call userspace
* asserting this policy "routing".
*/
-static int rds_iw_laddr_check(__be32 addr)
+static int rds_iw_laddr_check(struct net *net, __be32 addr)
{
int ret;
struct rdma_cm_id *cm_id;
diff --git a/net/rds/rds.h b/net/rds/rds.h
index a106a0d..0ea1955 100644
--- a/net/rds/rds.h
+++ b/net/rds/rds.h
@@ -426,7 +426,7 @@ struct rds_transport {
unsigned int t_prefer_loopback:1;
unsigned int t_type;
- int (*laddr_check)(__be32 addr);
+ int (*laddr_check)(struct net *net, __be32 addr);
int (*conn_alloc)(struct rds_connection *conn, gfp_t gfp);
void (*conn_free)(struct net *net, void *data);
int (*conn_connect)(struct rds_connection *conn);
diff --git a/net/rds/tcp.c b/net/rds/tcp.c
index 2b61a8b..3f4b7ca 100644
--- a/net/rds/tcp.c
+++ b/net/rds/tcp.c
@@ -187,10 +187,11 @@ out:
spin_unlock_irqrestore(&net->rds.rds_tcp_tc_list_lock, flags);
}
-static int rds_tcp_laddr_check(__be32 addr)
+static int rds_tcp_laddr_check(struct net *net, __be32 addr)
{
- if (inet_addr_type(&init_net, addr) == RTN_LOCAL)
+ if (inet_addr_type(net, addr) == RTN_LOCAL)
return 0;
+
return -EADDRNOTAVAIL;
}
diff --git a/net/rds/transport.c b/net/rds/transport.c
index af1dfad..9c3c38a 100644
--- a/net/rds/transport.c
+++ b/net/rds/transport.c
@@ -90,7 +90,7 @@ struct rds_transport *rds_trans_get_preferred(struct net *net, __be32 addr)
for (i = 0; i < RDS_TRANS_COUNT; i++) {
trans = transports[i];
- if (trans && (trans->laddr_check(addr) == 0) &&
+ if (trans && (trans->laddr_check(net, addr) == 0) &&
(!trans->t_owner || try_module_get(trans->t_owner))) {
ret = trans;
break;
--
1.7.4.1
More information about the rds-devel
mailing list