Index: sys/ofed/drivers/infiniband/core/ib_addr.c =================================================================== --- sys/ofed/drivers/infiniband/core/ib_addr.c +++ sys/ofed/drivers/infiniband/core/ib_addr.c @@ -860,11 +860,7 @@ struct rdma_dev_addr dev_addr; struct resolve_cb_context ctx; - union { - struct sockaddr _sockaddr; - struct sockaddr_in _sockaddr_in; - struct sockaddr_in6 _sockaddr_in6; - } sgid_addr, dgid_addr; + union rdma_sockaddr sgid_addr, dgid_addr; rdma_gid2ip(&sgid_addr._sockaddr, sgid); rdma_gid2ip(&dgid_addr._sockaddr, dgid); Index: sys/ofed/drivers/infiniband/core/ib_cma.c =================================================================== --- sys/ofed/drivers/infiniband/core/ib_cma.c +++ sys/ofed/drivers/infiniband/core/ib_cma.c @@ -450,18 +450,15 @@ int retval; if (ndev) { - union { - struct sockaddr sock; - struct sockaddr_storage storage; - } addr; + union rdma_sockaddr addr; - rdma_gid2ip(&addr.sock, mgid); + rdma_gid2ip(&addr._sockaddr, mgid); CURVNET_SET_QUIET(ndev->if_vnet); if (join) - retval = -if_addmulti(ndev, &addr.sock, NULL); + retval = -if_addmulti(ndev, &addr._sockaddr, NULL); else - retval = -if_delmulti(ndev, &addr.sock); + retval = -if_delmulti(ndev, &addr._sockaddr); CURVNET_RESTORE(); } else { retval = -ENODEV; Index: sys/ofed/drivers/infiniband/core/ib_sa_query.c =================================================================== --- sys/ofed/drivers/infiniband/core/ib_sa_query.c +++ sys/ofed/drivers/infiniband/core/ib_sa_query.c @@ -668,11 +668,7 @@ struct rdma_dev_addr dev_addr = {.bound_dev_if = rec->ifindex, .net = rec->net ? rec->net : &init_net}; - union { - struct sockaddr _sockaddr; - struct sockaddr_in _sockaddr_in; - struct sockaddr_in6 _sockaddr_in6; - } sgid_addr, dgid_addr; + union rdma_sockaddr sgid_addr, dgid_addr; if (!device->get_netdev) return -EOPNOTSUPP; Index: sys/ofed/include/rdma/ib_addr.h =================================================================== --- sys/ofed/include/rdma/ib_addr.h +++ sys/ofed/include/rdma/ib_addr.h @@ -57,6 +57,13 @@ struct completion comp; }; +union rdma_sockaddr { + struct sockaddr _sockaddr; + struct sockaddr_in _sockaddr_in; + struct sockaddr_in6 _sockaddr_in6; + struct sockaddr_storage _sockaddr_ss; +}; + /** * rdma_addr_register_client - Register an address client. */