Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Mike Christie and committed by
Christoph Hellwig
4bfb8ebf 49b552de

+9 -2
+8 -2
drivers/scsi/iscsi_tcp.c
··· 726 726 switch(param) { 727 727 case ISCSI_PARAM_CONN_PORT: 728 728 case ISCSI_PARAM_CONN_ADDRESS: 729 + case ISCSI_PARAM_LOCAL_PORT: 729 730 spin_lock_bh(&conn->session->frwd_lock); 730 731 if (!tcp_sw_conn || !tcp_sw_conn->sock) { 731 732 spin_unlock_bh(&conn->session->frwd_lock); 732 733 return -ENOTCONN; 733 734 } 734 - rc = kernel_getpeername(tcp_sw_conn->sock, 735 - (struct sockaddr *)&addr, &len); 735 + if (param == ISCSI_PARAM_LOCAL_PORT) 736 + rc = kernel_getsockname(tcp_sw_conn->sock, 737 + (struct sockaddr *)&addr, &len); 738 + else 739 + rc = kernel_getpeername(tcp_sw_conn->sock, 740 + (struct sockaddr *)&addr, &len); 736 741 spin_unlock_bh(&conn->session->frwd_lock); 737 742 if (rc) 738 743 return rc; ··· 900 895 case ISCSI_PARAM_DATADGST_EN: 901 896 case ISCSI_PARAM_CONN_ADDRESS: 902 897 case ISCSI_PARAM_CONN_PORT: 898 + case ISCSI_PARAM_LOCAL_PORT: 903 899 case ISCSI_PARAM_EXP_STATSN: 904 900 case ISCSI_PARAM_PERSISTENT_ADDRESS: 905 901 case ISCSI_PARAM_PERSISTENT_PORT:
+1
drivers/scsi/libiscsi.c
··· 3505 3505 len = sprintf(buf, "%pI6\n", &sin6->sin6_addr); 3506 3506 break; 3507 3507 case ISCSI_PARAM_CONN_PORT: 3508 + case ISCSI_PARAM_LOCAL_PORT: 3508 3509 if (sin) 3509 3510 len = sprintf(buf, "%hu\n", be16_to_cpu(sin->sin_port)); 3510 3511 else