iscsi-target: Fix discovery with INADDR_ANY and IN6ADDR_ANY_INIT
authorNicholas Bellinger <nab@linux-iscsi.org>
Tue, 17 Jan 2012 07:33:48 +0000 (23:33 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 13 Feb 2012 19:16:59 +0000 (11:16 -0800)
commit7b88c23d62bcaf794ebd97400869d00f00befcd6
tree569c0545764aa29500fa8fb495c34815f7a56afe
parent49f4afd3b15866b16b72691a6060fad041e8f2dc
iscsi-target: Fix discovery with INADDR_ANY and IN6ADDR_ANY_INIT

commit 2f9bc894c67dbacae5a6a9875818d2a18a918d18 upstream.

This patch addresses a bug with sendtargets discovery where INADDR_ANY (0.0.0.0)
+ IN6ADDR_ANY_INIT ([0:0:0:0:0:0:0:0]) network portals where incorrectly being
reported back to initiators instead of the address of the connecting interface.
To address this, save local socket ->getname() output during iscsi login setup,
and makes iscsit_build_sendtargets_response() return these TargetAddress keys
when INADDR_ANY or IN6ADDR_ANY_INIT portals are in use.

Reported-by: Dax Kelson <dkelson@gurulabs.com>
Reported-by: Andy Grover <agrover@redhat.com>
Cc: David S. Miller <davem@davemloft.net>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/target/iscsi/iscsi_target.c
drivers/target/iscsi/iscsi_target_core.h
drivers/target/iscsi/iscsi_target_login.c