From 7f3172258729ffd6073907ff9745f27f553b799b Mon Sep 17 00:00:00 2001 From: Utkarsh Mani Tripathi Date: Tue, 26 Nov 2019 16:14:15 +0530 Subject: [PATCH] Listen on configured IP Signed-off-by: Utkarsh Mani Tripathi --- pkg/port/iscsit/iscsid.go | 33 ++++++++++++++++++++++++++++----- pkg/scsi/drivers.go | 1 + 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/pkg/port/iscsit/iscsid.go b/pkg/port/iscsit/iscsid.go index ffc14d4..24c0619 100644 --- a/pkg/port/iscsit/iscsid.go +++ b/pkg/port/iscsit/iscsid.go @@ -60,6 +60,7 @@ type ISCSITargetDriver struct { state uint8 OpCode int TargetStats scsi.Stats + clusterIP string } func init() { @@ -128,6 +129,10 @@ func (s *ISCSITargetDriver) NewTarget(tgtName string, configInfo *config.Config) return nil } +func (s *ISCSITargetDriver) SetClusterIP(ip string) { + s.clusterIP = ip +} + func (s *ISCSITargetDriver) RereadTargetLUNMap() { s.SCSI.RereadTargetLUNMap() } @@ -185,6 +190,7 @@ func (s *ISCSITargetDriver) Run() error { log.Error(err) os.Exit(1) } + s.mu.Lock() s.l = l s.mu.Unlock() @@ -197,6 +203,7 @@ func (s *ISCSITargetDriver) Run() error { if err, ok := err.(net.Error); ok { if !err.Temporary() { log.Warning("Closing connection with initiator...") + conn.Close() break } } @@ -463,11 +470,27 @@ func (s *ISCSITargetDriver) iscsiExecText(conn *iscsiConnection) error { log.Debugf("iscsi target: %v", name) //log.Debugf("iscsi target portals: %v", tgt.Portals) - result = append(result, util.KeyValue{"TargetName", name}) - for _, tpgt := range tgt.TPGTs { - for portal := range tpgt.Portals { - targetPort := fmt.Sprintf("%s,%d", portal, tpgt.TPGT) - result = append(result, util.KeyValue{"TargetAddress", targetPort}) + result = append(result, util.KeyValue{ + Key: "TargetName", + Value: name, + }) + if s.clusterIP == "" { + for _, tpgt := range tgt.TPGTs { + for portal := range tpgt.Portals { + targetPort := fmt.Sprintf("%s,%d", portal, tpgt.TPGT) + result = append(result, util.KeyValue{ + Key: "TargetAddress", + Value: targetPort, + }) + } + } + } else { + for _, tpgt := range tgt.TPGTs { + targetPort := fmt.Sprintf("%s,%d", s.clusterIP, tpgt.TPGT) + result = append(result, util.KeyValue{ + Key: "TargetAddress", + Value: targetPort, + }) } } } diff --git a/pkg/scsi/drivers.go b/pkg/scsi/drivers.go index 9c64498..4a3c2e1 100644 --- a/pkg/scsi/drivers.go +++ b/pkg/scsi/drivers.go @@ -30,6 +30,7 @@ type SCSITargetDriver interface { Close() error Resize(uint64) error Stats() Stats + SetClusterIP(string) } type Stats struct {