From: Jason Gunthorpe <jgg@xxxxxxxxxxxx> Date: Mon, 13 May 2019 01:11:42 +0000 > I think the specific sockaddr types should only ever be used if we > *know* the sa_family is that type. If the sa_family is not known then > it should be sockaddr or sockaddr_storage. Otherwise things get very > confusing. > > When using sockaddr_storage code always has the cast to sockaddr > anyhow, as it is not a union, so this jaunty cast is not out of place > in sockets code. >From what I can see, each and every call side of these helpers like rdma_gid2ip() et al. redefine this union type over and over and over again in the local function. That's the real problem. It seems that if we just defined it explicitly in one place, like include/rdma/ib_addr.h, then we could have tdma_gid2ip(), addr_resolve(), and rdma_resolve_ip() take that type explcitily. No?