On Thu, 2008-07-31 at 12:06 -0700, Sean Hefty wrote:
> >There are a few places that the RDMA CM code handles IPv6 by doing
> >
> >     struct sockaddr         addr;
> >     u8                      pad[sizeof(struct sockaddr_in6) -
> >                                 sizeof(struct sockaddr)];
> >
> >This is fragile and ugly; handle this in a better way with just
> >
> >     struct sockaddr_storage addr;
> >
> >Signed-off-by: Roland Dreier <[EMAIL PROTECTED]>
> >---
> >Any objections to merging the cleanup below?
> 
> nope - thanks
> 
> 
This is the patch above plus modifications in addr.c



Signed-off-by: Aleksey Senin <[EMAIL PROTECTED]>
---
 drivers/infiniband/core/addr.c |    4 ++--
 drivers/infiniband/core/cma.c  |    4 +---
 drivers/infiniband/core/ucma.c |   10 ++++------
 3 files changed, 7 insertions(+), 11 deletions(-)

diff --git a/drivers/infiniband/core/addr.c b/drivers/infiniband/core/addr.c
index 09a2bec..c5b623b 100644
--- a/drivers/infiniband/core/addr.c
+++ b/drivers/infiniband/core/addr.c
@@ -49,8 +49,8 @@ MODULE_LICENSE("Dual BSD/GPL");
 
 struct addr_req {
        struct list_head list;
-       struct sockaddr src_addr;
-       struct sockaddr dst_addr;
+       struct sockaddr_storage src_addr;
+       struct sockaddr_storage dst_addr;
        struct rdma_dev_addr *addr;
        struct rdma_addr_client *client;
        void *context;
diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index e980ff3..a16510b 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -155,9 +155,7 @@ struct cma_multicast {
        } multicast;
        struct list_head        list;
        void                    *context;
-       struct sockaddr         addr;
-       u8                      pad[sizeof(struct sockaddr_in6) -
-                                   sizeof(struct sockaddr)];
+       struct sockaddr_storage addr;
 };
 
 struct cma_work {
diff --git a/drivers/infiniband/core/ucma.c b/drivers/infiniband/core/ucma.c
index b41dd26..d5a825f 100644
--- a/drivers/infiniband/core/ucma.c
+++ b/drivers/infiniband/core/ucma.c
@@ -81,9 +81,7 @@ struct ucma_multicast {
 
        u64                     uid;
        struct list_head        list;
-       struct sockaddr         addr;
-       u8                      pad[sizeof(struct sockaddr_in6) -
-                                   sizeof(struct sockaddr)];
+       struct sockaddr_storage addr;
 };
 
 struct ucma_event {
@@ -913,7 +911,7 @@ static ssize_t ucma_join_multicast(struct ucma_file *file,
 
        mc->uid = cmd.uid;
        memcpy(&mc->addr, &cmd.addr, sizeof cmd.addr);
-       ret = rdma_join_multicast(ctx->cm_id, &mc->addr, mc);
+       ret = rdma_join_multicast(ctx->cm_id, (struct sockaddr *) &mc->addr, 
mc);
        if (ret)
                goto err2;
 
@@ -929,7 +927,7 @@ static ssize_t ucma_join_multicast(struct ucma_file *file,
        return 0;
 
 err3:
-       rdma_leave_multicast(ctx->cm_id, &mc->addr);
+       rdma_leave_multicast(ctx->cm_id, (struct sockaddr *) &mc->addr);
        ucma_cleanup_mc_events(mc);
 err2:
        mutex_lock(&mut);
@@ -975,7 +973,7 @@ static ssize_t ucma_leave_multicast(struct ucma_file *file,
                goto out;
        }
 
-       rdma_leave_multicast(mc->ctx->cm_id, &mc->addr);
+       rdma_leave_multicast(mc->ctx->cm_id, (struct sockaddr *) &mc->addr);
        mutex_lock(&mc->ctx->file->mut);
        ucma_cleanup_mc_events(mc);
        list_del(&mc->list);
-- 
1.5.6.dirty


_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to