add support for reporting the current portal (address/port) used by a connection, which is needed when doing iscsi redirection.
Signed-off-by: Or Gerlitz <ogerl...@voltaire.com> --- I followed the related flow in iscsi tcp, to support these two params, feedback is wellcome drivers/infiniband/ulp/iser/iscsi_iser.c | 32 ++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) Index: b/drivers/infiniband/ulp/iser/iscsi_iser.c =================================================================== --- a/drivers/infiniband/ulp/iser/iscsi_iser.c +++ b/drivers/infiniband/ulp/iser/iscsi_iser.c @@ -339,6 +339,7 @@ iscsi_iser_conn_bind(struct iscsi_cls_se struct iser_conn *ib_conn; struct iscsi_endpoint *ep; int error; + struct sockaddr_in *dst_in; error = iscsi_conn_bind(cls_session, cls_conn, is_leading); if (error) @@ -362,6 +363,9 @@ iscsi_iser_conn_bind(struct iscsi_cls_se iser_conn = conn->dd_data; ib_conn->iser_conn = iser_conn; iser_conn->ib_conn = ib_conn; + dst_in = (struct sockaddr_in *)&ib_conn->cma_id->route.addr.dst_addr; + sprintf(conn->portal_address, "%pI4", &dst_in->sin_addr.s_addr); + conn->portal_port = ntohs(dst_in->sin_port); iser_conn_get(ib_conn); /* ref iscsi/ib conn binding */ return 0; } @@ -507,6 +511,30 @@ iscsi_iser_set_param(struct iscsi_cls_co return 0; } +static int iscsi_iser_conn_get_param(struct iscsi_cls_conn *cls_conn, + enum iscsi_param param, char *buf) +{ + struct iscsi_conn *conn = cls_conn->dd_data; + int len; + + switch (param) { + case ISCSI_PARAM_CONN_PORT: + spin_lock_bh(&conn->session->lock); + len = sprintf(buf, "%hu\n", conn->portal_port); + spin_unlock_bh(&conn->session->lock); + break; + case ISCSI_PARAM_CONN_ADDRESS: + spin_lock_bh(&conn->session->lock); + len = sprintf(buf, "%s\n", conn->portal_address); + spin_unlock_bh(&conn->session->lock); + break; + default: + return iscsi_conn_get_param(cls_conn, param, buf); + } + + return len; +} + static void iscsi_iser_conn_get_stats(struct iscsi_cls_conn *cls_conn, struct iscsi_stats *stats) { @@ -637,6 +665,8 @@ static struct iscsi_transport iscsi_iser ISCSI_MAX_BURST | ISCSI_PDU_INORDER_EN | ISCSI_DATASEQ_INORDER_EN | + ISCSI_CONN_PORT | + ISCSI_CONN_ADDRESS | ISCSI_EXP_STATSN | ISCSI_PERSISTENT_PORT | ISCSI_PERSISTENT_ADDRESS | @@ -658,7 +688,7 @@ static struct iscsi_transport iscsi_iser .bind_conn = iscsi_iser_conn_bind, .destroy_conn = iscsi_iser_conn_destroy, .set_param = iscsi_iser_set_param, - .get_conn_param = iscsi_conn_get_param, + .get_conn_param = iscsi_iser_conn_get_param, .get_session_param = iscsi_session_get_param, .start_conn = iscsi_iser_conn_start, .stop_conn = iscsi_iser_conn_stop, -- You received this message because you are subscribed to the Google Groups "open-iscsi" group. To post to this group, send email to open-is...@googlegroups.com. To unsubscribe from this group, send email to open-iscsi+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/open-iscsi?hl=en.