Changeset View
Changeset View
Standalone View
Standalone View
sys/ofed/include/rdma/ib_addr.h
Show First 20 Lines • Show All 51 Lines • ▼ Show 20 Lines | |||||
#include <rdma/ib_pack.h> | #include <rdma/ib_pack.h> | ||||
#include <net/ipv6.h> | #include <net/ipv6.h> | ||||
struct rdma_addr_client { | struct rdma_addr_client { | ||||
atomic_t refcount; | atomic_t refcount; | ||||
struct completion comp; | struct completion comp; | ||||
}; | }; | ||||
union rdma_sockaddr { | |||||
struct sockaddr _sockaddr; | |||||
struct sockaddr_in _sockaddr_in; | |||||
struct sockaddr_in6 _sockaddr_in6; | |||||
kib: I believe you should add sockaddr_storage to the union, to get proper alignment.
From what I… | |||||
struct sockaddr_storage _sockaddr_ss; | |||||
}; | |||||
/** | /** | ||||
* rdma_addr_register_client - Register an address client. | * rdma_addr_register_client - Register an address client. | ||||
*/ | */ | ||||
void rdma_addr_register_client(struct rdma_addr_client *client); | void rdma_addr_register_client(struct rdma_addr_client *client); | ||||
/** | /** | ||||
* rdma_addr_unregister_client - Deregister an address client. | * rdma_addr_unregister_client - Deregister an address client. | ||||
* @client: Client object to deregister. | * @client: Client object to deregister. | ||||
▲ Show 20 Lines • Show All 299 Lines • Show Last 20 Lines |
I believe you should add sockaddr_storage to the union, to get proper alignment.
From what I see, sockaddr does not have any alignment requirements, and the strongest is sockaddr_in6 for 4 bytes. sockaddr_storage ensures 8 bytes when needed.