Gcc 11 reports
error: array subscript 'struct sockaddr_in6[0]' is partly
outside array bounds of 'struct sockaddr[1]'
due to a bug in gcc that it becomes confused with the union.
To work around this we move to struct sockaddr_storage from
struct sockaddr.
Test-Parameters: trivial
Change-Id: I586042d6e3c59be8c63e2821659cf9d3bcdac8e3
Signed-off-by: James Simmons <jsimmons@infradead.org>
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/55172
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Chris Horn <chris.horn@hpe.com>
Reviewed-by: Arshad Hussain <arshad.hussain@aeoncomputing.com>
Reviewed-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
{
struct rdma_cm_id *cmid;
struct kib_net *net = peer_ni->ibp_ni->ni_data;
{
struct rdma_cm_id *cmid;
struct kib_net *net = peer_ni->ibp_ni->ni_data;
- struct sockaddr srcaddr;
- struct sockaddr dstaddr;
+ struct sockaddr_storage srcaddr;
+ struct sockaddr_storage dstaddr;
int rc;
LASSERT (net != NULL);
int rc;
LASSERT (net != NULL);
kiblnd_peer_addref(peer_ni); /* cmid's ref */
if (*kiblnd_tunables.kib_use_priv_port) {
kiblnd_peer_addref(peer_ni); /* cmid's ref */
if (*kiblnd_tunables.kib_use_priv_port) {
- rc = kiblnd_resolve_addr(cmid, &srcaddr, &dstaddr,
+ rc = kiblnd_resolve_addr(cmid, (struct sockaddr *)&srcaddr,
+ (struct sockaddr *)&dstaddr,
kiblnd_timeout() * 1000);
} else {
kiblnd_timeout() * 1000);
} else {
- rc = rdma_resolve_addr(cmid, &srcaddr, &dstaddr,
+ rc = rdma_resolve_addr(cmid, (struct sockaddr *)&srcaddr,
+ (struct sockaddr *)&dstaddr,
kiblnd_timeout() * 1000);
}
if (rc != 0) {
kiblnd_timeout() * 1000);
}
if (rc != 0) {