Hello community,

here is the log from the commit of package tgt.1042 for openSUSE:12.2:Update 
checked in at 2012-11-12 17:52:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:12.2:Update/tgt.1042 (Old)
 and      /work/SRC/openSUSE:12.2:Update/.tgt.1042.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "tgt.1042", Maintainer is ""

Changes:
--------
New Changes file:

--- /dev/null   2012-10-22 00:44:18.403455820 +0200
+++ /work/SRC/openSUSE:12.2:Update/.tgt.1042.new/tgt.changes    2012-11-12 
17:52:43.000000000 +0100
@@ -0,0 +1,79 @@
+-------------------------------------------------------------------
+Tue Oct 16 11:12:01 PDT 2012 - ldun...@suse.com
+
+- Add tgt-mgmt-fixed-m-system-o-delete-handling.patch: Fixes
+  shutdown hang, and removed use of PIDFILE in init script
+  (bnc#767438)
+
+-------------------------------------------------------------------
+Tue Jul 10 08:25:16 UTC 2012 - cfarr...@suse.com
+
+- license update: GPL-2.0
+  Most of the source code files carry a GPL-2.0 notice, not GPL-2.0+
+
+-------------------------------------------------------------------
+Thu Jun 14 09:51:09 CEST 2012 - vu...@opensuse.org
+
+- Remove "# pidfile: /var/run/tgtd.pid" from tgt.init, as it makes
+  the script hang on systemd-based systems. This is the same bug as
+  rh#797913, and the fix was used in Fedora. Apparently, there's no
+  such pid file written by tgtd.
+
+-------------------------------------------------------------------
+Mon Jun  4 14:39:47 CEST 2012 - h...@suse.de
+
+- Update to latest upstream release 1.0.23
+  * Improved SCSI emulation
+  * Various small fixes
+
+-------------------------------------------------------------------
+Mon Sep 21 11:02:59 CEST 2009 - dmuel...@suse.de
+
+- require perl-Config-General (bnc#474129)
+- add rc-symlink (bnc#474136)
+
+-------------------------------------------------------------------
+Thu Oct  9 13:53:39 CEST 2008 - h...@suse.de
+
+- Update to latest upstream release 0.9.0
+  * tgt-admin fixes
+  * add null backing store
+  * Improve iSER scheduling
+  * Various small fixes
+
+-------------------------------------------------------------------
+Mon Sep 15 08:20:24 CEST 2008 - h...@suse.de
+
+- Include fixes from upstream:
+  * Add support to update targets
+  * tgtadm fixes
+  * Add PREVENT ALLOW MEDIA REMOVAL to ssc
+  * Add MANAGEMENT PROTOCOL IN to ssc
+  * Update README
+- Fix rpmlint errors
+
+-------------------------------------------------------------------
+Fri Aug  8 15:01:22 CEST 2008 - h...@suse.de
+
+- Update to latest released version 20080805
+  * Include FCP backend
+  * Include FCoE backend
+  * Bugfixes
+
+-------------------------------------------------------------------
+Thu Aug  9 19:12:28 CEST 2007 - o...@suse.de
+
+- remove inclusion of linux/hash.h, include it directly
+
+-------------------------------------------------------------------
+Wed Apr  4 11:21:52 CEST 2007 - h...@suse.de
+
+- Added service definition for SUSEFirewall2 (#251679)
+
+-------------------------------------------------------------------
+Wed Apr  4 10:26:41 CEST 2007 - h...@suse.de
+
+- Initial version svn r849
+- Update to latest git version
+- Fixes for build on openSUSE 
+

New:
----
  tgt-1.0.28.tar.bz2
  tgt-fix-build
  tgt-git-update
  tgt-mgmt-fixed-m-system-o-delete-handling.patch
  tgt.changes
  tgt.init
  tgt.services
  tgt.spec

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ tgt.spec ++++++
#
# spec file for package tgt
#
# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via http://bugs.opensuse.org/
#


Name:           tgt
BuildRequires:  docbook-xsl-stylesheets
BuildRequires:  libaio-devel
BuildRequires:  libxslt
BuildRequires:  openssl-devel
BuildRequires:  perl-Config-General
Obsoletes:      iscsitarget
Requires:       perl-Config-General
Url:            http://stgt.berlios.de
PreReq:         %fillup_prereq %insserv_prereq
Version:        1.0.28
Release:        0
Summary:        Generic Linux target framework (tgt)
License:        GPL-2.0
Group:          System/Daemons
Source:         %{name}-%{version}.tar.bz2
Source1:        %{name}.init
Source3:        %{name}.services
Patch1:         %{name}-git-update
Patch11:        %{name}-fix-build
Patch12:        %{name}-mgmt-fixed-m-system-o-delete-handling.patch
BuildRoot:      %{_tmppath}/%{name}-%{version}-build

%description
Linux target framework (tgt) aims to simplify various SCSI target
driver (iSCSI, Fibre Channel, SRP, etc) creation and maintenance.

Tgt consists of kernel modules, user-space daemon, and user-space
tools. Some target drivers uses all of them and some use only
user-space daemon and tools (i.e. they completely runs in user space).



Authors:
--------
    FUJITA Tomonori <fujita.tomon...@lab.ntt.co.jp>
    Mike Christie <micha...@cs.wisc.edu>

%prep
%setup -n %{name}-%{version}
%patch1 -p1
%patch11 -p1
%patch12 -p1

%build
%ifarch ppc ppc64
%define backends ISCSI=1 FCP=1 FCOE=1 IBMVIO=1
%else
%define backends ISCSI=1 FCP=1 FCOE=1 
%endif
%{__make} OPTFLAGS="${RPM_OPT_FLAGS}" %{backends}

%install
%{__make} DESTDIR=${RPM_BUILD_ROOT} docdir=%_docdir/%{name} install
install -vD -m 755 %{S:1} ${RPM_BUILD_ROOT}/etc/init.d/tgtd
ln -sf /etc/init.d/tgtd ${RPM_BUILD_ROOT}/usr/sbin/rctgtd
install -vD %{S:3} 
${RPM_BUILD_ROOT}/etc/sysconfig/SuSEfirewall2.d/services/iscsitarget

%clean
rm -rf ${RPM_BUILD_ROOT}
rm -f filelist

%post
%{fillup_and_insserv tgtd}

%preun
%stop_on_removal

%postun
%{insserv_cleanup}

%files
%defattr(-,root,root)
/usr/sbin/*
/etc/init.d/tgtd
%dir /etc/tgt
%dir /etc/tgt/examples
%config %attr(0644,root,root) /etc/tgt/targets.conf
%config %attr(0644,root,root) /etc/tgt/examples/*
%config %attr(0644,root,root) 
/etc/sysconfig/SuSEfirewall2.d/services/iscsitarget
%doc README doc/README.iscsi doc/README.iser doc/README.lu_configuration
%doc doc/README.mmc doc/README.passthrough doc/README.sbcjukebox doc/README.ssc
%doc %{_mandir}/man8/*

%changelog
++++++ tgt-fix-build ++++++
diff --git a/usr/Makefile b/usr/Makefile
index 64cb58c..deb7e39 100644
--- a/usr/Makefile
+++ b/usr/Makefile
@@ -28,12 +28,15 @@ INCLUDES += -I.
 
 CFLAGS += -D_GNU_SOURCE
 CFLAGS += $(INCLUDES)
+ifneq ($(OPTFLAGS),)
+CFLAGS += $(OPTFLAGS)
 ifneq ($(DEBUG),)
 CFLAGS += -g -O0 -ggdb -rdynamic
 else
 CFLAGS += -g -O2 -fno-strict-aliasing
 endif
 CFLAGS += -Wall -Wstrict-prototypes -fPIC
+endif
 CFLAGS += -DTGT_VERSION=\"$(VERSION)$(EXTRAVERSION)\"
 
 LIBS += -lpthread
++++++ tgt-git-update ++++++
diff --git a/usr/sbc.c b/usr/sbc.c
index cf2b609..248a547 100644
--- a/usr/sbc.c
+++ b/usr/sbc.c
@@ -23,6 +23,9 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA
  */
+#define _FILE_OFFSET_BITS 64
+#define __USE_GNU
+
 #include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -30,6 +33,7 @@
 #include <stdint.h>
 #include <unistd.h>
 #include <linux/fs.h>
+#include <sys/types.h>
 
 #include "list.h"
 #include "util.h"
@@ -45,6 +49,23 @@
 
 static unsigned int blk_shift = DEFAULT_BLK_SHIFT;
 
+static off_t find_next_data(struct scsi_lu *dev, off_t offset)
+{
+#ifdef SEEK_DATA
+       return lseek64(dev->fd, offset, SEEK_DATA);
+#else
+       return offset;
+#endif
+}
+static off_t find_next_hole(struct scsi_lu *dev, off_t offset)
+{
+#ifdef SEEK_HOLE
+       return lseek64(dev->fd, offset, SEEK_HOLE);
+#else
+       return dev->size;
+#endif
+}
+
 static int sbc_mode_page_update(struct scsi_cmd *cmd, uint8_t *data, int 
*changed)
 {
        uint8_t pcode = data[0] & 0x3f;
@@ -281,10 +302,18 @@ static int sbc_rw(int host_no, struct scsi_cmd *cmd)
 
        /* Verify that we are not doing i/o beyond
           the end-of-lun */
-       if (tl && (lba + tl > lu->size)) {
-               key = ILLEGAL_REQUEST;
-               asc = ASC_LBA_OUT_OF_RANGE;
-               goto sense;
+       if (tl) {
+               if (lba + tl > lu->size) {
+                       key = ILLEGAL_REQUEST;
+                       asc = ASC_LBA_OUT_OF_RANGE;
+                       goto sense;
+               }
+       } else {
+               if (lba >= lu->size) {
+                       key = ILLEGAL_REQUEST;
+                       asc = ASC_LBA_OUT_OF_RANGE;
+                       goto sense;
+               }
        }
 
        cmd->offset = lba;
@@ -421,7 +450,7 @@ sense:
        return SAM_STAT_CHECK_CONDITION;
 }
 
-static int sbc_service_action(int host_no, struct scsi_cmd *cmd)
+static int sbc_readcapacity16(int host_no, struct scsi_cmd *cmd)
 {
        uint32_t *data;
        unsigned int bshift;
@@ -437,9 +466,6 @@ static int sbc_service_action(int host_no, struct scsi_cmd 
*cmd)
                goto sense;
        }
 
-       if (cmd->scb[1] != SAI_READ_CAPACITY_16)
-               goto sense;
-
        if (scsi_get_in_length(cmd) < 12)
                goto overflow;
 
@@ -468,6 +494,106 @@ sense:
        return SAM_STAT_CHECK_CONDITION;
 }
 
+static int sbc_getlbastatus(int host_no, struct scsi_cmd *cmd)
+{
+       int len = 32;
+       uint64_t offset;
+       uint32_t pdl;
+       int type;
+       unsigned char *buf;
+       unsigned char key = ILLEGAL_REQUEST;
+       uint16_t asc = ASC_INVALID_OP_CODE;
+
+       if (cmd->dev->attrs.removable && !cmd->dev->attrs.online) {
+               key = NOT_READY;
+               asc = ASC_MEDIUM_NOT_PRESENT;
+               goto sense;
+       }
+
+       if (scsi_get_in_length(cmd) < 24)
+               goto overflow;
+
+       len = scsi_get_in_length(cmd);
+       buf = scsi_get_in_buffer(cmd);
+       memset(buf, 0, len);
+
+       offset = get_unaligned_be64(&cmd->scb[2]) << cmd->dev->blk_shift;
+       if (offset >= cmd->dev->size) {
+               key = ILLEGAL_REQUEST;
+               asc = ASC_LBA_OUT_OF_RANGE;
+               goto sense;
+       }
+
+       pdl = 4;
+       put_unaligned_be32(pdl, &buf[0]);
+
+       type = 0;
+       while (len >= 4 + pdl + 16) {
+               off_t next_offset;
+
+               put_unaligned_be32(pdl + 16, &buf[0]);
+
+               if (offset >= cmd->dev->size)
+                       break;
+
+               next_offset = (type == 0) ?
+                       find_next_hole(cmd->dev, offset) :
+                       find_next_data(cmd->dev, offset);
+               if (next_offset == offset) {
+                       type = 1 - type;
+                       continue;
+               }
+
+               put_unaligned_be64(offset >> cmd->dev->blk_shift,
+                                  &buf[4 + pdl +  0]);
+               put_unaligned_be32((next_offset - offset)
+                                  >> cmd->dev->blk_shift,
+                                  &buf[4 + pdl +  8]);
+               buf[4 + pdl + 12] = type;
+
+               pdl += 16;
+               type = 1 - type;
+               offset = next_offset;
+       }
+       len = 4 + pdl;
+
+overflow:
+       scsi_set_in_resid_by_actual(cmd, len);
+       return SAM_STAT_GOOD;
+
+sense:
+       sense_data_build(cmd, key, asc);
+       return SAM_STAT_CHECK_CONDITION;
+}
+
+struct service_action sbc_service_actions[] = {
+       {SAI_READ_CAPACITY_16, sbc_readcapacity16},
+       {SAI_GET_LBA_STATUS,   sbc_getlbastatus},
+       {0, NULL}
+};
+
+
+static int sbc_service_action(int host_no, struct scsi_cmd *cmd)
+{
+       uint8_t action;
+       unsigned char op = cmd->scb[0];
+       struct service_action *service_action, *actions;
+
+       action = cmd->scb[1] & 0x1f;
+       actions = cmd->dev->dev_type_template.ops[op].service_actions;
+
+       service_action = find_service_action(actions, action);
+
+       if (!service_action) {
+               scsi_set_in_resid_by_actual(cmd, 0);
+               sense_data_build(cmd, ILLEGAL_REQUEST,
+                               ASC_INVALID_FIELD_IN_CDB);
+               return SAM_STAT_CHECK_CONDITION;
+       }
+
+       return service_action->cmd_perform(host_no, cmd);
+}
+
 static int sbc_sync_cache(int host_no, struct scsi_cmd *cmd)
 {
        int ret;
@@ -711,7 +837,7 @@ static struct device_type_template sbc_template = {
                {spc_illegal_op,},
                {spc_illegal_op,},
                {spc_illegal_op,},
-               {sbc_service_action,},
+               {sbc_service_action, sbc_service_actions,},
                {spc_illegal_op,},
 
                /* 0xA0 */
diff --git a/usr/scsi.h b/usr/scsi.h
index 0a02c36..2b994f9 100644
--- a/usr/scsi.h
+++ b/usr/scsi.h
@@ -80,6 +80,7 @@
 #define WRITE_SAME_16         0x93
 #define SERVICE_ACTION_IN     0x9e
 #define        SAI_READ_CAPACITY_16  0x10
+#define        SAI_GET_LBA_STATUS    0x12
 #define REPORT_LUNS           0xa0
 #define MOVE_MEDIUM           0xa5
 #define EXCHANGE_MEDIUM       0xa6
diff --git a/usr/spc.c b/usr/spc.c
index a7f9a36..117c9f3 100644
--- a/usr/spc.c
+++ b/usr/spc.c
@@ -794,7 +794,7 @@ struct service_action maint_in_service_actions[] = {
        {0, NULL}
 };
 
-static struct service_action *
+struct service_action *
 find_service_action(struct service_action *service_action, uint32_t action)
 {
        while (service_action->cmd_perform) {
diff --git a/usr/tgtd.c b/usr/tgtd.c
index 4ec6f23..cba2b66 100644
--- a/usr/tgtd.c
+++ b/usr/tgtd.c
@@ -487,6 +487,7 @@ int main(int argc, char **argv)
 {
        struct sigaction sa_old;
        struct sigaction sa_new;
+       char *spare_args;
        int err, ch, longindex, nr_lld = 0;
        int is_daemon = 1, is_debug = 0;
        int ret;
@@ -549,7 +550,9 @@ int main(int argc, char **argv)
                exit(1);
        }
 
-       nr_lld = lld_init(argv[optind]);
+       spare_args = optind < argc ? argv[optind] : NULL;
+
+       nr_lld = lld_init(spare_args);
        if (!nr_lld) {
                fprintf(stderr, "No available low level driver!\n");
                exit(1);
diff --git a/usr/tgtd.h b/usr/tgtd.h
index b303e21..aa9b9d5 100644
--- a/usr/tgtd.h
+++ b/usr/tgtd.h
@@ -353,4 +353,8 @@ int call_program(const char *cmd,
 
 void update_lbppbe(struct scsi_lu *lu, int blksize);
 
+struct service_action *
+find_service_action(struct service_action *service_action,
+                   uint32_t action);
+
 #endif
++++++ tgt-mgmt-fixed-m-system-o-delete-handling.patch ++++++
>From 0b88336c4b188f48e6bd2e8c94e0467dc805cc38 Mon Sep 17 00:00:00 2001
From: Roi Dayan <r...@mellanox.com>
Date: Thu, 28 Jun 2012 19:56:04 +0300
Subject: mgmt: fixed -m system -o delete handling
Git-commit: 0b88336c4b188f48e6bd2e8c94e0467dc805cc38
Patch-mainline: v1.0.29

system_active was reset only in case when mgmt response was carrying data.
In case of deleting system, response code was returned in err field of the 
header
therefore system was not shut down.

Signed-off-by: Alexander Nezhinsky <alexand...@mellanox.com>
Signed-off-by: Roi Dayan <r...@mellanox.com>
Signed-off-by: FUJITA Tomonori <fujita.tomon...@lab.ntt.co.jp>
Acked-by: Lee Duncan <ldun...@suse.com>
---
 usr/mgmt.c |    9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/usr/mgmt.c b/usr/mgmt.c
index ef1b265..56f89bb 100644
--- a/usr/mgmt.c
+++ b/usr/mgmt.c
@@ -585,13 +585,8 @@ static void mtask_recv_send_handler(int fd, int events, 
void *data)
                err = concat_write(&mtask->rsp_concat, fd, mtask->done);
                if (err >= 0) {
                        mtask->done += err;
-                       if (mtask->done == (rsp->len - sizeof(*rsp))) {
-                               if (req->mode == MODE_SYSTEM &&
-                                   req->op == OP_DELETE &&
-                                   !rsp->err)
-                                       system_active = 0;
+                       if (mtask->done == (rsp->len - sizeof(*rsp)))
                                goto out;
-                       }
                } else
                        if (errno != EAGAIN)
                                goto out;
@@ -603,6 +598,8 @@ static void mtask_recv_send_handler(int fd, int events, 
void *data)
 
        return;
 out:
+       if (req->mode == MODE_SYSTEM && req->op == OP_DELETE && !rsp->err)
+               system_active = 0;
        tgt_event_del(fd);
        close(fd);
        mtask_free(mtask);

++++++ tgt.init ++++++
#!/bin/sh
#
# /etc/init.d/tgtd
#
### BEGIN INIT INFO
# Provides:          tgtd
# Required-Start:    $remote_fs $network
# Should-Start:
# Required-Stop:     $remote_fs $network     
# Should-Stop:
# Default-Start:     3 5
# Default-Stop:      
# Short-Description: generic storage target daemon
# Description:       Starts and stops the generic storage target subsystem
### END INIT INFO

#
#

DAEMON=/usr/sbin/tgtd
TGTD_CONFIG=/etc/tgt/targets.conf

# Source LSB init functions
. /etc/rc.status

rc_reset

PATH=/sbin:/bin:/usr/sbin:/usr/bin

start()
{
        echo "Starting target framework daemon"
        # Start tgtd first.
        tgtd &>/dev/null
        RETVAL=$?
        if [ "$RETVAL" -ne 0 ] ; then
            rc_failed -v
        else
        # Put tgtd into "offline" state until all the targets are configured.
        # We don't want initiators to (re)connect and fail the connection
            # if it's not ready.
            tgtadm --op update --mode sys --name State -v offline
            # Configure the targets.
            tgt-admin -e -c $TGTD_CONFIG
            # Put tgtd into "ready" state.
            tgtadm --op update --mode sys --name State -v ready
            rc_failed 0
        fi
        rc_status -v
}

stop()
{
        if [ "$RUNLEVEL" == 0 -o "$RUNLEVEL" == 6 ] ; then
            forcedstop
        fi
        echo "Stopping target framework daemon"
        # Remove all targets. It only removes targets which are not in use.
        tgt-admin --update ALL -c /dev/null &>/dev/null
        # tgtd will exit if all targets were removed
        tgtadm --op delete --mode system &>/dev/null
        RETVAL=$?
        if [ "$RETVAL" -eq 107 ] ; then
            rc_failed 7
            [ "$TASK" != "restart" ] && exit 1
        elif [ "$RETVAL" -ne 0 ] ; then
            echo -n "(Some initiators are still connected)"
            rc_failed 1
        fi
        rc_status -v
}

forcedstop()
{
        # NOTE: Forced shutdown of the iscsi target may cause data corruption
        # for initiators that are connected.
        echo "Force-stopping target framework daemon"
        # Offline everything first. May be needed if we're rebooting, but
        # expect the initiators to reconnect cleanly when we boot again
        # (i.e. we don't want them to reconnect to a tgtd which is still
        # working, but the target is gone).
        tgtadm --op update --mode sys --name State -v offline &>/dev/null
        RETVAL=$?
        if [ "$RETVAL" -eq 107 ] ; then
            rc_failed 7
            [ "$TASK" != "restart" ] && exit 1
        else
            tgt-admin --offline ALL
            # Remove all targets, even if they are still in use.
            tgt-admin --update ALL -c /dev/null -f
            # It will shut down tgtd only after all targets were removed.
            tgtadm --op delete --mode system
            RETVAL=$?
            if [ "$RETVAL" -ne 0 ] ; then
                rc_failed 1
            fi
        fi
}

reload()
{
        echo "Updating target framework daemon configuration"
        # Update configuration for targets. Only targets which
        # are not in use will be updated.
        tgt-admin --update ALL -c $TGTD_CONFIG &>/dev/null
        RETVAL=$?
        if [ "$RETVAL" -eq 107 ] ; then
            rc_failed 7
        fi
}

forcedreload()
{
        echo "Force-updating target framework daemon configuration"
        # Update configuration for targets, even those in use.
        tgt-admin --update ALL -f -c $TGTD_CONFIG &>/dev/null
        RETVAL=$?
        if [ "$RETVAL" -eq 107 ] ; then
            rc_failed 7
        fi
}

case "$1" in
  start)
        echo -n "Starting SCSI target service: "
        start
        rc_status -v
        ;;
  stop)
        echo -n "Stopping SCSI target service: "
        stop
        if [ $RETVAL != "0" ]; then
            rc_failed
        else
            modprobe -r scsi_tgt 2>/dev/null
            modprobe -r crc32c 2>/dev/null
            rc_failed 0
        fi
        rc_status -v
        ;;
  forcedstop)
        forcedstop
        rc_status -v
        ;;
  forcereload)
        forcedreload
        rc_status -v
        ;;
  restart|reload)
        TASK=$1
        stop
        RETVAL=$?
        if [ $RETVAL -eq 0 ] ; then
            start
        fi
        rc_status -v
        ;;
  status)
        echo -n "Checking for SCSI target service"
        checkproc $DAEMON
        rc_status -v
        ;;
  *)
        echo $"Usage: $0 
{start|stop|restart|reload|forcedreload|forcedstop|status}"
        exit 1
esac
rc_exit
++++++ tgt.services ++++++
 ## Name: iSCSI Target Daemon
 ## Description: Opens ports for iSCSI Target Daemon with broadcast allowed.
 
 # space separated list of allowed TCP ports
 TCP="iscsi-target"
 
 # space separated list of allowed UDP ports
 UDP="iscsi-target"
 
 # space separated list of allowed RPC services
 RPC=""
 
 # space separated list of allowed IP protocols
 IP=""
 
 # space separated list of allowed UDP broadcast ports
 BROADCAST="iscsi-target"

-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to