}
 
 static void
-xprt_rdma_format_addresses(struct rpc_xprt *xprt)
+xprt_rdma_format_addresses(struct rpc_xprt *xprt, struct sockaddr *sap)
 {
-       struct sockaddr *sap = (struct sockaddr *)
-                                       &rpcx_to_rdmad(xprt).addr;
        char buf[128];
 
        switch (sap->sa_family) {
        struct rpc_xprt *xprt;
        struct rpcrdma_xprt *new_xprt;
        struct rpcrdma_ep *new_ep;
-       struct sockaddr_in *sin;
+       struct sockaddr *sap;
        int rc;
 
        if (args->addrlen > sizeof(xprt->addr)) {
         * Set up RDMA-specific connect data.
         */
 
-       /* Put server RDMA address in local cdata */
-       memcpy(&cdata.addr, args->dstaddr, args->addrlen);
+       sap = (struct sockaddr *)&cdata.addr;
+       memcpy(sap, args->dstaddr, args->addrlen);
 
        /* Ensure xprt->addr holds valid server TCP (not RDMA)
         * address, for any side protocols which peek at it */
        xprt->prot = IPPROTO_TCP;
        xprt->addrlen = args->addrlen;
-       memcpy(&xprt->addr, &cdata.addr, xprt->addrlen);
+       memcpy(&xprt->addr, sap, xprt->addrlen);
 
-       sin = (struct sockaddr_in *)&cdata.addr;
-       if (ntohs(sin->sin_port) != 0)
+       if (rpc_get_port(sap))
                xprt_set_bound(xprt);
 
-       dprintk("RPC:       %s: %pI4:%u\n",
-               __func__, &sin->sin_addr.s_addr, ntohs(sin->sin_port));
-
-       /* Set max requests */
        cdata.max_requests = xprt->max_reqs;
 
-       /* Set some length limits */
        cdata.rsize = RPCRDMA_MAX_SEGS * PAGE_SIZE; /* RDMA write max */
        cdata.wsize = RPCRDMA_MAX_SEGS * PAGE_SIZE; /* RDMA read max */
 
 
        new_xprt = rpcx_to_rdmax(xprt);
 
-       rc = rpcrdma_ia_open(new_xprt, (struct sockaddr *) &cdata.addr,
-                               xprt_rdma_memreg_strategy);
+       rc = rpcrdma_ia_open(new_xprt, sap, xprt_rdma_memreg_strategy);
        if (rc)
                goto out1;
 
        INIT_DELAYED_WORK(&new_xprt->rx_connect_worker,
                          xprt_rdma_connect_worker);
 
-       xprt_rdma_format_addresses(xprt);
+       xprt_rdma_format_addresses(xprt, sap);
        xprt->max_payload = new_xprt->rx_ia.ri_ops->ro_maxpages(new_xprt);
        if (xprt->max_payload == 0)
                goto out4;
        if (!try_module_get(THIS_MODULE))
                goto out4;
 
+       dprintk("RPC:       %s: %s:%s\n", __func__,
+               xprt->address_strings[RPC_DISPLAY_ADDR],
+               xprt->address_strings[RPC_DISPLAY_PORT]);
        return xprt;
 
 out4: