iscsi_tcp: export port being used
This just has iscsi_tcp support ISCSI_PARAM_LOCAL_PORT which exports the local port being used by the iscsi connection. Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
49b552dedf
commit
4bfb8ebf4c
@ -726,13 +726,18 @@ static int iscsi_sw_tcp_conn_get_param(struct iscsi_cls_conn *cls_conn,
|
||||
switch(param) {
|
||||
case ISCSI_PARAM_CONN_PORT:
|
||||
case ISCSI_PARAM_CONN_ADDRESS:
|
||||
case ISCSI_PARAM_LOCAL_PORT:
|
||||
spin_lock_bh(&conn->session->frwd_lock);
|
||||
if (!tcp_sw_conn || !tcp_sw_conn->sock) {
|
||||
spin_unlock_bh(&conn->session->frwd_lock);
|
||||
return -ENOTCONN;
|
||||
}
|
||||
rc = kernel_getpeername(tcp_sw_conn->sock,
|
||||
(struct sockaddr *)&addr, &len);
|
||||
if (param == ISCSI_PARAM_LOCAL_PORT)
|
||||
rc = kernel_getsockname(tcp_sw_conn->sock,
|
||||
(struct sockaddr *)&addr, &len);
|
||||
else
|
||||
rc = kernel_getpeername(tcp_sw_conn->sock,
|
||||
(struct sockaddr *)&addr, &len);
|
||||
spin_unlock_bh(&conn->session->frwd_lock);
|
||||
if (rc)
|
||||
return rc;
|
||||
@ -895,6 +900,7 @@ static umode_t iscsi_sw_tcp_attr_is_visible(int param_type, int param)
|
||||
case ISCSI_PARAM_DATADGST_EN:
|
||||
case ISCSI_PARAM_CONN_ADDRESS:
|
||||
case ISCSI_PARAM_CONN_PORT:
|
||||
case ISCSI_PARAM_LOCAL_PORT:
|
||||
case ISCSI_PARAM_EXP_STATSN:
|
||||
case ISCSI_PARAM_PERSISTENT_ADDRESS:
|
||||
case ISCSI_PARAM_PERSISTENT_PORT:
|
||||
|
@ -3505,6 +3505,7 @@ int iscsi_conn_get_addr_param(struct sockaddr_storage *addr,
|
||||
len = sprintf(buf, "%pI6\n", &sin6->sin6_addr);
|
||||
break;
|
||||
case ISCSI_PARAM_CONN_PORT:
|
||||
case ISCSI_PARAM_LOCAL_PORT:
|
||||
if (sin)
|
||||
len = sprintf(buf, "%hu\n", be16_to_cpu(sin->sin_port));
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user